@boostxyz/cli 1.3.3 → 1.3.4

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 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),y=require("../utils-CQC0lDOX.cjs"),l0="hh-sol-artifact-1",m0="ContractAction",T0="contracts/actions/ContractAction.sol",v0=[{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"}],w0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",M0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",I0={},h0={},G={_format:l0,contractName:m0,sourceName:T0,abi:v0,bytecode:w0,deployedBytecode:M0,linkReferences:I0,deployedLinkReferences:h0},g0="hh-sol-artifact-1",A0="ERC721MintAction",O0="contracts/actions/ERC721MintAction.sol",R0=[{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:"nonpayable",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"}],_0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516116026100c85f395f61054001526116025ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",x0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",C0={},z0={},P={_format:g0,contractName:A0,sourceName:O0,abi:R0,bytecode:_0,deployedBytecode:x0,linkReferences:C0,deployedLinkReferences:z0},N0="hh-sol-artifact-1",E0="EventAction",$0="contracts/actions/EventAction.sol",k0=[{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:[{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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"}],L0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805161231a6100c85f395f61034a015261231a5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212207809c87bdac146a35d9ff3c919aa73837ebf98c0870b451517ab651ad7b4cf0964736f6c634300081a0033",H0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212207809c87bdac146a35d9ff3c919aa73837ebf98c0870b451517ab651ad7b4cf0964736f6c634300081a0033",B0={},D0={},Z={_format:N0,contractName:E0,sourceName:$0,abi:k0,bytecode:L0,deployedBytecode:H0,linkReferences:B0,deployedLinkReferences:D0},S0="hh-sol-artifact-1",V0="SimpleAllowList",q0="contracts/allowlists/SimpleAllowList.sol",F0=[{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"}],U0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",G0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",P0={},Z0={},W={_format:S0,contractName:V0,sourceName:q0,abi:F0,bytecode:U0,deployedBytecode:G0,linkReferences:P0,deployedLinkReferences:Z0},W0="hh-sol-artifact-1",j0="SimpleDenyList",K0="contracts/allowlists/SimpleDenyList.sol",Q0=[{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"}],Y0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",J0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",X0={},ff={},j={_format:W0,contractName:j0,sourceName:K0,abi:Q0,bytecode:Y0,deployedBytecode:J0,linkReferences:X0,deployedLinkReferences:ff},bf="hh-sol-artifact-1",ef="ManagedBudget",af="contracts/budgets/ManagedBudget.sol",df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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"}],tf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",cf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",nf={},sf={},K={_format:bf,contractName:ef,sourceName:af,abi:df,bytecode:tf,deployedBytecode:cf,linkReferences:nf,deployedLinkReferences:sf},pf="hh-sol-artifact-1",yf="ManagedBudgetWithFees",rf="contracts/budgets/ManagedBudgetWithFees.sol",uf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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:"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"}],of="0x6080604052348015600e575f80fd5b50601b602b60201b60201c565b6027602b60201b60201c565b60bc565b5f6038609360201b60201c565b90508054600181161560515763f92ee8a95f526004601cfd5b8160c01c808260011c14608e578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b614ba6806100c95f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",lf="0x60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",mf={},Tf={},Q={_format:pf,contractName:yf,sourceName:rf,abi:uf,bytecode:of,deployedBytecode:lf,linkReferences:mf,deployedLinkReferences:Tf},vf="hh-sol-artifact-1",wf="VestingBudget",Mf="contracts/budgets/VestingBudget.sol",If=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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"}],hf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",gf="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",Af={},Of={},Y={_format:vf,contractName:wf,sourceName:Mf,abi:If,bytecode:hf,deployedBytecode:gf,linkReferences:Af,deployedLinkReferences:Of},Rf="hh-sol-artifact-1",_f="AllowListIncentive",xf="contracts/incentives/AllowListIncentive.sol",Cf=[{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"}],zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61180b806100bd5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Nf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Ef={},$f={},J={_format:Rf,contractName:_f,sourceName:xf,abi:Cf,bytecode:zf,deployedBytecode:Nf,linkReferences:Ef,deployedLinkReferences:$f},kf="hh-sol-artifact-1",Lf="CGDAIncentive",Hf="contracts/incentives/CGDAIncentive.sol",Bf=[{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:"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"}],Df="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6127e1806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a38565b610777565b6040516102249190611a7d565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aae565b60405180910390f35b610271600480360381019061026c9190611af1565b610899565b005b61028d60048036038101906102889190611b76565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b76565b6108bc565b6040516102c29190611a7d565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611aae565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bc3565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bdc565b61094f565b60405161035c9190611aae565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c16565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611ce5565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611db8565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611db8565b610cce565b604051610413929190611e03565b60405180910390f35b61043660048036038101906104319190611b76565b610e20565b005b348015610443575f80fd5b5061045e60048036038101906104599190611db8565b610e36565b60405161046b9190611e9a565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b76565b610f06565b6040516104a79190611a7d565b60405180910390f35b6104b8610f1d565b005b6104c2610f56565b005b3480156104cf575f80fd5b506104d8610f69565b6040516104e59190611aae565b60405180910390f35b3480156104f9575f80fd5b50610502610f6e565b6040516105129493929190611eba565b60405180910390f35b348015610526575f80fd5b5061052f610f8b565b60405161053c9190611c16565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611efd565b610fb3565b6040516105789190611a7d565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611faf565b61119e565b005b3480156105b4575f80fd5b506105bd611254565b6040516105ca9190611aae565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bdc565b61125a565b6040516106069190611a7d565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611efd565b611277565b6040516106429190611a7d565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611faf565b61128a565b005b34801561067e575f80fd5b50610687611340565b6040516106949190611aae565b60405180910390f35b3480156106a8575f80fd5b506106b1611346565b6040516106be9190611aae565b60405180910390f35b6106e160048036038101906106dc9190611bdc565b61134b565b005b6106fd60048036038101906106f89190611bdc565b611389565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bdc565b6113b2565b6040516107329190611a7d565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bdc565b611405565b60405161076e9190611aae565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e88261141e565b5b9050919050565b5f80600280015442610802919061205a565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b90505f610e1060026001015484610866919061208d565b61087091906120fb565b600260030154610880919061212b565b905081811161088f5780610891565b815b935050505090565b6108a333826114ca565b50565b6108ae6114d9565b6108b88282611510565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611520565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109988161152a565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f761215e565b5b9050602002016020810190610a0d91906121b5565b90506001151581151503610a5257610a4d878784818110610a3157610a3061215e565b5b9050602002016020810190610a469190611bdc565b6001611510565b610a85565b610a84878784818110610a6857610a6761215e565b5b9050602002016020810190610a7d9190611bdc565b60016114ca565b5b5080806001019150506109d9565b505050505050565b5f610aa461155f565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae791906122e9565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6393929190612314565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c8733611588565b610c9233600161165e565b50508015610cc9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cdb8161169f565b5f8585810190610ceb9190612462565b90505f8160200151806020019051810190610d0691906124bd565b9050610d57825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dcb9392919061254d565b604051602081830303815290604052604051610de79190611e9a565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e286114d9565b610e3282826114ca565b5050565b60605f8383810190610e4891906122e9565b9050604051806080016040528060016002811115610e6957610e68612589565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ecc91906125df565b604051602081830303815290604052815250604051602001610eee91906126f5565b60405160208183030381529060405291505092915050565b5f8082610f128561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f5e6114d9565b610f675f61170f565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fbc6114d9565b610fc5846117d5565b61100657836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ffd9190612738565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f81548092919061106c90612764565b91905055505f61107a6107f0565b905042600280018190555060025f0154811161109a5760025f01546110ab565b60025f0154816110aa919061205a565b5b600260030181905550611100858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116c69092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116e9392919061254d565b60405160208183030381529060405260405161118a9190611e9a565b60405180910390a260019150509392505050565b60026111a98161152a565b8282905085859050146111e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124c5761123f86868381811061120b5761120a61215e565b5b90506020020160208101906112209190611bdc565b8585848181106112335761123261215e565b5b90506020020135611510565b80806001019150506111ea565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f611281846117d5565b90509392505050565b60026112958161152a565b8282905085859050146112d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156113385761132b8686838181106112f7576112f661215e565b5b905060200201602081019061130c9190611bdc565b85858481811061131f5761131e61215e565b5b905060200201356114ca565b80806001019150506112d6565b505050505050565b60085481565b600181565b6113536114d9565b63389a75e1600c52805f526020600c20805442111561137957636f5e88185f526004601cfd5b5f8155506113868161170f565b50565b6113916114d9565b8060601b6113a657637448fbae5f526004601cfd5b6113af8161170f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113d2610f8b565b73ffffffffffffffffffffffffffffffffffffffff1614806113fe57506113fd826002600117610f06565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611490575061148f82611894565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114d582825f61190d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461150e576382b429005f526004601cfd5b565b61151c8282600161190d565b5050565b5f6202a300905090565b638b78c6d81954331461155c57638b78c6d8600c52335f52806020600c20541661155b576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611590611965565b15611608577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061165b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611706576390b8ec185f526004601cfd5b5f603452505050565b611717611965565b1561177c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117df6107f0565b90505f811180156118395750806118363060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b10155b801561188c575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611906575061190582611969565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a17816119e3565b8114611a21575f80fd5b50565b5f81359050611a3281611a0e565b92915050565b5f60208284031215611a4d57611a4c6119db565b5b5f611a5a84828501611a24565b91505092915050565b5f8115159050919050565b611a7781611a63565b82525050565b5f602082019050611a905f830184611a6e565b92915050565b5f819050919050565b611aa881611a96565b82525050565b5f602082019050611ac15f830184611a9f565b92915050565b611ad081611a96565b8114611ada575f80fd5b50565b5f81359050611aeb81611ac7565b92915050565b5f60208284031215611b0657611b056119db565b5b5f611b1384828501611add565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4582611b1c565b9050919050565b611b5581611b3b565b8114611b5f575f80fd5b50565b5f81359050611b7081611b4c565b92915050565b5f8060408385031215611b8c57611b8b6119db565b5b5f611b9985828601611b62565b9250506020611baa85828601611add565b9150509250929050565b611bbd816119e3565b82525050565b5f602082019050611bd65f830184611bb4565b92915050565b5f60208284031215611bf157611bf06119db565b5b5f611bfe84828501611b62565b91505092915050565b611c1081611b3b565b82525050565b5f602082019050611c295f830184611c07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c5057611c4f611c2f565b5b8235905067ffffffffffffffff811115611c6d57611c6c611c33565b5b602083019150836020820283011115611c8957611c88611c37565b5b9250929050565b5f8083601f840112611ca557611ca4611c2f565b5b8235905067ffffffffffffffff811115611cc257611cc1611c33565b5b602083019150836020820283011115611cde57611cdd611c37565b5b9250929050565b5f805f8060408587031215611cfd57611cfc6119db565b5b5f85013567ffffffffffffffff811115611d1a57611d196119df565b5b611d2687828801611c3b565b9450945050602085013567ffffffffffffffff811115611d4957611d486119df565b5b611d5587828801611c90565b925092505092959194509250565b5f8083601f840112611d7857611d77611c2f565b5b8235905067ffffffffffffffff811115611d9557611d94611c33565b5b602083019150836001820283011115611db157611db0611c37565b5b9250929050565b5f8060208385031215611dce57611dcd6119db565b5b5f83013567ffffffffffffffff811115611deb57611dea6119df565b5b611df785828601611d63565b92509250509250929050565b5f604082019050611e165f830185611a9f565b611e236020830184611c07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e6c82611e2a565b611e768185611e34565b9350611e86818560208601611e44565b611e8f81611e52565b840191505092915050565b5f6020820190508181035f830152611eb28184611e62565b905092915050565b5f608082019050611ecd5f830187611a9f565b611eda6020830186611a9f565b611ee76040830185611a9f565b611ef46060830184611a9f565b95945050505050565b5f805f60408486031215611f1457611f136119db565b5b5f611f2186828701611b62565b935050602084013567ffffffffffffffff811115611f4257611f416119df565b5b611f4e86828701611d63565b92509250509250925092565b5f8083601f840112611f6f57611f6e611c2f565b5b8235905067ffffffffffffffff811115611f8c57611f8b611c33565b5b602083019150836020820283011115611fa857611fa7611c37565b5b9250929050565b5f805f8060408587031215611fc757611fc66119db565b5b5f85013567ffffffffffffffff811115611fe457611fe36119df565b5b611ff087828801611c3b565b9450945050602085013567ffffffffffffffff811115612013576120126119df565b5b61201f87828801611f5a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61206482611a96565b915061206f83611a96565b92508282039050818111156120875761208661202d565b5b92915050565b5f61209782611a96565b91506120a283611a96565b92508282026120b081611a96565b915082820484148315176120c7576120c661202d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61210582611a96565b915061211083611a96565b9250826121205761211f6120ce565b5b828204905092915050565b5f61213582611a96565b915061214083611a96565b92508282019050808211156121585761215761202d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61219481611a63565b811461219e575f80fd5b50565b5f813590506121af8161218b565b92915050565b5f602082840312156121ca576121c96119db565b5b5f6121d7848285016121a1565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61221a82611e52565b810181811067ffffffffffffffff82111715612239576122386121e4565b5b80604052505050565b5f61224b6119d2565b90506122578282612211565b919050565b5f80fd5b5f60a08284031215612275576122746121e0565b5b61227f60a0612242565b90505f61228e84828501611b62565b5f8301525060206122a184828501611add565b60208301525060406122b584828501611add565b60408301525060606122c984828501611add565b60608301525060806122dd84828501611add565b60808301525092915050565b5f60a082840312156122fe576122fd6119db565b5b5f61230b84828501612260565b91505092915050565b5f6060820190506123275f830186611c07565b6123346020830185611a9f565b6123416040830184611a9f565b949350505050565b5f80fd5b5f67ffffffffffffffff821115612367576123666121e4565b5b61237082611e52565b9050602081019050919050565b828183375f83830152505050565b5f61239d6123988461234d565b612242565b9050828152602081018484840111156123b9576123b8612349565b5b6123c484828561237d565b509392505050565b5f82601f8301126123e0576123df611c2f565b5b81356123f084826020860161238b565b91505092915050565b5f6040828403121561240e5761240d6121e0565b5b6124186040612242565b90505f61242784828501611b62565b5f83015250602082013567ffffffffffffffff81111561244a5761244961225c565b5b612456848285016123cc565b60208301525092915050565b5f60208284031215612477576124766119db565b5b5f82013567ffffffffffffffff811115612494576124936119df565b5b6124a0848285016123f9565b91505092915050565b5f815190506124b781611ac7565b92915050565b5f602082840312156124d2576124d16119db565b5b5f6124df848285016124a9565b91505092915050565b5f8160601b9050919050565b5f6124fe826124e8565b9050919050565b5f61250f826124f4565b9050919050565b61252761252282611b3b565b612505565b82525050565b5f819050919050565b61254761254282611a96565b61252d565b82525050565b5f6125588286612516565b6014820191506125688285612516565b6014820191506125788284612536565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125bf81611a96565b82525050565b602082015f8201516125d95f8501826125b6565b50505050565b5f6020820190506125f25f8301846125c5565b92915050565b6003811061260957612608612589565b5b50565b5f819050612619826125f8565b919050565b5f6126288261260c565b9050919050565b6126388161261e565b82525050565b61264781611b3b565b82525050565b5f82825260208201905092915050565b5f61266782611e2a565b612671818561264d565b9350612681818560208601611e44565b61268a81611e52565b840191505092915050565b5f608083015f8301516126aa5f86018261262f565b5060208301516126bd602086018261263e565b5060408301516126d0604086018261263e565b50606083015184820360608601526126e8828261265d565b9150508091505092915050565b5f6020820190508181035f83015261270d8184612695565b905092915050565b50565b5f6127235f83611e34565b915061272e82612715565b5f82019050919050565b5f60408201905061274b5f830184611c07565b818103602083015261275c81612718565b905092915050565b5f61276e82611a96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127a05761279f61202d565b5b60018201905091905056fea264697066735822122032a0f80ce305faf6ce99031f2dace67ca68969c5c50f184662e2f869aaaa447964736f6c634300081a0033",Sf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a38565b610777565b6040516102249190611a7d565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aae565b60405180910390f35b610271600480360381019061026c9190611af1565b610899565b005b61028d60048036038101906102889190611b76565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b76565b6108bc565b6040516102c29190611a7d565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611aae565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bc3565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bdc565b61094f565b60405161035c9190611aae565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c16565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611ce5565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611db8565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611db8565b610cce565b604051610413929190611e03565b60405180910390f35b61043660048036038101906104319190611b76565b610e20565b005b348015610443575f80fd5b5061045e60048036038101906104599190611db8565b610e36565b60405161046b9190611e9a565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b76565b610f06565b6040516104a79190611a7d565b60405180910390f35b6104b8610f1d565b005b6104c2610f56565b005b3480156104cf575f80fd5b506104d8610f69565b6040516104e59190611aae565b60405180910390f35b3480156104f9575f80fd5b50610502610f6e565b6040516105129493929190611eba565b60405180910390f35b348015610526575f80fd5b5061052f610f8b565b60405161053c9190611c16565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611efd565b610fb3565b6040516105789190611a7d565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611faf565b61119e565b005b3480156105b4575f80fd5b506105bd611254565b6040516105ca9190611aae565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bdc565b61125a565b6040516106069190611a7d565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611efd565b611277565b6040516106429190611a7d565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611faf565b61128a565b005b34801561067e575f80fd5b50610687611340565b6040516106949190611aae565b60405180910390f35b3480156106a8575f80fd5b506106b1611346565b6040516106be9190611aae565b60405180910390f35b6106e160048036038101906106dc9190611bdc565b61134b565b005b6106fd60048036038101906106f89190611bdc565b611389565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bdc565b6113b2565b6040516107329190611a7d565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bdc565b611405565b60405161076e9190611aae565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e88261141e565b5b9050919050565b5f80600280015442610802919061205a565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b90505f610e1060026001015484610866919061208d565b61087091906120fb565b600260030154610880919061212b565b905081811161088f5780610891565b815b935050505090565b6108a333826114ca565b50565b6108ae6114d9565b6108b88282611510565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611520565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109988161152a565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f761215e565b5b9050602002016020810190610a0d91906121b5565b90506001151581151503610a5257610a4d878784818110610a3157610a3061215e565b5b9050602002016020810190610a469190611bdc565b6001611510565b610a85565b610a84878784818110610a6857610a6761215e565b5b9050602002016020810190610a7d9190611bdc565b60016114ca565b5b5080806001019150506109d9565b505050505050565b5f610aa461155f565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae791906122e9565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6393929190612314565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c8733611588565b610c9233600161165e565b50508015610cc9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cdb8161169f565b5f8585810190610ceb9190612462565b90505f8160200151806020019051810190610d0691906124bd565b9050610d57825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dcb9392919061254d565b604051602081830303815290604052604051610de79190611e9a565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e286114d9565b610e3282826114ca565b5050565b60605f8383810190610e4891906122e9565b9050604051806080016040528060016002811115610e6957610e68612589565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ecc91906125df565b604051602081830303815290604052815250604051602001610eee91906126f5565b60405160208183030381529060405291505092915050565b5f8082610f128561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f5e6114d9565b610f675f61170f565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fbc6114d9565b610fc5846117d5565b61100657836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ffd9190612738565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f81548092919061106c90612764565b91905055505f61107a6107f0565b905042600280018190555060025f0154811161109a5760025f01546110ab565b60025f0154816110aa919061205a565b5b600260030181905550611100858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116c69092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116e9392919061254d565b60405160208183030381529060405260405161118a9190611e9a565b60405180910390a260019150509392505050565b60026111a98161152a565b8282905085859050146111e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124c5761123f86868381811061120b5761120a61215e565b5b90506020020160208101906112209190611bdc565b8585848181106112335761123261215e565b5b90506020020135611510565b80806001019150506111ea565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f611281846117d5565b90509392505050565b60026112958161152a565b8282905085859050146112d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156113385761132b8686838181106112f7576112f661215e565b5b905060200201602081019061130c9190611bdc565b85858481811061131f5761131e61215e565b5b905060200201356114ca565b80806001019150506112d6565b505050505050565b60085481565b600181565b6113536114d9565b63389a75e1600c52805f526020600c20805442111561137957636f5e88185f526004601cfd5b5f8155506113868161170f565b50565b6113916114d9565b8060601b6113a657637448fbae5f526004601cfd5b6113af8161170f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113d2610f8b565b73ffffffffffffffffffffffffffffffffffffffff1614806113fe57506113fd826002600117610f06565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611490575061148f82611894565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114d582825f61190d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461150e576382b429005f526004601cfd5b565b61151c8282600161190d565b5050565b5f6202a300905090565b638b78c6d81954331461155c57638b78c6d8600c52335f52806020600c20541661155b576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611590611965565b15611608577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061165b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611706576390b8ec185f526004601cfd5b5f603452505050565b611717611965565b1561177c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117df6107f0565b90505f811180156118395750806118363060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661149790919063ffffffff16565b10155b801561188c575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611906575061190582611969565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a17816119e3565b8114611a21575f80fd5b50565b5f81359050611a3281611a0e565b92915050565b5f60208284031215611a4d57611a4c6119db565b5b5f611a5a84828501611a24565b91505092915050565b5f8115159050919050565b611a7781611a63565b82525050565b5f602082019050611a905f830184611a6e565b92915050565b5f819050919050565b611aa881611a96565b82525050565b5f602082019050611ac15f830184611a9f565b92915050565b611ad081611a96565b8114611ada575f80fd5b50565b5f81359050611aeb81611ac7565b92915050565b5f60208284031215611b0657611b056119db565b5b5f611b1384828501611add565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4582611b1c565b9050919050565b611b5581611b3b565b8114611b5f575f80fd5b50565b5f81359050611b7081611b4c565b92915050565b5f8060408385031215611b8c57611b8b6119db565b5b5f611b9985828601611b62565b9250506020611baa85828601611add565b9150509250929050565b611bbd816119e3565b82525050565b5f602082019050611bd65f830184611bb4565b92915050565b5f60208284031215611bf157611bf06119db565b5b5f611bfe84828501611b62565b91505092915050565b611c1081611b3b565b82525050565b5f602082019050611c295f830184611c07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c5057611c4f611c2f565b5b8235905067ffffffffffffffff811115611c6d57611c6c611c33565b5b602083019150836020820283011115611c8957611c88611c37565b5b9250929050565b5f8083601f840112611ca557611ca4611c2f565b5b8235905067ffffffffffffffff811115611cc257611cc1611c33565b5b602083019150836020820283011115611cde57611cdd611c37565b5b9250929050565b5f805f8060408587031215611cfd57611cfc6119db565b5b5f85013567ffffffffffffffff811115611d1a57611d196119df565b5b611d2687828801611c3b565b9450945050602085013567ffffffffffffffff811115611d4957611d486119df565b5b611d5587828801611c90565b925092505092959194509250565b5f8083601f840112611d7857611d77611c2f565b5b8235905067ffffffffffffffff811115611d9557611d94611c33565b5b602083019150836001820283011115611db157611db0611c37565b5b9250929050565b5f8060208385031215611dce57611dcd6119db565b5b5f83013567ffffffffffffffff811115611deb57611dea6119df565b5b611df785828601611d63565b92509250509250929050565b5f604082019050611e165f830185611a9f565b611e236020830184611c07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e6c82611e2a565b611e768185611e34565b9350611e86818560208601611e44565b611e8f81611e52565b840191505092915050565b5f6020820190508181035f830152611eb28184611e62565b905092915050565b5f608082019050611ecd5f830187611a9f565b611eda6020830186611a9f565b611ee76040830185611a9f565b611ef46060830184611a9f565b95945050505050565b5f805f60408486031215611f1457611f136119db565b5b5f611f2186828701611b62565b935050602084013567ffffffffffffffff811115611f4257611f416119df565b5b611f4e86828701611d63565b92509250509250925092565b5f8083601f840112611f6f57611f6e611c2f565b5b8235905067ffffffffffffffff811115611f8c57611f8b611c33565b5b602083019150836020820283011115611fa857611fa7611c37565b5b9250929050565b5f805f8060408587031215611fc757611fc66119db565b5b5f85013567ffffffffffffffff811115611fe457611fe36119df565b5b611ff087828801611c3b565b9450945050602085013567ffffffffffffffff811115612013576120126119df565b5b61201f87828801611f5a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61206482611a96565b915061206f83611a96565b92508282039050818111156120875761208661202d565b5b92915050565b5f61209782611a96565b91506120a283611a96565b92508282026120b081611a96565b915082820484148315176120c7576120c661202d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61210582611a96565b915061211083611a96565b9250826121205761211f6120ce565b5b828204905092915050565b5f61213582611a96565b915061214083611a96565b92508282019050808211156121585761215761202d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61219481611a63565b811461219e575f80fd5b50565b5f813590506121af8161218b565b92915050565b5f602082840312156121ca576121c96119db565b5b5f6121d7848285016121a1565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61221a82611e52565b810181811067ffffffffffffffff82111715612239576122386121e4565b5b80604052505050565b5f61224b6119d2565b90506122578282612211565b919050565b5f80fd5b5f60a08284031215612275576122746121e0565b5b61227f60a0612242565b90505f61228e84828501611b62565b5f8301525060206122a184828501611add565b60208301525060406122b584828501611add565b60408301525060606122c984828501611add565b60608301525060806122dd84828501611add565b60808301525092915050565b5f60a082840312156122fe576122fd6119db565b5b5f61230b84828501612260565b91505092915050565b5f6060820190506123275f830186611c07565b6123346020830185611a9f565b6123416040830184611a9f565b949350505050565b5f80fd5b5f67ffffffffffffffff821115612367576123666121e4565b5b61237082611e52565b9050602081019050919050565b828183375f83830152505050565b5f61239d6123988461234d565b612242565b9050828152602081018484840111156123b9576123b8612349565b5b6123c484828561237d565b509392505050565b5f82601f8301126123e0576123df611c2f565b5b81356123f084826020860161238b565b91505092915050565b5f6040828403121561240e5761240d6121e0565b5b6124186040612242565b90505f61242784828501611b62565b5f83015250602082013567ffffffffffffffff81111561244a5761244961225c565b5b612456848285016123cc565b60208301525092915050565b5f60208284031215612477576124766119db565b5b5f82013567ffffffffffffffff811115612494576124936119df565b5b6124a0848285016123f9565b91505092915050565b5f815190506124b781611ac7565b92915050565b5f602082840312156124d2576124d16119db565b5b5f6124df848285016124a9565b91505092915050565b5f8160601b9050919050565b5f6124fe826124e8565b9050919050565b5f61250f826124f4565b9050919050565b61252761252282611b3b565b612505565b82525050565b5f819050919050565b61254761254282611a96565b61252d565b82525050565b5f6125588286612516565b6014820191506125688285612516565b6014820191506125788284612536565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125bf81611a96565b82525050565b602082015f8201516125d95f8501826125b6565b50505050565b5f6020820190506125f25f8301846125c5565b92915050565b6003811061260957612608612589565b5b50565b5f819050612619826125f8565b919050565b5f6126288261260c565b9050919050565b6126388161261e565b82525050565b61264781611b3b565b82525050565b5f82825260208201905092915050565b5f61266782611e2a565b612671818561264d565b9350612681818560208601611e44565b61268a81611e52565b840191505092915050565b5f608083015f8301516126aa5f86018261262f565b5060208301516126bd602086018261263e565b5060408301516126d0604086018261263e565b50606083015184820360608601526126e8828261265d565b9150508091505092915050565b5f6020820190508181035f83015261270d8184612695565b905092915050565b50565b5f6127235f83611e34565b915061272e82612715565b5f82019050919050565b5f60408201905061274b5f830184611c07565b818103602083015261275c81612718565b905092915050565b5f61276e82611a96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127a05761279f61202d565b5b60018201905091905056fea264697066735822122032a0f80ce305faf6ce99031f2dace67ca68969c5c50f184662e2f869aaaa447964736f6c634300081a0033",Vf={},qf={},X={_format:kf,contractName:Lf,sourceName:Hf,abi:Bf,bytecode:Df,deployedBytecode:Sf,linkReferences:Vf,deployedLinkReferences:qf},Ff="hh-sol-artifact-1",Uf="ERC20Incentive",Gf="contracts/incentives/ERC20Incentive.sol",Pf=[{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:"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"},{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:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612ca7806100bd5f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e56565b6107dc565b60405161023a9190611e9b565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ecc565b60405180910390f35b61028760048036038101906102829190611f0f565b61085d565b005b6102a3600480360381019061029e9190611f94565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f94565b610880565b6040516102d89190611e9b565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611ecc565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fe1565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ffa565b610ae1565b6040516103889190611ecc565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b29190612034565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190612103565b610b1f565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d6565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d6565b610e6d565b60405161043f929190612221565b60405180910390f35b610462600480360381019061045d9190611f94565b61110a565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d6565b611120565b60405161049791906122b8565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f94565b61123e565b6040516104d39190611e9b565b60405180910390f35b6104e4611255565b005b6104ee61128e565b005b3480156104fb575f80fd5b506105046112a1565b6040516105119190611ecc565b60405180910390f35b348015610525575f80fd5b5061052e6112a6565b60405161053b9190612034565b60405180910390f35b34801561054f575f80fd5b506105586112ce565b6040516105659190611ecc565b60405180910390f35b348015610579575f80fd5b506105826112d4565b60405161058f919061234b565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0f565b6112e6565b6040516105cb9190612034565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f59190612364565b611321565b6040516106079190611e9b565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612416565b611610565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ffa565b6116c6565b60405161066b9190611e9b565b60405180910390f35b34801561067f575f80fd5b5061069a60048036038101906106959190612364565b6116e3565b6040516106a79190611e9b565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612416565b6116f6565b005b3480156106e3575f80fd5b506106ec6117ac565b6040516106f99190611ecc565b60405180910390f35b34801561070d575f80fd5b506107166117b2565b6040516107239190611ecc565b60405180910390f35b61074660048036038101906107419190611ffa565b6117b7565b005b610762600480360381019061075d9190611ffa565b6117f5565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ffa565b61181e565b6040516107979190611e9b565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ffa565b611871565b6040516107d39190611ecc565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d8261188a565b5b9050919050565b5f8054905090565b6108673382611903565b50565b610872611912565b61087c8282611949565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a181611959565b6001808111156108b4576108b36122d8565b5b60025f9054906101000a900460ff1660018111156108d5576108d46122d8565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092491906124c1565b81525090505f6003808054905061093a84611980565b6109449190612521565b8154811061095557610954612551565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b939291906125e3565b604051602081830303815290604052604051610a5791906122b8565b60405180910390a2505050565b5f5481565b5f610a726119d8565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a816119e2565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b89612551565b5b9050602002016020810190610b9f9190612649565b90506001151581151503610be457610bdf878784818110610bc357610bc2612551565b5b9050602002016020810190610bd89190611ffa565b6001611949565b610c17565b610c16878784818110610bfa57610bf9612551565b5b9050602002016020810190610c0f9190611ffa565b6001611903565b5b508080600101915050610b6b565b505050505050565b5f610c36611a17565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c7991906127a0565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda6122d8565b5b82602001516001811115610cf257610cf16122d8565b5b03610d01578160400151610d16565b81606001518260400151610d1591906127cb565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611a4090919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a9392919061280c565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd6122d8565b5b021790555082604001515f819055508260600151600681905550610e2133611a73565b610e3083608001516001611b49565b5050508015610e68576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e77611912565b5f8484810190610e87919061295a565b90505f8160200151806020019051810190610ea291906129b5565b9050600180811115610eb757610eb66122d8565b5b60025f9054906101000a900460ff166001811115610ed857610ed76122d8565b5b03610f5d575f5481141580610eee57505f600554115b15610f51573382604051602001610f059190612a71565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f48929190612a91565b60405180910390fd5b5f600681905550610ff3565b5f805482610f6b9190612521565b14610fce573382604051602001610f829190612a71565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a91565b60405180910390fd5b5f5481610fdb9190612abf565b60065f828254610feb9190612aef565b925050819055505b611042825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b6939291906125e3565b6040516020818303038152906040526040516110d291906122b8565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611112611912565b61111c8282611903565b5050565b60605f838381019061113291906127a0565b90505f600180811115611148576111476122d8565b5b8260200151600181111561115f5761115e6122d8565b5b0361116e578160400151611183565b8160600151826040015161118291906127cb565b5b90506040518060800160405280600160028111156111a4576111a36122d8565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016112039190612b4b565b6040516020818303038152906040528152506040516020016112259190612c0a565b6040516020818303038152906040529250505092915050565b5f808261124a85610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b611296611912565b61129f5f611b8a565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b600381815481106112f5575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132a611912565b61133384611c50565b611369576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600181111561137c5761137b6122d8565b5b60025f9054906101000a900460ff16600181111561139d5761139c6122d8565b5b036114f65760055f8154809291906113b490612c2a565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061145a845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016114c9939291906125e3565b6040516020818303038152906040526040516114e591906122b8565b60405180910390a260019050611609565b60055f81548092919061150890612c2a565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261161b816119e2565b82829050858590501461165a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116be576116b186868381811061167d5761167c612551565b5b90506020020160208101906116929190611ffa565b8585848181106116a5576116a4612551565b5b90506020020135611949565b808060010191505061165c565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6116ed84611c50565b90509392505050565b6002611701816119e2565b828290508585905014611740576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156117a45761179786868381811061176357611762612551565b5b90506020020160208101906117789190611ffa565b85858481811061178b5761178a612551565b5b90506020020135611903565b8080600101915050611742565b505050505050565b60055481565b600181565b6117bf611912565b63389a75e1600c52805f526020600c2080544211156117e557636f5e88185f526004601cfd5b5f8155506117f281611b8a565b50565b6117fd611912565b8060601b61181257637448fbae5f526004601cfd5b61181b81611b8a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661183e6112a6565b73ffffffffffffffffffffffffffffffffffffffff16148061186a575061186982600260011761123e565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fc57506118fb82611cb2565b5b9050919050565b61190e82825f611d2b565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611947576382b429005f526004601cfd5b565b61195582826001611d2b565b5050565b638b78c6d8600c52335f52806020600c20541661197d576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119cf576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a1457638b78c6d8600c52335f52806020600c205416611a13576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a7b611d83565b15611af3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab557630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b46565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b92611d83565b15611bf7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cab5750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d245750611d2382611d87565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4d57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3581611e01565b8114611e3f575f80fd5b50565b5f81359050611e5081611e2c565b92915050565b5f60208284031215611e6b57611e6a611df9565b5b5f611e7884828501611e42565b91505092915050565b5f8115159050919050565b611e9581611e81565b82525050565b5f602082019050611eae5f830184611e8c565b92915050565b5f819050919050565b611ec681611eb4565b82525050565b5f602082019050611edf5f830184611ebd565b92915050565b611eee81611eb4565b8114611ef8575f80fd5b50565b5f81359050611f0981611ee5565b92915050565b5f60208284031215611f2457611f23611df9565b5b5f611f3184828501611efb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f6382611f3a565b9050919050565b611f7381611f59565b8114611f7d575f80fd5b50565b5f81359050611f8e81611f6a565b92915050565b5f8060408385031215611faa57611fa9611df9565b5b5f611fb785828601611f80565b9250506020611fc885828601611efb565b9150509250929050565b611fdb81611e01565b82525050565b5f602082019050611ff45f830184611fd2565b92915050565b5f6020828403121561200f5761200e611df9565b5b5f61201c84828501611f80565b91505092915050565b61202e81611f59565b82525050565b5f6020820190506120475f830184612025565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206e5761206d61204d565b5b8235905067ffffffffffffffff81111561208b5761208a612051565b5b6020830191508360208202830111156120a7576120a6612055565b5b9250929050565b5f8083601f8401126120c3576120c261204d565b5b8235905067ffffffffffffffff8111156120e0576120df612051565b5b6020830191508360208202830111156120fc576120fb612055565b5b9250929050565b5f805f806040858703121561211b5761211a611df9565b5b5f85013567ffffffffffffffff81111561213857612137611dfd565b5b61214487828801612059565b9450945050602085013567ffffffffffffffff81111561216757612166611dfd565b5b612173878288016120ae565b925092505092959194509250565b5f8083601f8401126121965761219561204d565b5b8235905067ffffffffffffffff8111156121b3576121b2612051565b5b6020830191508360018202830111156121cf576121ce612055565b5b9250929050565b5f80602083850312156121ec576121eb611df9565b5b5f83013567ffffffffffffffff81111561220957612208611dfd565b5b61221585828601612181565b92509250509250929050565b5f6040820190506122345f830185611ebd565b6122416020830184612025565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228a82612248565b6122948185612252565b93506122a4818560208601612262565b6122ad81612270565b840191505092915050565b5f6020820190508181035f8301526122d08184612280565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612316576123156122d8565b5b50565b5f81905061232682612305565b919050565b5f61233582612319565b9050919050565b6123458161232b565b82525050565b5f60208201905061235e5f83018461233c565b92915050565b5f805f6040848603121561237b5761237a611df9565b5b5f61238886828701611f80565b935050602084013567ffffffffffffffff8111156123a9576123a8611dfd565b5b6123b586828701612181565b92509250509250925092565b5f8083601f8401126123d6576123d561204d565b5b8235905067ffffffffffffffff8111156123f3576123f2612051565b5b60208301915083602082028301111561240f5761240e612055565b5b9250929050565b5f805f806040858703121561242e5761242d611df9565b5b5f85013567ffffffffffffffff81111561244b5761244a611dfd565b5b61245787828801612059565b9450945050602085013567ffffffffffffffff81111561247a57612479611dfd565b5b612486878288016123c1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124cb82611eb4565b91506124d683611eb4565b92508282019050808211156124ee576124ed612494565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252b82611eb4565b915061253683611eb4565b925082612546576125456124f4565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125948261257e565b9050919050565b5f6125a58261258a565b9050919050565b6125bd6125b882611f59565b61259b565b82525050565b5f819050919050565b6125dd6125d882611eb4565b6125c3565b82525050565b5f6125ee82866125ac565b6014820191506125fe82856125ac565b60148201915061260e82846125cc565b602082019150819050949350505050565b61262881611e81565b8114612632575f80fd5b50565b5f813590506126438161261f565b92915050565b5f6020828403121561265e5761265d611df9565b5b5f61266b84828501612635565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126ae82612270565b810181811067ffffffffffffffff821117156126cd576126cc612678565b5b80604052505050565b5f6126df611df0565b90506126eb82826126a5565b919050565b5f80fd5b60028110612700575f80fd5b50565b5f81359050612711816126f4565b92915050565b5f60a0828403121561272c5761272b612674565b5b61273660a06126d6565b90505f61274584828501611f80565b5f83015250602061275884828501612703565b602083015250604061276c84828501611efb565b604083015250606061278084828501611efb565b606083015250608061279484828501611f80565b60808301525092915050565b5f60a082840312156127b5576127b4611df9565b5b5f6127c284828501612717565b91505092915050565b5f6127d582611eb4565b91506127e083611eb4565b92508282026127ee81611eb4565b9150828204841483151761280557612804612494565b5b5092915050565b5f60608201905061281f5f830186612025565b61282c6020830185611ebd565b6128396040830184611ebd565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285f5761285e612678565b5b61286882612270565b9050602081019050919050565b828183375f83830152505050565b5f61289561289084612845565b6126d6565b9050828152602081018484840111156128b1576128b0612841565b5b6128bc848285612875565b509392505050565b5f82601f8301126128d8576128d761204d565b5b81356128e8848260208601612883565b91505092915050565b5f6040828403121561290657612905612674565b5b61291060406126d6565b90505f61291f84828501611f80565b5f83015250602082013567ffffffffffffffff811115612942576129416126f0565b5b61294e848285016128c4565b60208301525092915050565b5f6020828403121561296f5761296e611df9565b5b5f82013567ffffffffffffffff81111561298c5761298b611dfd565b5b612998848285016128f1565b91505092915050565b5f815190506129af81611ee5565b92915050565b5f602082840312156129ca576129c9611df9565b5b5f6129d7848285016129a1565b91505092915050565b6129e981611f59565b82525050565b5f82825260208201905092915050565b5f612a0982612248565b612a1381856129ef565b9350612a23818560208601612262565b612a2c81612270565b840191505092915050565b5f604083015f830151612a4c5f8601826129e0565b5060208301518482036020860152612a6482826129ff565b9150508091505092915050565b5f6020820190508181035f830152612a898184612a37565b905092915050565b5f604082019050612aa45f830185612025565b8181036020830152612ab68184612280565b90509392505050565b5f612ac982611eb4565b9150612ad483611eb4565b925082612ae457612ae36124f4565b5b828204905092915050565b5f612af982611eb4565b9150612b0483611eb4565b9250828203905081811115612b1c57612b1b612494565b5b92915050565b612b2b81611eb4565b82525050565b602082015f820151612b455f850182612b22565b50505050565b5f602082019050612b5e5f830184612b31565b92915050565b60038110612b7557612b746122d8565b5b50565b5f819050612b8582612b64565b919050565b5f612b9482612b78565b9050919050565b612ba481612b8a565b82525050565b5f608083015f830151612bbf5f860182612b9b565b506020830151612bd260208601826129e0565b506040830151612be560408601826129e0565b5060608301518482036060860152612bfd82826129ff565b9150508091505092915050565b5f6020820190508181035f830152612c228184612baa565b905092915050565b5f612c3482611eb4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6657612c65612494565b5b60018201905091905056fea264697066735822122031b930285b1e7a31374da673668bb15be34315e47f8c6f5ca216d679f1588dd864736f6c634300081a0033",Wf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e56565b6107dc565b60405161023a9190611e9b565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ecc565b60405180910390f35b61028760048036038101906102829190611f0f565b61085d565b005b6102a3600480360381019061029e9190611f94565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f94565b610880565b6040516102d89190611e9b565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611ecc565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fe1565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ffa565b610ae1565b6040516103889190611ecc565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b29190612034565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190612103565b610b1f565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d6565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d6565b610e6d565b60405161043f929190612221565b60405180910390f35b610462600480360381019061045d9190611f94565b61110a565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d6565b611120565b60405161049791906122b8565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f94565b61123e565b6040516104d39190611e9b565b60405180910390f35b6104e4611255565b005b6104ee61128e565b005b3480156104fb575f80fd5b506105046112a1565b6040516105119190611ecc565b60405180910390f35b348015610525575f80fd5b5061052e6112a6565b60405161053b9190612034565b60405180910390f35b34801561054f575f80fd5b506105586112ce565b6040516105659190611ecc565b60405180910390f35b348015610579575f80fd5b506105826112d4565b60405161058f919061234b565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0f565b6112e6565b6040516105cb9190612034565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f59190612364565b611321565b6040516106079190611e9b565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612416565b611610565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ffa565b6116c6565b60405161066b9190611e9b565b60405180910390f35b34801561067f575f80fd5b5061069a60048036038101906106959190612364565b6116e3565b6040516106a79190611e9b565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612416565b6116f6565b005b3480156106e3575f80fd5b506106ec6117ac565b6040516106f99190611ecc565b60405180910390f35b34801561070d575f80fd5b506107166117b2565b6040516107239190611ecc565b60405180910390f35b61074660048036038101906107419190611ffa565b6117b7565b005b610762600480360381019061075d9190611ffa565b6117f5565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ffa565b61181e565b6040516107979190611e9b565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ffa565b611871565b6040516107d39190611ecc565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d8261188a565b5b9050919050565b5f8054905090565b6108673382611903565b50565b610872611912565b61087c8282611949565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a181611959565b6001808111156108b4576108b36122d8565b5b60025f9054906101000a900460ff1660018111156108d5576108d46122d8565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092491906124c1565b81525090505f6003808054905061093a84611980565b6109449190612521565b8154811061095557610954612551565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b939291906125e3565b604051602081830303815290604052604051610a5791906122b8565b60405180910390a2505050565b5f5481565b5f610a726119d8565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a816119e2565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b89612551565b5b9050602002016020810190610b9f9190612649565b90506001151581151503610be457610bdf878784818110610bc357610bc2612551565b5b9050602002016020810190610bd89190611ffa565b6001611949565b610c17565b610c16878784818110610bfa57610bf9612551565b5b9050602002016020810190610c0f9190611ffa565b6001611903565b5b508080600101915050610b6b565b505050505050565b5f610c36611a17565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c7991906127a0565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda6122d8565b5b82602001516001811115610cf257610cf16122d8565b5b03610d01578160400151610d16565b81606001518260400151610d1591906127cb565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611a4090919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a9392919061280c565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd6122d8565b5b021790555082604001515f819055508260600151600681905550610e2133611a73565b610e3083608001516001611b49565b5050508015610e68576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e77611912565b5f8484810190610e87919061295a565b90505f8160200151806020019051810190610ea291906129b5565b9050600180811115610eb757610eb66122d8565b5b60025f9054906101000a900460ff166001811115610ed857610ed76122d8565b5b03610f5d575f5481141580610eee57505f600554115b15610f51573382604051602001610f059190612a71565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f48929190612a91565b60405180910390fd5b5f600681905550610ff3565b5f805482610f6b9190612521565b14610fce573382604051602001610f829190612a71565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a91565b60405180910390fd5b5f5481610fdb9190612abf565b60065f828254610feb9190612aef565b925050819055505b611042825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b6939291906125e3565b6040516020818303038152906040526040516110d291906122b8565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611112611912565b61111c8282611903565b5050565b60605f838381019061113291906127a0565b90505f600180811115611148576111476122d8565b5b8260200151600181111561115f5761115e6122d8565b5b0361116e578160400151611183565b8160600151826040015161118291906127cb565b5b90506040518060800160405280600160028111156111a4576111a36122d8565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016112039190612b4b565b6040516020818303038152906040528152506040516020016112259190612c0a565b6040516020818303038152906040529250505092915050565b5f808261124a85610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b611296611912565b61129f5f611b8a565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b600381815481106112f5575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132a611912565b61133384611c50565b611369576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600181111561137c5761137b6122d8565b5b60025f9054906101000a900460ff16600181111561139d5761139c6122d8565b5b036114f65760055f8154809291906113b490612c2a565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061145a845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198f9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016114c9939291906125e3565b6040516020818303038152906040526040516114e591906122b8565b60405180910390a260019050611609565b60055f81548092919061150890612c2a565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261161b816119e2565b82829050858590501461165a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116be576116b186868381811061167d5761167c612551565b5b90506020020160208101906116929190611ffa565b8585848181106116a5576116a4612551565b5b90506020020135611949565b808060010191505061165c565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6116ed84611c50565b90509392505050565b6002611701816119e2565b828290508585905014611740576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156117a45761179786868381811061176357611762612551565b5b90506020020160208101906117789190611ffa565b85858481811061178b5761178a612551565b5b90506020020135611903565b8080600101915050611742565b505050505050565b60055481565b600181565b6117bf611912565b63389a75e1600c52805f526020600c2080544211156117e557636f5e88185f526004601cfd5b5f8155506117f281611b8a565b50565b6117fd611912565b8060601b61181257637448fbae5f526004601cfd5b61181b81611b8a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661183e6112a6565b73ffffffffffffffffffffffffffffffffffffffff16148061186a575061186982600260011761123e565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118fc57506118fb82611cb2565b5b9050919050565b61190e82825f611d2b565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611947576382b429005f526004601cfd5b565b61195582826001611d2b565b5050565b638b78c6d8600c52335f52806020600c20541661197d576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119cf576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a1457638b78c6d8600c52335f52806020600c205416611a13576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a7b611d83565b15611af3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab557630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b46565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b92611d83565b15611bf7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cab5750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d245750611d2382611d87565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4d57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3581611e01565b8114611e3f575f80fd5b50565b5f81359050611e5081611e2c565b92915050565b5f60208284031215611e6b57611e6a611df9565b5b5f611e7884828501611e42565b91505092915050565b5f8115159050919050565b611e9581611e81565b82525050565b5f602082019050611eae5f830184611e8c565b92915050565b5f819050919050565b611ec681611eb4565b82525050565b5f602082019050611edf5f830184611ebd565b92915050565b611eee81611eb4565b8114611ef8575f80fd5b50565b5f81359050611f0981611ee5565b92915050565b5f60208284031215611f2457611f23611df9565b5b5f611f3184828501611efb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f6382611f3a565b9050919050565b611f7381611f59565b8114611f7d575f80fd5b50565b5f81359050611f8e81611f6a565b92915050565b5f8060408385031215611faa57611fa9611df9565b5b5f611fb785828601611f80565b9250506020611fc885828601611efb565b9150509250929050565b611fdb81611e01565b82525050565b5f602082019050611ff45f830184611fd2565b92915050565b5f6020828403121561200f5761200e611df9565b5b5f61201c84828501611f80565b91505092915050565b61202e81611f59565b82525050565b5f6020820190506120475f830184612025565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206e5761206d61204d565b5b8235905067ffffffffffffffff81111561208b5761208a612051565b5b6020830191508360208202830111156120a7576120a6612055565b5b9250929050565b5f8083601f8401126120c3576120c261204d565b5b8235905067ffffffffffffffff8111156120e0576120df612051565b5b6020830191508360208202830111156120fc576120fb612055565b5b9250929050565b5f805f806040858703121561211b5761211a611df9565b5b5f85013567ffffffffffffffff81111561213857612137611dfd565b5b61214487828801612059565b9450945050602085013567ffffffffffffffff81111561216757612166611dfd565b5b612173878288016120ae565b925092505092959194509250565b5f8083601f8401126121965761219561204d565b5b8235905067ffffffffffffffff8111156121b3576121b2612051565b5b6020830191508360018202830111156121cf576121ce612055565b5b9250929050565b5f80602083850312156121ec576121eb611df9565b5b5f83013567ffffffffffffffff81111561220957612208611dfd565b5b61221585828601612181565b92509250509250929050565b5f6040820190506122345f830185611ebd565b6122416020830184612025565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228a82612248565b6122948185612252565b93506122a4818560208601612262565b6122ad81612270565b840191505092915050565b5f6020820190508181035f8301526122d08184612280565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612316576123156122d8565b5b50565b5f81905061232682612305565b919050565b5f61233582612319565b9050919050565b6123458161232b565b82525050565b5f60208201905061235e5f83018461233c565b92915050565b5f805f6040848603121561237b5761237a611df9565b5b5f61238886828701611f80565b935050602084013567ffffffffffffffff8111156123a9576123a8611dfd565b5b6123b586828701612181565b92509250509250925092565b5f8083601f8401126123d6576123d561204d565b5b8235905067ffffffffffffffff8111156123f3576123f2612051565b5b60208301915083602082028301111561240f5761240e612055565b5b9250929050565b5f805f806040858703121561242e5761242d611df9565b5b5f85013567ffffffffffffffff81111561244b5761244a611dfd565b5b61245787828801612059565b9450945050602085013567ffffffffffffffff81111561247a57612479611dfd565b5b612486878288016123c1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124cb82611eb4565b91506124d683611eb4565b92508282019050808211156124ee576124ed612494565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252b82611eb4565b915061253683611eb4565b925082612546576125456124f4565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125948261257e565b9050919050565b5f6125a58261258a565b9050919050565b6125bd6125b882611f59565b61259b565b82525050565b5f819050919050565b6125dd6125d882611eb4565b6125c3565b82525050565b5f6125ee82866125ac565b6014820191506125fe82856125ac565b60148201915061260e82846125cc565b602082019150819050949350505050565b61262881611e81565b8114612632575f80fd5b50565b5f813590506126438161261f565b92915050565b5f6020828403121561265e5761265d611df9565b5b5f61266b84828501612635565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126ae82612270565b810181811067ffffffffffffffff821117156126cd576126cc612678565b5b80604052505050565b5f6126df611df0565b90506126eb82826126a5565b919050565b5f80fd5b60028110612700575f80fd5b50565b5f81359050612711816126f4565b92915050565b5f60a0828403121561272c5761272b612674565b5b61273660a06126d6565b90505f61274584828501611f80565b5f83015250602061275884828501612703565b602083015250604061276c84828501611efb565b604083015250606061278084828501611efb565b606083015250608061279484828501611f80565b60808301525092915050565b5f60a082840312156127b5576127b4611df9565b5b5f6127c284828501612717565b91505092915050565b5f6127d582611eb4565b91506127e083611eb4565b92508282026127ee81611eb4565b9150828204841483151761280557612804612494565b5b5092915050565b5f60608201905061281f5f830186612025565b61282c6020830185611ebd565b6128396040830184611ebd565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285f5761285e612678565b5b61286882612270565b9050602081019050919050565b828183375f83830152505050565b5f61289561289084612845565b6126d6565b9050828152602081018484840111156128b1576128b0612841565b5b6128bc848285612875565b509392505050565b5f82601f8301126128d8576128d761204d565b5b81356128e8848260208601612883565b91505092915050565b5f6040828403121561290657612905612674565b5b61291060406126d6565b90505f61291f84828501611f80565b5f83015250602082013567ffffffffffffffff811115612942576129416126f0565b5b61294e848285016128c4565b60208301525092915050565b5f6020828403121561296f5761296e611df9565b5b5f82013567ffffffffffffffff81111561298c5761298b611dfd565b5b612998848285016128f1565b91505092915050565b5f815190506129af81611ee5565b92915050565b5f602082840312156129ca576129c9611df9565b5b5f6129d7848285016129a1565b91505092915050565b6129e981611f59565b82525050565b5f82825260208201905092915050565b5f612a0982612248565b612a1381856129ef565b9350612a23818560208601612262565b612a2c81612270565b840191505092915050565b5f604083015f830151612a4c5f8601826129e0565b5060208301518482036020860152612a6482826129ff565b9150508091505092915050565b5f6020820190508181035f830152612a898184612a37565b905092915050565b5f604082019050612aa45f830185612025565b8181036020830152612ab68184612280565b90509392505050565b5f612ac982611eb4565b9150612ad483611eb4565b925082612ae457612ae36124f4565b5b828204905092915050565b5f612af982611eb4565b9150612b0483611eb4565b9250828203905081811115612b1c57612b1b612494565b5b92915050565b612b2b81611eb4565b82525050565b602082015f820151612b455f850182612b22565b50505050565b5f602082019050612b5e5f830184612b31565b92915050565b60038110612b7557612b746122d8565b5b50565b5f819050612b8582612b64565b919050565b5f612b9482612b78565b9050919050565b612ba481612b8a565b82525050565b5f608083015f830151612bbf5f860182612b9b565b506020830151612bd260208601826129e0565b506040830151612be560408601826129e0565b5060608301518482036060860152612bfd82826129ff565b9150508091505092915050565b5f6020820190508181035f830152612c228184612baa565b905092915050565b5f612c3482611eb4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6657612c65612494565b5b60018201905091905056fea264697066735822122031b930285b1e7a31374da673668bb15be34315e47f8c6f5ca216d679f1588dd864736f6c634300081a0033",jf={},Kf={},f0={_format:Ff,contractName:Uf,sourceName:Gf,abi:Pf,bytecode:Zf,deployedBytecode:Wf,linkReferences:jf,deployedLinkReferences:Kf},Qf="hh-sol-artifact-1",Yf="ERC20VariableCriteriaIncentive",Jf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Xf=[{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:!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:"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:"struct AERC20VariableCriteriaIncentive.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"}],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:[],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"}],f5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612cab806100bd5f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c41565b61084b565b6040516102509190611c86565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cb7565b60405180910390f35b61029d60048036038101906102989190611cfa565b6108cc565b005b6102b960048036038101906102b49190611d7f565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d7f565b6108ef565b6040516102ee9190611c86565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611cb7565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611dcc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611de5565b610982565b6040516103889190611cb7565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e1f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611eee565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fc1565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fc1565b610d48565b60405161043f92919061200c565b60405180910390f35b610462600480360381019061045d9190611d7f565b610eb2565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fc1565b610ec8565b60405161049791906120a3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d7f565b610f96565b6040516104d39190611c86565b60405180910390f35b6104e4610fad565b005b3480156104f1575f80fd5b506104fa610fe6565b6040516105079190611cb7565b60405180910390f35b610518610fec565b005b348015610525575f80fd5b5061052e610fff565b60405161053b9190611cb7565b60405180910390f35b34801561054f575f80fd5b50610558611004565b6040516105689493929190612169565b60405180910390f35b34801561057c575f80fd5b50610585611059565b6040516105929190611e1f565b60405180910390f35b3480156105a6575f80fd5b506105af611081565b6040516105bc9190611cb7565b60405180910390f35b3480156105d0575f80fd5b506105d9611087565b6040516105e6919061223b565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612254565b611156565b6040516106229190611c86565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612306565b611383565b005b34801561065e575f80fd5b50610667611439565b6040516106749190611cb7565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611de5565b611442565b6040516106b09190611c86565b60405180910390f35b3480156106c4575f80fd5b506106cd61145f565b6040516106da9190611cb7565b60405180910390f35b3480156106ee575f80fd5b5061070960048036038101906107049190612254565b611465565b6040516107169190611c86565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612306565b611478565b005b348015610752575f80fd5b5061075b61152e565b6040516107689190611cb7565b60405180910390f35b34801561077c575f80fd5b50610785611534565b6040516107929190611cb7565b60405180910390f35b6107b560048036038101906107b09190611de5565b611539565b005b6107d160048036038101906107cc9190611de5565b611577565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611de5565b6115a0565b6040516108069190611c86565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611de5565b6115f3565b6040516108429190611cb7565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc8261160c565b5b9050919050565b5f8054905090565b6108d63382611685565b50565b6108e1611694565b6108eb82826116cb565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f6109136116db565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116e5565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a612384565b5b9050602002016020810190610a4091906123db565b90506001151581151503610a8557610a80878784818110610a6457610a63612384565b5b9050602002016020810190610a799190611de5565b60016116cb565b610ab8565b610ab7878784818110610a9b57610a9a612384565b5b9050602002016020810190610ab09190611de5565b6001611685565b5b508080600101915050610a0c565b505050505050565b5f610ad761171a565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125fc565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661174390919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb93929190612628565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120c3565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc33611776565b610d0733600161184c565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d558161188d565b5f8585810190610d659190612776565b90505f8160200151806020019051810190610d8091906127d1565b90508060025f828254610d939190612829565b92505081905550610de9825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118b49092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e5d939291906128c1565b604051602081830303815290604052604051610e7991906120a3565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eba611694565b610ec48282611685565b5050565b60605f808484810190610edb9190612938565b9250509150604051806080016040528060016002811115610eff57610efe6120c3565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5b91906129b1565b604051602081830303815290604052815250604051602001610f7d9190612ab8565b6040516020818303038152906040529250505092915050565b5f8082610fa285610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610ff4611694565b610ffd5f6118fd565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b61108f611b89565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110bf576110be6120c3565b5b60018111156110d1576110d06120c3565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115f611694565b5f838381019061116f9190612b5d565b90505f816020015180602001905181019061118a91906127d1565b90505f611196876119c3565b6111cc576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054036111dc578190506111ff565b670de0b6b3a7640000825f546111f29190612ba4565b6111fc9190612c12565b90505b5f60065414158015611212575060065481115b1561121d5760065490505b6002548160055461122e9190612c42565b1115611266576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112779190612c42565b92505081905550600160045f8282546112909190612c42565b925050819055506112e3878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118b49092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611351939291906128c1565b60405160208183030381529060405260405161136d91906120a3565b60405180910390a2600193505050509392505050565b600261138e816116e5565b8282905085859050146113cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611431576114248686838181106113f0576113ef612384565b5b90506020020160208101906114059190611de5565b85858481811061141857611417612384565b5b905060200201356116cb565b80806001019150506113cf565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f61146f846119c3565b90509392505050565b6002611483816116e5565b8282905085859050146114c2576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611526576115198686838181106114e5576114e4612384565b5b90506020020160208101906114fa9190611de5565b85858481811061150d5761150c612384565b5b90506020020135611685565b80806001019150506114c4565b505050505050565b60045481565b600181565b611541611694565b63389a75e1600c52805f526020600c20805442111561156757636f5e88185f526004601cfd5b5f815550611574816118fd565b50565b61157f611694565b8060601b61159457637448fbae5f526004601cfd5b61159d816118fd565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115c0611059565b73ffffffffffffffffffffffffffffffffffffffff1614806115ec57506115eb826002600117610f96565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061167e575061167d826119d2565b5b9050919050565b61169082825f611a4b565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c9576382b429005f526004601cfd5b565b6116d782826001611a4b565b5050565b5f6202a300905090565b638b78c6d81954331461171757638b78c6d8600c52335f52806020600c205416611716576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61177e611aa3565b156117f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117b857630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611849565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118b1576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118f4576390b8ec185f526004601cfd5b5f603452505050565b611905611aa3565b1561196a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a445750611a4382611aa7565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6d57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b195750611b1882611b20565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611ba757611ba66120c3565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c2081611bec565b8114611c2a575f80fd5b50565b5f81359050611c3b81611c17565b92915050565b5f60208284031215611c5657611c55611be4565b5b5f611c6384828501611c2d565b91505092915050565b5f8115159050919050565b611c8081611c6c565b82525050565b5f602082019050611c995f830184611c77565b92915050565b5f819050919050565b611cb181611c9f565b82525050565b5f602082019050611cca5f830184611ca8565b92915050565b611cd981611c9f565b8114611ce3575f80fd5b50565b5f81359050611cf481611cd0565b92915050565b5f60208284031215611d0f57611d0e611be4565b5b5f611d1c84828501611ce6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4e82611d25565b9050919050565b611d5e81611d44565b8114611d68575f80fd5b50565b5f81359050611d7981611d55565b92915050565b5f8060408385031215611d9557611d94611be4565b5b5f611da285828601611d6b565b9250506020611db385828601611ce6565b9150509250929050565b611dc681611bec565b82525050565b5f602082019050611ddf5f830184611dbd565b92915050565b5f60208284031215611dfa57611df9611be4565b5b5f611e0784828501611d6b565b91505092915050565b611e1981611d44565b82525050565b5f602082019050611e325f830184611e10565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5957611e58611e38565b5b8235905067ffffffffffffffff811115611e7657611e75611e3c565b5b602083019150836020820283011115611e9257611e91611e40565b5b9250929050565b5f8083601f840112611eae57611ead611e38565b5b8235905067ffffffffffffffff811115611ecb57611eca611e3c565b5b602083019150836020820283011115611ee757611ee6611e40565b5b9250929050565b5f805f8060408587031215611f0657611f05611be4565b5b5f85013567ffffffffffffffff811115611f2357611f22611be8565b5b611f2f87828801611e44565b9450945050602085013567ffffffffffffffff811115611f5257611f51611be8565b5b611f5e87828801611e99565b925092505092959194509250565b5f8083601f840112611f8157611f80611e38565b5b8235905067ffffffffffffffff811115611f9e57611f9d611e3c565b5b602083019150836001820283011115611fba57611fb9611e40565b5b9250929050565b5f8060208385031215611fd757611fd6611be4565b5b5f83013567ffffffffffffffff811115611ff457611ff3611be8565b5b61200085828601611f6c565b92509250509250929050565b5f60408201905061201f5f830185611ca8565b61202c6020830184611e10565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61207582612033565b61207f818561203d565b935061208f81856020860161204d565b6120988161205b565b840191505092915050565b5f6020820190508181035f8301526120bb818461206b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612101576121006120c3565b5b50565b5f819050612111826120f0565b919050565b5f61212082612104565b9050919050565b61213081612116565b82525050565b5f819050919050565b61214881612136565b82525050565b5f60ff82169050919050565b6121638161214e565b82525050565b5f60808201905061217c5f830187612127565b612189602083018661213f565b612196604083018561215a565b6121a36060830184611e10565b95945050505050565b6121b581612116565b82525050565b6121c481612136565b82525050565b6121d38161214e565b82525050565b6121e281611d44565b82525050565b608082015f8201516121fc5f8501826121ac565b50602082015161220f60208501826121bb565b50604082015161222260408501826121ca565b50606082015161223560608501826121d9565b50505050565b5f60808201905061224e5f8301846121e8565b92915050565b5f805f6040848603121561226b5761226a611be4565b5b5f61227886828701611d6b565b935050602084013567ffffffffffffffff81111561229957612298611be8565b5b6122a586828701611f6c565b92509250509250925092565b5f8083601f8401126122c6576122c5611e38565b5b8235905067ffffffffffffffff8111156122e3576122e2611e3c565b5b6020830191508360208202830111156122ff576122fe611e40565b5b9250929050565b5f805f806040858703121561231e5761231d611be4565b5b5f85013567ffffffffffffffff81111561233b5761233a611be8565b5b61234787828801611e44565b9450945050602085013567ffffffffffffffff81111561236a57612369611be8565b5b612376878288016122b1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123ba81611c6c565b81146123c4575f80fd5b50565b5f813590506123d5816123b1565b92915050565b5f602082840312156123f0576123ef611be4565b5b5f6123fd848285016123c7565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6124408261205b565b810181811067ffffffffffffffff8211171561245f5761245e61240a565b5b80604052505050565b5f612471611bdb565b905061247d8282612437565b919050565b5f80fd5b60028110612492575f80fd5b50565b5f813590506124a381612486565b92915050565b6124b281612136565b81146124bc575f80fd5b50565b5f813590506124cd816124a9565b92915050565b6124dc8161214e565b81146124e6575f80fd5b50565b5f813590506124f7816124d3565b92915050565b5f6080828403121561251257612511612406565b5b61251c6080612468565b90505f61252b84828501612495565b5f83015250602061253e848285016124bf565b6020830152506040612552848285016124e9565b604083015250606061256684828501611d6b565b60608301525092915050565b5f610100828403121561258857612587612406565b5b61259260a0612468565b90505f6125a184828501611d6b565b5f8301525060206125b484828501611ce6565b60208301525060406125c884828501611ce6565b60408301525060606125dc84828501611ce6565b60608301525060806125f0848285016124fd565b60808301525092915050565b5f610100828403121561261257612611611be4565b5b5f61261f84828501612572565b91505092915050565b5f60608201905061263b5f830186611e10565b6126486020830185611ca8565b6126556040830184611ca8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267b5761267a61240a565b5b6126848261205b565b9050602081019050919050565b828183375f83830152505050565b5f6126b16126ac84612661565b612468565b9050828152602081018484840111156126cd576126cc61265d565b5b6126d8848285612691565b509392505050565b5f82601f8301126126f4576126f3611e38565b5b813561270484826020860161269f565b91505092915050565b5f6040828403121561272257612721612406565b5b61272c6040612468565b90505f61273b84828501611d6b565b5f83015250602082013567ffffffffffffffff81111561275e5761275d612482565b5b61276a848285016126e0565b60208301525092915050565b5f6020828403121561278b5761278a611be4565b5b5f82013567ffffffffffffffff8111156127a8576127a7611be8565b5b6127b48482850161270d565b91505092915050565b5f815190506127cb81611cd0565b92915050565b5f602082840312156127e6576127e5611be4565b5b5f6127f3848285016127bd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61283382611c9f565b915061283e83611c9f565b9250828203905081811115612856576128556127fc565b5b92915050565b5f8160601b9050919050565b5f6128728261285c565b9050919050565b5f61288382612868565b9050919050565b61289b61289682611d44565b612879565b82525050565b5f819050919050565b6128bb6128b682611c9f565b6128a1565b82525050565b5f6128cc828661288a565b6014820191506128dc828561288a565b6014820191506128ec82846128aa565b602082019150819050949350505050565b5f61290782611d25565b9050919050565b612917816128fd565b8114612921575f80fd5b50565b5f813590506129328161290e565b92915050565b5f805f6060848603121561294f5761294e611be4565b5b5f61295c86828701612924565b935050602061296d86828701611ce6565b925050604061297e86828701611ce6565b9150509250925092565b61299181611c9f565b82525050565b602082015f8201516129ab5f850182612988565b50505050565b5f6020820190506129c45f830184612997565b92915050565b600381106129db576129da6120c3565b5b50565b5f8190506129eb826129ca565b919050565b5f6129fa826129de565b9050919050565b612a0a816129f0565b82525050565b5f82825260208201905092915050565b5f612a2a82612033565b612a348185612a10565b9350612a4481856020860161204d565b612a4d8161205b565b840191505092915050565b5f608083015f830151612a6d5f860182612a01565b506020830151612a8060208601826121d9565b506040830151612a9360408601826121d9565b5060608301518482036060860152612aab8282612a20565b9150508091505092915050565b5f6020820190508181035f830152612ad08184612a58565b905092915050565b5f60408284031215612aed57612aec612406565b5b612af76040612468565b90505f82013567ffffffffffffffff811115612b1657612b15612482565b5b612b22848285016126e0565b5f83015250602082013567ffffffffffffffff811115612b4557612b44612482565b5b612b51848285016126e0565b60208301525092915050565b5f60208284031215612b7257612b71611be4565b5b5f82013567ffffffffffffffff811115612b8f57612b8e611be8565b5b612b9b84828501612ad8565b91505092915050565b5f612bae82611c9f565b9150612bb983611c9f565b9250828202612bc781611c9f565b91508282048414831517612bde57612bdd6127fc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1c82611c9f565b9150612c2783611c9f565b925082612c3757612c36612be5565b5b828204905092915050565b5f612c4c82611c9f565b9150612c5783611c9f565b9250828201905080821115612c6f57612c6e6127fc565b5b9291505056fea26469706673582212206fc3fa5b6aa31318292541af8c0fe58ca66ae2f228656b14246c0a3d17700dcc64736f6c634300081a0033",b5="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c41565b61084b565b6040516102509190611c86565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cb7565b60405180910390f35b61029d60048036038101906102989190611cfa565b6108cc565b005b6102b960048036038101906102b49190611d7f565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d7f565b6108ef565b6040516102ee9190611c86565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611cb7565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611dcc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611de5565b610982565b6040516103889190611cb7565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e1f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611eee565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fc1565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fc1565b610d48565b60405161043f92919061200c565b60405180910390f35b610462600480360381019061045d9190611d7f565b610eb2565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fc1565b610ec8565b60405161049791906120a3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d7f565b610f96565b6040516104d39190611c86565b60405180910390f35b6104e4610fad565b005b3480156104f1575f80fd5b506104fa610fe6565b6040516105079190611cb7565b60405180910390f35b610518610fec565b005b348015610525575f80fd5b5061052e610fff565b60405161053b9190611cb7565b60405180910390f35b34801561054f575f80fd5b50610558611004565b6040516105689493929190612169565b60405180910390f35b34801561057c575f80fd5b50610585611059565b6040516105929190611e1f565b60405180910390f35b3480156105a6575f80fd5b506105af611081565b6040516105bc9190611cb7565b60405180910390f35b3480156105d0575f80fd5b506105d9611087565b6040516105e6919061223b565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612254565b611156565b6040516106229190611c86565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612306565b611383565b005b34801561065e575f80fd5b50610667611439565b6040516106749190611cb7565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611de5565b611442565b6040516106b09190611c86565b60405180910390f35b3480156106c4575f80fd5b506106cd61145f565b6040516106da9190611cb7565b60405180910390f35b3480156106ee575f80fd5b5061070960048036038101906107049190612254565b611465565b6040516107169190611c86565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612306565b611478565b005b348015610752575f80fd5b5061075b61152e565b6040516107689190611cb7565b60405180910390f35b34801561077c575f80fd5b50610785611534565b6040516107929190611cb7565b60405180910390f35b6107b560048036038101906107b09190611de5565b611539565b005b6107d160048036038101906107cc9190611de5565b611577565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611de5565b6115a0565b6040516108069190611c86565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611de5565b6115f3565b6040516108429190611cb7565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc8261160c565b5b9050919050565b5f8054905090565b6108d63382611685565b50565b6108e1611694565b6108eb82826116cb565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f6109136116db565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116e5565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a612384565b5b9050602002016020810190610a4091906123db565b90506001151581151503610a8557610a80878784818110610a6457610a63612384565b5b9050602002016020810190610a799190611de5565b60016116cb565b610ab8565b610ab7878784818110610a9b57610a9a612384565b5b9050602002016020810190610ab09190611de5565b6001611685565b5b508080600101915050610a0c565b505050505050565b5f610ad761171a565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125fc565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661174390919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb93929190612628565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120c3565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc33611776565b610d0733600161184c565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d558161188d565b5f8585810190610d659190612776565b90505f8160200151806020019051810190610d8091906127d1565b90508060025f828254610d939190612829565b92505081905550610de9825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118b49092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e5d939291906128c1565b604051602081830303815290604052604051610e7991906120a3565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eba611694565b610ec48282611685565b5050565b60605f808484810190610edb9190612938565b9250509150604051806080016040528060016002811115610eff57610efe6120c3565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5b91906129b1565b604051602081830303815290604052815250604051602001610f7d9190612ab8565b6040516020818303038152906040529250505092915050565b5f8082610fa285610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610ff4611694565b610ffd5f6118fd565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b61108f611b89565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110bf576110be6120c3565b5b60018111156110d1576110d06120c3565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115f611694565b5f838381019061116f9190612b5d565b90505f816020015180602001905181019061118a91906127d1565b90505f611196876119c3565b6111cc576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054036111dc578190506111ff565b670de0b6b3a7640000825f546111f29190612ba4565b6111fc9190612c12565b90505b5f60065414158015611212575060065481115b1561121d5760065490505b6002548160055461122e9190612c42565b1115611266576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112779190612c42565b92505081905550600160045f8282546112909190612c42565b925050819055506112e3878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118b49092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611351939291906128c1565b60405160208183030381529060405260405161136d91906120a3565b60405180910390a2600193505050509392505050565b600261138e816116e5565b8282905085859050146113cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611431576114248686838181106113f0576113ef612384565b5b90506020020160208101906114059190611de5565b85858481811061141857611417612384565b5b905060200201356116cb565b80806001019150506113cf565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f61146f846119c3565b90509392505050565b6002611483816116e5565b8282905085859050146114c2576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611526576115198686838181106114e5576114e4612384565b5b90506020020160208101906114fa9190611de5565b85858481811061150d5761150c612384565b5b90506020020135611685565b80806001019150506114c4565b505050505050565b60045481565b600181565b611541611694565b63389a75e1600c52805f526020600c20805442111561156757636f5e88185f526004601cfd5b5f815550611574816118fd565b50565b61157f611694565b8060601b61159457637448fbae5f526004601cfd5b61159d816118fd565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115c0611059565b73ffffffffffffffffffffffffffffffffffffffff1614806115ec57506115eb826002600117610f96565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061167e575061167d826119d2565b5b9050919050565b61169082825f611a4b565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c9576382b429005f526004601cfd5b565b6116d782826001611a4b565b5050565b5f6202a300905090565b638b78c6d81954331461171757638b78c6d8600c52335f52806020600c205416611716576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61177e611aa3565b156117f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117b857630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611849565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118b1576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118f4576390b8ec185f526004601cfd5b5f603452505050565b611905611aa3565b1561196a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a445750611a4382611aa7565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6d57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b195750611b1882611b20565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611ba757611ba66120c3565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c2081611bec565b8114611c2a575f80fd5b50565b5f81359050611c3b81611c17565b92915050565b5f60208284031215611c5657611c55611be4565b5b5f611c6384828501611c2d565b91505092915050565b5f8115159050919050565b611c8081611c6c565b82525050565b5f602082019050611c995f830184611c77565b92915050565b5f819050919050565b611cb181611c9f565b82525050565b5f602082019050611cca5f830184611ca8565b92915050565b611cd981611c9f565b8114611ce3575f80fd5b50565b5f81359050611cf481611cd0565b92915050565b5f60208284031215611d0f57611d0e611be4565b5b5f611d1c84828501611ce6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4e82611d25565b9050919050565b611d5e81611d44565b8114611d68575f80fd5b50565b5f81359050611d7981611d55565b92915050565b5f8060408385031215611d9557611d94611be4565b5b5f611da285828601611d6b565b9250506020611db385828601611ce6565b9150509250929050565b611dc681611bec565b82525050565b5f602082019050611ddf5f830184611dbd565b92915050565b5f60208284031215611dfa57611df9611be4565b5b5f611e0784828501611d6b565b91505092915050565b611e1981611d44565b82525050565b5f602082019050611e325f830184611e10565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5957611e58611e38565b5b8235905067ffffffffffffffff811115611e7657611e75611e3c565b5b602083019150836020820283011115611e9257611e91611e40565b5b9250929050565b5f8083601f840112611eae57611ead611e38565b5b8235905067ffffffffffffffff811115611ecb57611eca611e3c565b5b602083019150836020820283011115611ee757611ee6611e40565b5b9250929050565b5f805f8060408587031215611f0657611f05611be4565b5b5f85013567ffffffffffffffff811115611f2357611f22611be8565b5b611f2f87828801611e44565b9450945050602085013567ffffffffffffffff811115611f5257611f51611be8565b5b611f5e87828801611e99565b925092505092959194509250565b5f8083601f840112611f8157611f80611e38565b5b8235905067ffffffffffffffff811115611f9e57611f9d611e3c565b5b602083019150836001820283011115611fba57611fb9611e40565b5b9250929050565b5f8060208385031215611fd757611fd6611be4565b5b5f83013567ffffffffffffffff811115611ff457611ff3611be8565b5b61200085828601611f6c565b92509250509250929050565b5f60408201905061201f5f830185611ca8565b61202c6020830184611e10565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61207582612033565b61207f818561203d565b935061208f81856020860161204d565b6120988161205b565b840191505092915050565b5f6020820190508181035f8301526120bb818461206b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612101576121006120c3565b5b50565b5f819050612111826120f0565b919050565b5f61212082612104565b9050919050565b61213081612116565b82525050565b5f819050919050565b61214881612136565b82525050565b5f60ff82169050919050565b6121638161214e565b82525050565b5f60808201905061217c5f830187612127565b612189602083018661213f565b612196604083018561215a565b6121a36060830184611e10565b95945050505050565b6121b581612116565b82525050565b6121c481612136565b82525050565b6121d38161214e565b82525050565b6121e281611d44565b82525050565b608082015f8201516121fc5f8501826121ac565b50602082015161220f60208501826121bb565b50604082015161222260408501826121ca565b50606082015161223560608501826121d9565b50505050565b5f60808201905061224e5f8301846121e8565b92915050565b5f805f6040848603121561226b5761226a611be4565b5b5f61227886828701611d6b565b935050602084013567ffffffffffffffff81111561229957612298611be8565b5b6122a586828701611f6c565b92509250509250925092565b5f8083601f8401126122c6576122c5611e38565b5b8235905067ffffffffffffffff8111156122e3576122e2611e3c565b5b6020830191508360208202830111156122ff576122fe611e40565b5b9250929050565b5f805f806040858703121561231e5761231d611be4565b5b5f85013567ffffffffffffffff81111561233b5761233a611be8565b5b61234787828801611e44565b9450945050602085013567ffffffffffffffff81111561236a57612369611be8565b5b612376878288016122b1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123ba81611c6c565b81146123c4575f80fd5b50565b5f813590506123d5816123b1565b92915050565b5f602082840312156123f0576123ef611be4565b5b5f6123fd848285016123c7565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6124408261205b565b810181811067ffffffffffffffff8211171561245f5761245e61240a565b5b80604052505050565b5f612471611bdb565b905061247d8282612437565b919050565b5f80fd5b60028110612492575f80fd5b50565b5f813590506124a381612486565b92915050565b6124b281612136565b81146124bc575f80fd5b50565b5f813590506124cd816124a9565b92915050565b6124dc8161214e565b81146124e6575f80fd5b50565b5f813590506124f7816124d3565b92915050565b5f6080828403121561251257612511612406565b5b61251c6080612468565b90505f61252b84828501612495565b5f83015250602061253e848285016124bf565b6020830152506040612552848285016124e9565b604083015250606061256684828501611d6b565b60608301525092915050565b5f610100828403121561258857612587612406565b5b61259260a0612468565b90505f6125a184828501611d6b565b5f8301525060206125b484828501611ce6565b60208301525060406125c884828501611ce6565b60408301525060606125dc84828501611ce6565b60608301525060806125f0848285016124fd565b60808301525092915050565b5f610100828403121561261257612611611be4565b5b5f61261f84828501612572565b91505092915050565b5f60608201905061263b5f830186611e10565b6126486020830185611ca8565b6126556040830184611ca8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267b5761267a61240a565b5b6126848261205b565b9050602081019050919050565b828183375f83830152505050565b5f6126b16126ac84612661565b612468565b9050828152602081018484840111156126cd576126cc61265d565b5b6126d8848285612691565b509392505050565b5f82601f8301126126f4576126f3611e38565b5b813561270484826020860161269f565b91505092915050565b5f6040828403121561272257612721612406565b5b61272c6040612468565b90505f61273b84828501611d6b565b5f83015250602082013567ffffffffffffffff81111561275e5761275d612482565b5b61276a848285016126e0565b60208301525092915050565b5f6020828403121561278b5761278a611be4565b5b5f82013567ffffffffffffffff8111156127a8576127a7611be8565b5b6127b48482850161270d565b91505092915050565b5f815190506127cb81611cd0565b92915050565b5f602082840312156127e6576127e5611be4565b5b5f6127f3848285016127bd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61283382611c9f565b915061283e83611c9f565b9250828203905081811115612856576128556127fc565b5b92915050565b5f8160601b9050919050565b5f6128728261285c565b9050919050565b5f61288382612868565b9050919050565b61289b61289682611d44565b612879565b82525050565b5f819050919050565b6128bb6128b682611c9f565b6128a1565b82525050565b5f6128cc828661288a565b6014820191506128dc828561288a565b6014820191506128ec82846128aa565b602082019150819050949350505050565b5f61290782611d25565b9050919050565b612917816128fd565b8114612921575f80fd5b50565b5f813590506129328161290e565b92915050565b5f805f6060848603121561294f5761294e611be4565b5b5f61295c86828701612924565b935050602061296d86828701611ce6565b925050604061297e86828701611ce6565b9150509250925092565b61299181611c9f565b82525050565b602082015f8201516129ab5f850182612988565b50505050565b5f6020820190506129c45f830184612997565b92915050565b600381106129db576129da6120c3565b5b50565b5f8190506129eb826129ca565b919050565b5f6129fa826129de565b9050919050565b612a0a816129f0565b82525050565b5f82825260208201905092915050565b5f612a2a82612033565b612a348185612a10565b9350612a4481856020860161204d565b612a4d8161205b565b840191505092915050565b5f608083015f830151612a6d5f860182612a01565b506020830151612a8060208601826121d9565b506040830151612a9360408601826121d9565b5060608301518482036060860152612aab8282612a20565b9150508091505092915050565b5f6020820190508181035f830152612ad08184612a58565b905092915050565b5f60408284031215612aed57612aec612406565b5b612af76040612468565b90505f82013567ffffffffffffffff811115612b1657612b15612482565b5b612b22848285016126e0565b5f83015250602082013567ffffffffffffffff811115612b4557612b44612482565b5b612b51848285016126e0565b60208301525092915050565b5f60208284031215612b7257612b71611be4565b5b5f82013567ffffffffffffffff811115612b8f57612b8e611be8565b5b612b9b84828501612ad8565b91505092915050565b5f612bae82611c9f565b9150612bb983611c9f565b9250828202612bc781611c9f565b91508282048414831517612bde57612bdd6127fc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1c82611c9f565b9150612c2783611c9f565b925082612c3757612c36612be5565b5b828204905092915050565b5f612c4c82611c9f565b9150612c5783611c9f565b9250828201905080821115612c6f57612c6e6127fc565b5b9291505056fea26469706673582212206fc3fa5b6aa31318292541af8c0fe58ca66ae2f228656b14246c0a3d17700dcc64736f6c634300081a0033",e5={},a5={},b0={_format:Qf,contractName:Yf,sourceName:Jf,abi:Xf,bytecode:f5,deployedBytecode:b5,linkReferences:e5,deployedLinkReferences:a5},d5="hh-sol-artifact-1",t5="ERC20VariableIncentive",c5="contracts/incentives/ERC20VariableIncentive.sol",n5=[{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:!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:"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:[],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"}],i5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612690806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611891565b610774565b60405161022491906118d6565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611907565b60405180910390f35b610271600480360381019061026c919061194a565b6107f5565b005b61028d600480360381019061028891906119cf565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119cf565b610818565b6040516102c291906118d6565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611907565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a1c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a35565b6108ab565b60405161035c9190611907565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611a6f565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b3e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c11565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c11565b610bb4565b604051610413929190611c5c565b60405180910390f35b610436600480360381019061043191906119cf565b610d1e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c11565b610d34565b60405161046b9190611cf3565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119cf565b610e02565b6040516104a791906118d6565b60405180910390f35b6104b8610e19565b005b6104c2610e52565b005b3480156104cf575f80fd5b506104d8610e65565b6040516104e59190611907565b60405180910390f35b3480156104f9575f80fd5b50610502610e6a565b60405161050f9190611a6f565b60405180910390f35b348015610523575f80fd5b5061052c610e92565b6040516105399190611907565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d13565b610e98565b60405161057591906118d6565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dc5565b6110a7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a35565b61115d565b6040516105d991906118d6565b60405180910390f35b3480156105ed575f80fd5b506105f661117a565b6040516106039190611907565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d13565b611180565b60405161063f91906118d6565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dc5565b611193565b005b34801561067b575f80fd5b50610684611249565b6040516106919190611907565b60405180910390f35b3480156106a5575f80fd5b506106ae61124f565b6040516106bb9190611907565b60405180910390f35b6106de60048036038101906106d99190611a35565b611254565b005b6106fa60048036038101906106f59190611a35565b611292565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a35565b6112bb565b60405161072f91906118d6565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a35565b61130e565b60405161076b9190611907565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611327565b5b9050919050565b5f8054905090565b6107ff33826113a0565b50565b61080a6113af565b61081482826113e6565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c6113f6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611400565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e43565b5b90506020020160208101906109699190611e9a565b905060011515811515036109ae576109a987878481811061098d5761098c611e43565b5b90506020020160208101906109a29190611a35565b60016113e6565b6109e1565b6109e08787848181106109c4576109c3611e43565b5b90506020020160208101906109d99190611a35565b60016113a0565b5b508080600101915050610935565b505050505050565b5f610a00611435565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611fa6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145e90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fd1565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a33611491565b610b75336001611567565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc1816115a8565b5f8585810190610bd1919061211f565b90505f8160200151806020019051810190610bec919061217a565b90508060025f828254610bff91906121d2565b92505081905550610c55825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115cf9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc99392919061226a565b604051602081830303815290604052604051610ce59190611cf3565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d266113af565b610d3082826113a0565b5050565b60605f808484810190610d4791906122e1565b9250509150604051806080016040528060016002811115610d6b57610d6a612331565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc79190612387565b604051602081830303815290604052815250604051602001610de9919061249d565b6040516020818303038152906040529250505092915050565b5f8082610e0e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e5a6113af565b610e635f611618565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ea16113af565b5f8383810190610eb19190612542565b90505f8160200151806020019051810190610ecc919061217a565b90505f610ed8876116de565b610f0e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f1e57819050610f41565b670de0b6b3a7640000825f54610f349190612589565b610f3e91906125f7565b90505b60025481600554610f529190612627565b1115610f8a576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f9b9190612627565b92505081905550600160045f828254610fb49190612627565b92505081905550611007878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115cf9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110759392919061226a565b6040516020818303038152906040526040516110919190611cf3565b60405180910390a2600193505050509392505050565b60026110b281611400565b8282905085859050146110f1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111555761114886868381811061111457611113611e43565b5b90506020020160208101906111299190611a35565b85858481811061113c5761113b611e43565b5b905060200201356113e6565b80806001019150506110f3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f61118a846116de565b90509392505050565b600261119e81611400565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff611e43565b5b90506020020160208101906112159190611a35565b85858481811061122857611227611e43565b5b905060200201356113a0565b80806001019150506111df565b505050505050565b60045481565b600181565b61125c6113af565b63389a75e1600c52805f526020600c20805442111561128257636f5e88185f526004601cfd5b5f81555061128f81611618565b50565b61129a6113af565b8060601b6112af57637448fbae5f526004601cfd5b6112b881611618565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112db610e6a565b73ffffffffffffffffffffffffffffffffffffffff1614806113075750611306826002600117610e02565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113995750611398826116ed565b5b9050919050565b6113ab82825f611766565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113e4576382b429005f526004601cfd5b565b6113f282826001611766565b5050565b5f6202a300905090565b638b78c6d81954331461143257638b78c6d8600c52335f52806020600c205416611431576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114996117be565b15611511577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114d357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611564565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115cc576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661160f576390b8ec185f526004601cfd5b5f603452505050565b6116206117be565b15611685577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061175f575061175e826117c2565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361178857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118708161183c565b811461187a575f80fd5b50565b5f8135905061188b81611867565b92915050565b5f602082840312156118a6576118a5611834565b5b5f6118b38482850161187d565b91505092915050565b5f8115159050919050565b6118d0816118bc565b82525050565b5f6020820190506118e95f8301846118c7565b92915050565b5f819050919050565b611901816118ef565b82525050565b5f60208201905061191a5f8301846118f8565b92915050565b611929816118ef565b8114611933575f80fd5b50565b5f8135905061194481611920565b92915050565b5f6020828403121561195f5761195e611834565b5b5f61196c84828501611936565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61199e82611975565b9050919050565b6119ae81611994565b81146119b8575f80fd5b50565b5f813590506119c9816119a5565b92915050565b5f80604083850312156119e5576119e4611834565b5b5f6119f2858286016119bb565b9250506020611a0385828601611936565b9150509250929050565b611a168161183c565b82525050565b5f602082019050611a2f5f830184611a0d565b92915050565b5f60208284031215611a4a57611a49611834565b5b5f611a57848285016119bb565b91505092915050565b611a6981611994565b82525050565b5f602082019050611a825f830184611a60565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa957611aa8611a88565b5b8235905067ffffffffffffffff811115611ac657611ac5611a8c565b5b602083019150836020820283011115611ae257611ae1611a90565b5b9250929050565b5f8083601f840112611afe57611afd611a88565b5b8235905067ffffffffffffffff811115611b1b57611b1a611a8c565b5b602083019150836020820283011115611b3757611b36611a90565b5b9250929050565b5f805f8060408587031215611b5657611b55611834565b5b5f85013567ffffffffffffffff811115611b7357611b72611838565b5b611b7f87828801611a94565b9450945050602085013567ffffffffffffffff811115611ba257611ba1611838565b5b611bae87828801611ae9565b925092505092959194509250565b5f8083601f840112611bd157611bd0611a88565b5b8235905067ffffffffffffffff811115611bee57611bed611a8c565b5b602083019150836001820283011115611c0a57611c09611a90565b5b9250929050565b5f8060208385031215611c2757611c26611834565b5b5f83013567ffffffffffffffff811115611c4457611c43611838565b5b611c5085828601611bbc565b92509250509250929050565b5f604082019050611c6f5f8301856118f8565b611c7c6020830184611a60565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cc582611c83565b611ccf8185611c8d565b9350611cdf818560208601611c9d565b611ce881611cab565b840191505092915050565b5f6020820190508181035f830152611d0b8184611cbb565b905092915050565b5f805f60408486031215611d2a57611d29611834565b5b5f611d37868287016119bb565b935050602084013567ffffffffffffffff811115611d5857611d57611838565b5b611d6486828701611bbc565b92509250509250925092565b5f8083601f840112611d8557611d84611a88565b5b8235905067ffffffffffffffff811115611da257611da1611a8c565b5b602083019150836020820283011115611dbe57611dbd611a90565b5b9250929050565b5f805f8060408587031215611ddd57611ddc611834565b5b5f85013567ffffffffffffffff811115611dfa57611df9611838565b5b611e0687828801611a94565b9450945050602085013567ffffffffffffffff811115611e2957611e28611838565b5b611e3587828801611d70565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e79816118bc565b8114611e83575f80fd5b50565b5f81359050611e9481611e70565b92915050565b5f60208284031215611eaf57611eae611834565b5b5f611ebc84828501611e86565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611eff82611cab565b810181811067ffffffffffffffff82111715611f1e57611f1d611ec9565b5b80604052505050565b5f611f3061182b565b9050611f3c8282611ef6565b919050565b5f80fd5b5f60608284031215611f5a57611f59611ec5565b5b611f646060611f27565b90505f611f73848285016119bb565b5f830152506020611f8684828501611936565b6020830152506040611f9a84828501611936565b60408301525092915050565b5f60608284031215611fbb57611fba611834565b5b5f611fc884828501611f45565b91505092915050565b5f606082019050611fe45f830186611a60565b611ff160208301856118f8565b611ffe60408301846118f8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561202457612023611ec9565b5b61202d82611cab565b9050602081019050919050565b828183375f83830152505050565b5f61205a6120558461200a565b611f27565b90508281526020810184848401111561207657612075612006565b5b61208184828561203a565b509392505050565b5f82601f83011261209d5761209c611a88565b5b81356120ad848260208601612048565b91505092915050565b5f604082840312156120cb576120ca611ec5565b5b6120d56040611f27565b90505f6120e4848285016119bb565b5f83015250602082013567ffffffffffffffff81111561210757612106611f41565b5b61211384828501612089565b60208301525092915050565b5f6020828403121561213457612133611834565b5b5f82013567ffffffffffffffff81111561215157612150611838565b5b61215d848285016120b6565b91505092915050565b5f8151905061217481611920565b92915050565b5f6020828403121561218f5761218e611834565b5b5f61219c84828501612166565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121dc826118ef565b91506121e7836118ef565b92508282039050818111156121ff576121fe6121a5565b5b92915050565b5f8160601b9050919050565b5f61221b82612205565b9050919050565b5f61222c82612211565b9050919050565b61224461223f82611994565b612222565b82525050565b5f819050919050565b61226461225f826118ef565b61224a565b82525050565b5f6122758286612233565b6014820191506122858285612233565b6014820191506122958284612253565b602082019150819050949350505050565b5f6122b082611975565b9050919050565b6122c0816122a6565b81146122ca575f80fd5b50565b5f813590506122db816122b7565b92915050565b5f805f606084860312156122f8576122f7611834565b5b5f612305868287016122cd565b935050602061231686828701611936565b925050604061232786828701611936565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b612367816118ef565b82525050565b602082015f8201516123815f85018261235e565b50505050565b5f60208201905061239a5f83018461236d565b92915050565b600381106123b1576123b0612331565b5b50565b5f8190506123c1826123a0565b919050565b5f6123d0826123b4565b9050919050565b6123e0816123c6565b82525050565b6123ef81611994565b82525050565b5f82825260208201905092915050565b5f61240f82611c83565b61241981856123f5565b9350612429818560208601611c9d565b61243281611cab565b840191505092915050565b5f608083015f8301516124525f8601826123d7565b50602083015161246560208601826123e6565b50604083015161247860408601826123e6565b50606083015184820360608601526124908282612405565b9150508091505092915050565b5f6020820190508181035f8301526124b5818461243d565b905092915050565b5f604082840312156124d2576124d1611ec5565b5b6124dc6040611f27565b90505f82013567ffffffffffffffff8111156124fb576124fa611f41565b5b61250784828501612089565b5f83015250602082013567ffffffffffffffff81111561252a57612529611f41565b5b61253684828501612089565b60208301525092915050565b5f6020828403121561255757612556611834565b5b5f82013567ffffffffffffffff81111561257457612573611838565b5b612580848285016124bd565b91505092915050565b5f612593826118ef565b915061259e836118ef565b92508282026125ac816118ef565b915082820484148315176125c3576125c26121a5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612601826118ef565b915061260c836118ef565b92508261261c5761261b6125ca565b5b828204905092915050565b5f612631826118ef565b915061263c836118ef565b9250828201905080821115612654576126536121a5565b5b9291505056fea2646970667358221220e0a05e959762110896c996ee249bba62b8cb954dbaa9a610a5039fd5f9b3e46464736f6c634300081a0033",s5="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611891565b610774565b60405161022491906118d6565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611907565b60405180910390f35b610271600480360381019061026c919061194a565b6107f5565b005b61028d600480360381019061028891906119cf565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119cf565b610818565b6040516102c291906118d6565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611907565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a1c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a35565b6108ab565b60405161035c9190611907565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611a6f565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b3e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c11565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c11565b610bb4565b604051610413929190611c5c565b60405180910390f35b610436600480360381019061043191906119cf565b610d1e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c11565b610d34565b60405161046b9190611cf3565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119cf565b610e02565b6040516104a791906118d6565b60405180910390f35b6104b8610e19565b005b6104c2610e52565b005b3480156104cf575f80fd5b506104d8610e65565b6040516104e59190611907565b60405180910390f35b3480156104f9575f80fd5b50610502610e6a565b60405161050f9190611a6f565b60405180910390f35b348015610523575f80fd5b5061052c610e92565b6040516105399190611907565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d13565b610e98565b60405161057591906118d6565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dc5565b6110a7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a35565b61115d565b6040516105d991906118d6565b60405180910390f35b3480156105ed575f80fd5b506105f661117a565b6040516106039190611907565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d13565b611180565b60405161063f91906118d6565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dc5565b611193565b005b34801561067b575f80fd5b50610684611249565b6040516106919190611907565b60405180910390f35b3480156106a5575f80fd5b506106ae61124f565b6040516106bb9190611907565b60405180910390f35b6106de60048036038101906106d99190611a35565b611254565b005b6106fa60048036038101906106f59190611a35565b611292565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a35565b6112bb565b60405161072f91906118d6565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a35565b61130e565b60405161076b9190611907565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611327565b5b9050919050565b5f8054905090565b6107ff33826113a0565b50565b61080a6113af565b61081482826113e6565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c6113f6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611400565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e43565b5b90506020020160208101906109699190611e9a565b905060011515811515036109ae576109a987878481811061098d5761098c611e43565b5b90506020020160208101906109a29190611a35565b60016113e6565b6109e1565b6109e08787848181106109c4576109c3611e43565b5b90506020020160208101906109d99190611a35565b60016113a0565b5b508080600101915050610935565b505050505050565b5f610a00611435565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611fa6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145e90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fd1565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a33611491565b610b75336001611567565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc1816115a8565b5f8585810190610bd1919061211f565b90505f8160200151806020019051810190610bec919061217a565b90508060025f828254610bff91906121d2565b92505081905550610c55825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115cf9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc99392919061226a565b604051602081830303815290604052604051610ce59190611cf3565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d266113af565b610d3082826113a0565b5050565b60605f808484810190610d4791906122e1565b9250509150604051806080016040528060016002811115610d6b57610d6a612331565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc79190612387565b604051602081830303815290604052815250604051602001610de9919061249d565b6040516020818303038152906040529250505092915050565b5f8082610e0e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e5a6113af565b610e635f611618565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ea16113af565b5f8383810190610eb19190612542565b90505f8160200151806020019051810190610ecc919061217a565b90505f610ed8876116de565b610f0e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f1e57819050610f41565b670de0b6b3a7640000825f54610f349190612589565b610f3e91906125f7565b90505b60025481600554610f529190612627565b1115610f8a576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f9b9190612627565b92505081905550600160045f828254610fb49190612627565b92505081905550611007878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115cf9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110759392919061226a565b6040516020818303038152906040526040516110919190611cf3565b60405180910390a2600193505050509392505050565b60026110b281611400565b8282905085859050146110f1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111555761114886868381811061111457611113611e43565b5b90506020020160208101906111299190611a35565b85858481811061113c5761113b611e43565b5b905060200201356113e6565b80806001019150506110f3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f61118a846116de565b90509392505050565b600261119e81611400565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff611e43565b5b90506020020160208101906112159190611a35565b85858481811061122857611227611e43565b5b905060200201356113a0565b80806001019150506111df565b505050505050565b60045481565b600181565b61125c6113af565b63389a75e1600c52805f526020600c20805442111561128257636f5e88185f526004601cfd5b5f81555061128f81611618565b50565b61129a6113af565b8060601b6112af57637448fbae5f526004601cfd5b6112b881611618565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112db610e6a565b73ffffffffffffffffffffffffffffffffffffffff1614806113075750611306826002600117610e02565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113995750611398826116ed565b5b9050919050565b6113ab82825f611766565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113e4576382b429005f526004601cfd5b565b6113f282826001611766565b5050565b5f6202a300905090565b638b78c6d81954331461143257638b78c6d8600c52335f52806020600c205416611431576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114996117be565b15611511577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114d357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611564565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115cc576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661160f576390b8ec185f526004601cfd5b5f603452505050565b6116206117be565b15611685577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061175f575061175e826117c2565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361178857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118708161183c565b811461187a575f80fd5b50565b5f8135905061188b81611867565b92915050565b5f602082840312156118a6576118a5611834565b5b5f6118b38482850161187d565b91505092915050565b5f8115159050919050565b6118d0816118bc565b82525050565b5f6020820190506118e95f8301846118c7565b92915050565b5f819050919050565b611901816118ef565b82525050565b5f60208201905061191a5f8301846118f8565b92915050565b611929816118ef565b8114611933575f80fd5b50565b5f8135905061194481611920565b92915050565b5f6020828403121561195f5761195e611834565b5b5f61196c84828501611936565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61199e82611975565b9050919050565b6119ae81611994565b81146119b8575f80fd5b50565b5f813590506119c9816119a5565b92915050565b5f80604083850312156119e5576119e4611834565b5b5f6119f2858286016119bb565b9250506020611a0385828601611936565b9150509250929050565b611a168161183c565b82525050565b5f602082019050611a2f5f830184611a0d565b92915050565b5f60208284031215611a4a57611a49611834565b5b5f611a57848285016119bb565b91505092915050565b611a6981611994565b82525050565b5f602082019050611a825f830184611a60565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa957611aa8611a88565b5b8235905067ffffffffffffffff811115611ac657611ac5611a8c565b5b602083019150836020820283011115611ae257611ae1611a90565b5b9250929050565b5f8083601f840112611afe57611afd611a88565b5b8235905067ffffffffffffffff811115611b1b57611b1a611a8c565b5b602083019150836020820283011115611b3757611b36611a90565b5b9250929050565b5f805f8060408587031215611b5657611b55611834565b5b5f85013567ffffffffffffffff811115611b7357611b72611838565b5b611b7f87828801611a94565b9450945050602085013567ffffffffffffffff811115611ba257611ba1611838565b5b611bae87828801611ae9565b925092505092959194509250565b5f8083601f840112611bd157611bd0611a88565b5b8235905067ffffffffffffffff811115611bee57611bed611a8c565b5b602083019150836001820283011115611c0a57611c09611a90565b5b9250929050565b5f8060208385031215611c2757611c26611834565b5b5f83013567ffffffffffffffff811115611c4457611c43611838565b5b611c5085828601611bbc565b92509250509250929050565b5f604082019050611c6f5f8301856118f8565b611c7c6020830184611a60565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cc582611c83565b611ccf8185611c8d565b9350611cdf818560208601611c9d565b611ce881611cab565b840191505092915050565b5f6020820190508181035f830152611d0b8184611cbb565b905092915050565b5f805f60408486031215611d2a57611d29611834565b5b5f611d37868287016119bb565b935050602084013567ffffffffffffffff811115611d5857611d57611838565b5b611d6486828701611bbc565b92509250509250925092565b5f8083601f840112611d8557611d84611a88565b5b8235905067ffffffffffffffff811115611da257611da1611a8c565b5b602083019150836020820283011115611dbe57611dbd611a90565b5b9250929050565b5f805f8060408587031215611ddd57611ddc611834565b5b5f85013567ffffffffffffffff811115611dfa57611df9611838565b5b611e0687828801611a94565b9450945050602085013567ffffffffffffffff811115611e2957611e28611838565b5b611e3587828801611d70565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e79816118bc565b8114611e83575f80fd5b50565b5f81359050611e9481611e70565b92915050565b5f60208284031215611eaf57611eae611834565b5b5f611ebc84828501611e86565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611eff82611cab565b810181811067ffffffffffffffff82111715611f1e57611f1d611ec9565b5b80604052505050565b5f611f3061182b565b9050611f3c8282611ef6565b919050565b5f80fd5b5f60608284031215611f5a57611f59611ec5565b5b611f646060611f27565b90505f611f73848285016119bb565b5f830152506020611f8684828501611936565b6020830152506040611f9a84828501611936565b60408301525092915050565b5f60608284031215611fbb57611fba611834565b5b5f611fc884828501611f45565b91505092915050565b5f606082019050611fe45f830186611a60565b611ff160208301856118f8565b611ffe60408301846118f8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561202457612023611ec9565b5b61202d82611cab565b9050602081019050919050565b828183375f83830152505050565b5f61205a6120558461200a565b611f27565b90508281526020810184848401111561207657612075612006565b5b61208184828561203a565b509392505050565b5f82601f83011261209d5761209c611a88565b5b81356120ad848260208601612048565b91505092915050565b5f604082840312156120cb576120ca611ec5565b5b6120d56040611f27565b90505f6120e4848285016119bb565b5f83015250602082013567ffffffffffffffff81111561210757612106611f41565b5b61211384828501612089565b60208301525092915050565b5f6020828403121561213457612133611834565b5b5f82013567ffffffffffffffff81111561215157612150611838565b5b61215d848285016120b6565b91505092915050565b5f8151905061217481611920565b92915050565b5f6020828403121561218f5761218e611834565b5b5f61219c84828501612166565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121dc826118ef565b91506121e7836118ef565b92508282039050818111156121ff576121fe6121a5565b5b92915050565b5f8160601b9050919050565b5f61221b82612205565b9050919050565b5f61222c82612211565b9050919050565b61224461223f82611994565b612222565b82525050565b5f819050919050565b61226461225f826118ef565b61224a565b82525050565b5f6122758286612233565b6014820191506122858285612233565b6014820191506122958284612253565b602082019150819050949350505050565b5f6122b082611975565b9050919050565b6122c0816122a6565b81146122ca575f80fd5b50565b5f813590506122db816122b7565b92915050565b5f805f606084860312156122f8576122f7611834565b5b5f612305868287016122cd565b935050602061231686828701611936565b925050604061232786828701611936565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b612367816118ef565b82525050565b602082015f8201516123815f85018261235e565b50505050565b5f60208201905061239a5f83018461236d565b92915050565b600381106123b1576123b0612331565b5b50565b5f8190506123c1826123a0565b919050565b5f6123d0826123b4565b9050919050565b6123e0816123c6565b82525050565b6123ef81611994565b82525050565b5f82825260208201905092915050565b5f61240f82611c83565b61241981856123f5565b9350612429818560208601611c9d565b61243281611cab565b840191505092915050565b5f608083015f8301516124525f8601826123d7565b50602083015161246560208601826123e6565b50604083015161247860408601826123e6565b50606083015184820360608601526124908282612405565b9150508091505092915050565b5f6020820190508181035f8301526124b5818461243d565b905092915050565b5f604082840312156124d2576124d1611ec5565b5b6124dc6040611f27565b90505f82013567ffffffffffffffff8111156124fb576124fa611f41565b5b61250784828501612089565b5f83015250602082013567ffffffffffffffff81111561252a57612529611f41565b5b61253684828501612089565b60208301525092915050565b5f6020828403121561255757612556611834565b5b5f82013567ffffffffffffffff81111561257457612573611838565b5b612580848285016124bd565b91505092915050565b5f612593826118ef565b915061259e836118ef565b92508282026125ac816118ef565b915082820484148315176125c3576125c26121a5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612601826118ef565b915061260c836118ef565b92508261261c5761261b6125ca565b5b828204905092915050565b5f612631826118ef565b915061263c836118ef565b9250828201905080821115612654576126536121a5565b5b9291505056fea2646970667358221220e0a05e959762110896c996ee249bba62b8cb954dbaa9a610a5039fd5f9b3e46464736f6c634300081a0033",p5={},y5={},e0={_format:d5,contractName:t5,sourceName:c5,abi:n5,bytecode:i5,deployedBytecode:s5,linkReferences:p5,deployedLinkReferences:y5},r5="hh-sol-artifact-1",u5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",l5=[{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:!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"}],m5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613272806100bd5f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c87565b61086c565b6040516102509190611ccc565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cfd565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611cfd565b60405180910390f35b6102c760048036038101906102c29190611d40565b61095b565b005b6102e360048036038101906102de9190611dc5565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dc5565b61097e565b6040516103189190611ccc565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611cfd565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e12565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e2b565b610a11565b6040516103b29190611cfd565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611e65565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f34565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190612007565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190612007565b610e11565b604051610469929190612052565b60405180910390f35b61048c60048036038101906104879190611dc5565b611043565b005b348015610499575f80fd5b506104b460048036038101906104af9190612007565b611059565b6040516104c191906120e9565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dc5565b61113c565b6040516104fd9190611ccc565b60405180910390f35b61050e611153565b005b34801561051b575f80fd5b5061052461118c565b60405161053191906120e9565b60405180910390f35b610542611218565b005b34801561054f575f80fd5b5061055861122b565b6040516105659190611cfd565b60405180910390f35b348015610579575f80fd5b50610582611230565b60405161058f9190611e65565b60405180910390f35b3480156105a3575f80fd5b506105ac611258565b6040516105b99190611cfd565b60405180910390f35b3480156105cd575f80fd5b506105d661125e565b6040516105e3919061217c565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d9190612195565b611270565b60405161061f9190611ccc565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190612247565b611482565b60405161065b9190611e12565b60405180910390f35b34801561066f575f80fd5b5061068a6004803603810190610685919061231e565b611499565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123cf565b61154f565b6040516106bf9190611ccc565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190612195565b61156c565b6040516106fb9190611ccc565b60405180910390f35b34801561070f575f80fd5b5061072a6004803603810190610725919061231e565b61158d565b005b348015610737575f80fd5b50610740611643565b60405161074d9190611cfd565b60405180910390f35b348015610761575f80fd5b5061076a611649565b6040516107779190611cfd565b60405180910390f35b61079a60048036038101906107959190611e2b565b61164e565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123fa565b61168c565b6040516107cf9190611e12565b60405180910390f35b6107f260048036038101906107ed9190611e2b565b6116a1565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e2b565b6116ca565b6040516108279190611ccc565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e2b565b61171d565b6040516108639190611cfd565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610946575061094582611736565b5b9050919050565b5f8054905090565b60045481565b61096533826117af565b50565b6109706117be565b61097a82826117f5565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a2611805565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a8161180f565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612490565b5b9050602002016020810190610acf91906124e7565b90506001151581151503610b1457610b0f878784818110610af357610af2612490565b5b9050602002016020810190610b089190611e2b565b60016117f5565b610b47565b610b46878784818110610b2a57610b29612490565b5b9050602002016020810190610b3f9190611e2b565b60016117af565b5b508080600101915050610a9b565b505050505050565b5f610b66611844565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba99190612745565b905060015f81905550600180811115610bc557610bc4612109565b5b81602001516001811115610bdc57610bdb612109565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c9292919061278c565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd191906127c7565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e939291906127f2565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d91612109565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612a21565b50610dca3361186d565b610dd5336001611943565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e81611984565b5f8585810190610e2e9190612b59565b90505f8160200151806020019051810190610e4991906127c7565b9050600754600354610e5b9190612bcd565b811115610ec0573382604051602001610e749190612c91565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612cb1565b60405180910390fd5b8060035f828254610ed19190612bcd565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610f43959493929190612cdf565b5f604051808303815f87803b158015610f5a575f80fd5b505af1158015610f6c573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001610fee959493929190612dd6565b60405160208183030381529060405260405161100a91906120e9565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b61104b6117be565b61105582826117af565b5050565b60605f838381019061106b9190612745565b9050604051806080016040528060028081111561108b5761108a612109565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111029190612e8c565b6040516020818303038152906040528152506040516020016111249190612f52565b60405160208183030381529060405291505092915050565b5f808261114885610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461119990612854565b80601f01602080910402602001604051908101604052809291908181526020018280546111c590612854565b80156112105780601f106111e757610100808354040283529160200191611210565b820191905f5260205f20905b8154815290600101906020018083116111f357829003601f168201915b505050505081565b6112206117be565b6112295f6119ab565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112796117be565b5f6112848484611a71565b90505f600181111561129957611298612109565b5b60025f9054906101000a900460ff1660018111156112ba576112b9612109565b5b03611476576112c881611aad565b6112fe576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f81548092919061131090612f72565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b81526004016113a49695949392919061301e565b5f604051808303815f87803b1580156113bb575f80fd5b505af11580156113cd573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114489695949392919061309c565b60405160208183030381529060405260405161146491906120e9565b60405180910390a2600191505061147b565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b60026114a48161180f565b8282905085859050146114e3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115475761153a86868381811061150657611505612490565b5b905060200201602081019061151b9190611e2b565b85858481811061152e5761152d612490565b5b905060200201356117f5565b80806001019150506114e5565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115788484611a71565b905061158381611aad565b9150509392505050565b60026115988161180f565b8282905085859050146115d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561163b5761162e8686838181106115fa576115f9612490565b5b905060200201602081019061160f9190611e2b565b85858481811061162257611621612490565b5b905060200201356117af565b80806001019150506115d9565b505050505050565b60075481565b600181565b6116566117be565b63389a75e1600c52805f526020600c20805442111561167c57636f5e88185f526004601cfd5b5f815550611689816119ab565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a96117be565b8060601b6116be57637448fbae5f526004601cfd5b6116c7816119ab565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116ea611230565b73ffffffffffffffffffffffffffffffffffffffff161480611716575061171582600260011761113c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117a857506117a782611ae3565b5b9050919050565b6117ba82825f611b5c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117f3576382b429005f526004601cfd5b565b61180182826001611b5c565b5050565b5f6202a300905090565b638b78c6d81954331461184157638b78c6d8600c52335f52806020600c205416611840576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611875611bb4565b156118ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611940565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166119a8576382b429005f526004601cfd5b50565b6119b3611bb4565b15611a18577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a6e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a82919061317d565b90505f8160200151806020019051810190611a9d9190613211565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611adc5750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b555750611b5482611bb8565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c6681611c32565b8114611c70575f80fd5b50565b5f81359050611c8181611c5d565b92915050565b5f60208284031215611c9c57611c9b611c2a565b5b5f611ca984828501611c73565b91505092915050565b5f8115159050919050565b611cc681611cb2565b82525050565b5f602082019050611cdf5f830184611cbd565b92915050565b5f819050919050565b611cf781611ce5565b82525050565b5f602082019050611d105f830184611cee565b92915050565b611d1f81611ce5565b8114611d29575f80fd5b50565b5f81359050611d3a81611d16565b92915050565b5f60208284031215611d5557611d54611c2a565b5b5f611d6284828501611d2c565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9482611d6b565b9050919050565b611da481611d8a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f8060408385031215611ddb57611dda611c2a565b5b5f611de885828601611db1565b9250506020611df985828601611d2c565b9150509250929050565b611e0c81611c32565b82525050565b5f602082019050611e255f830184611e03565b92915050565b5f60208284031215611e4057611e3f611c2a565b5b5f611e4d84828501611db1565b91505092915050565b611e5f81611d8a565b82525050565b5f602082019050611e785f830184611e56565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9f57611e9e611e7e565b5b8235905067ffffffffffffffff811115611ebc57611ebb611e82565b5b602083019150836020820283011115611ed857611ed7611e86565b5b9250929050565b5f8083601f840112611ef457611ef3611e7e565b5b8235905067ffffffffffffffff811115611f1157611f10611e82565b5b602083019150836020820283011115611f2d57611f2c611e86565b5b9250929050565b5f805f8060408587031215611f4c57611f4b611c2a565b5b5f85013567ffffffffffffffff811115611f6957611f68611c2e565b5b611f7587828801611e8a565b9450945050602085013567ffffffffffffffff811115611f9857611f97611c2e565b5b611fa487828801611edf565b925092505092959194509250565b5f8083601f840112611fc757611fc6611e7e565b5b8235905067ffffffffffffffff811115611fe457611fe3611e82565b5b60208301915083600182028301111561200057611fff611e86565b5b9250929050565b5f806020838503121561201d5761201c611c2a565b5b5f83013567ffffffffffffffff81111561203a57612039611c2e565b5b61204685828601611fb2565b92509250509250929050565b5f6040820190506120655f830185611cee565b6120726020830184611e56565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120bb82612079565b6120c58185612083565b93506120d5818560208601612093565b6120de816120a1565b840191505092915050565b5f6020820190508181035f83015261210181846120b1565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061214757612146612109565b5b50565b5f81905061215782612136565b919050565b5f6121668261214a565b9050919050565b6121768161215c565b82525050565b5f60208201905061218f5f83018461216d565b92915050565b5f805f604084860312156121ac576121ab611c2a565b5b5f6121b986828701611db1565b935050602084013567ffffffffffffffff8111156121da576121d9611c2e565b5b6121e686828701611fb2565b92509250509250925092565b5f8083601f84011261220757612206611e7e565b5b8235905067ffffffffffffffff81111561222457612223611e82565b5b6020830191508360208202830111156122405761223f611e86565b5b9250929050565b5f805f805f805f8060a0898b03121561226357612262611c2a565b5b5f6122708b828c01611db1565b98505060206122818b828c01611db1565b975050604089013567ffffffffffffffff8111156122a2576122a1611c2e565b5b6122ae8b828c016121f2565b9650965050606089013567ffffffffffffffff8111156122d1576122d0611c2e565b5b6122dd8b828c016121f2565b9450945050608089013567ffffffffffffffff811115612300576122ff611c2e565b5b61230c8b828c01611fb2565b92509250509295985092959890939650565b5f805f806040858703121561233657612335611c2a565b5b5f85013567ffffffffffffffff81111561235357612352611c2e565b5b61235f87828801611e8a565b9450945050602085013567ffffffffffffffff81111561238257612381611c2e565b5b61238e878288016121f2565b925092505092959194509250565b5f819050919050565b6123ae8161239c565b81146123b8575f80fd5b50565b5f813590506123c9816123a5565b92915050565b5f602082840312156123e4576123e3611c2a565b5b5f6123f1848285016123bb565b91505092915050565b5f805f805f8060a0878903121561241457612413611c2a565b5b5f61242189828a01611db1565b965050602061243289828a01611db1565b955050604061244389828a01611d2c565b945050606061245489828a01611d2c565b935050608087013567ffffffffffffffff81111561247557612474611c2e565b5b61248189828a01611fb2565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124c681611cb2565b81146124d0575f80fd5b50565b5f813590506124e1816124bd565b92915050565b5f602082840312156124fc576124fb611c2a565b5b5f612509848285016124d3565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254c826120a1565b810181811067ffffffffffffffff8211171561256b5761256a612516565b5b80604052505050565b5f61257d611c21565b90506125898282612543565b919050565b5f80fd5b5f61259c82611d8a565b9050919050565b6125ac81612592565b81146125b6575f80fd5b50565b5f813590506125c7816125a3565b92915050565b600281106125d9575f80fd5b50565b5f813590506125ea816125cd565b92915050565b5f80fd5b5f67ffffffffffffffff82111561260e5761260d612516565b5b612617826120a1565b9050602081019050919050565b828183375f83830152505050565b5f61264461263f846125f4565b612574565b9050828152602081018484840111156126605761265f6125f0565b5b61266b848285612624565b509392505050565b5f82601f83011261268757612686611e7e565b5b8135612697848260208601612632565b91505092915050565b5f60a082840312156126b5576126b4612512565b5b6126bf60a0612574565b90505f6126ce848285016125b9565b5f8301525060206126e1848285016125dc565b60208301525060406126f584828501611d2c565b604083015250606061270984828501611d2c565b606083015250608082013567ffffffffffffffff81111561272d5761272c61258e565b5b61273984828501612673565b60808301525092915050565b5f6020828403121561275a57612759611c2a565b5b5f82013567ffffffffffffffff81111561277757612776611c2e565b5b612783848285016126a0565b91505092915050565b5f60408201905061279f5f830185611e56565b6127ac6020830184611cee565b9392505050565b5f815190506127c181611d16565b92915050565b5f602082840312156127dc576127db611c2a565b5b5f6127e9848285016127b3565b91505092915050565b5f6060820190506128055f830186611e56565b6128126020830185611cee565b61281f6040830184611cee565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286b57607f821691505b60208210810361287e5761287d612827565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826128a5565b6128ea86836128a5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61292561292061291b84611ce5565b612902565b611ce5565b9050919050565b5f819050919050565b61293e8361290b565b61295261294a8261292c565b8484546128b1565b825550505050565b5f90565b61296661295a565b612971818484612935565b505050565b5b81811015612994576129895f8261295e565b600181019050612977565b5050565b601f8211156129d9576129aa81612884565b6129b384612896565b810160208510156129c2578190505b6129d66129ce85612896565b830182612976565b50505b505050565b5f82821c905092915050565b5f6129f95f19846008026129de565b1980831691505092915050565b5f612a1183836129ea565b9150826002028217905092915050565b612a2a82612079565b67ffffffffffffffff811115612a4357612a42612516565b5b612a4d8254612854565b612a58828285612998565b5f60209050601f831160018114612a89575f8415612a77578287015190505b612a818582612a06565b865550612ae8565b601f198416612a9786612884565b5f5b82811015612abe57848901518255600182019150602085019450602081019050612a99565b86831015612adb5784890151612ad7601f8916826129ea565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612b0557612b04612512565b5b612b0f6040612574565b90505f612b1e84828501611db1565b5f83015250602082013567ffffffffffffffff811115612b4157612b4061258e565b5b612b4d84828501612673565b60208301525092915050565b5f60208284031215612b6e57612b6d611c2a565b5b5f82013567ffffffffffffffff811115612b8b57612b8a611c2e565b5b612b9784828501612af0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bd782611ce5565b9150612be283611ce5565b9250828203905081811115612bfa57612bf9612ba0565b5b92915050565b612c0981611d8a565b82525050565b5f82825260208201905092915050565b5f612c2982612079565b612c338185612c0f565b9350612c43818560208601612093565b612c4c816120a1565b840191505092915050565b5f604083015f830151612c6c5f860182612c00565b5060208301518482036020860152612c848282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612ca98184612c57565b905092915050565b5f604082019050612cc45f830185611e56565b8181036020830152612cd681846120b1565b90509392505050565b5f60a082019050612cf25f830188611e56565b612cff6020830187611e56565b612d0c6040830186611cee565b612d196060830185611cee565b8181036080830152612d2b81846120b1565b90509695505050505050565b5f8160601b9050919050565b5f612d4d82612d37565b9050919050565b5f612d5e82612d43565b9050919050565b612d76612d7182611d8a565b612d54565b82525050565b5f819050919050565b612d96612d9182611ce5565b612d7c565b82525050565b5f81905092915050565b5f612db082612079565b612dba8185612d9c565b9350612dca818560208601612093565b80840191505092915050565b5f612de18288612d65565b601482019150612df18287612d65565b601482019150612e018286612d85565b602082019150612e118285612d85565b602082019150612e218284612da6565b91508190509695505050505050565b612e3981611ce5565b82525050565b5f606083015f830151612e545f860182612e30565b506020830151612e676020860182612e30565b5060408301518482036040860152612e7f8282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612ea48184612e3f565b905092915050565b60038110612ebd57612ebc612109565b5b50565b5f819050612ecd82612eac565b919050565b5f612edc82612ec0565b9050919050565b612eec81612ed2565b82525050565b5f608083015f830151612f075f860182612ee3565b506020830151612f1a6020860182612c00565b506040830151612f2d6040860182612c00565b5060608301518482036060860152612f458282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612f6a8184612ef2565b905092915050565b5f612f7c82611ce5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fae57612fad612ba0565b5b600182019050919050565b5f819050919050565b5f612fdc612fd7612fd284612fb9565b612902565b611ce5565b9050919050565b612fec81612fc2565b82525050565b5f612ffd8385612083565b935061300a838584612624565b613013836120a1565b840190509392505050565b5f60a0820190506130315f830189611e56565b61303e6020830188611e56565b61304b6040830187611cee565b6130586060830186612fe3565b818103608083015261306b818486612ff2565b9050979650505050505050565b5f6130838385612d9c565b9350613090838584612624565b82840190509392505050565b5f6130a78289612d65565b6014820191506130b78288612d65565b6014820191506130c78287612d85565b6020820191506130d78286612d85565b6020820191506130e8828486613078565b9150819050979650505050505050565b5f6040828403121561310d5761310c612512565b5b6131176040612574565b90505f82013567ffffffffffffffff8111156131365761313561258e565b5b61314284828501612673565b5f83015250602082013567ffffffffffffffff8111156131655761316461258e565b5b61317184828501612673565b60208301525092915050565b5f6020828403121561319257613191611c2a565b5b5f82013567ffffffffffffffff8111156131af576131ae611c2e565b5b6131bb848285016130f8565b91505092915050565b5f815190506131d2816123a5565b92915050565b5f602082840312156131ed576131ec612512565b5b6131f76020612574565b90505f613206848285016131c4565b5f8301525092915050565b5f6020828403121561322657613225611c2a565b5b5f613233848285016131d8565b9150509291505056fea264697066735822122019210a5a77925f361cc11783f8a24a505a1465f32c22175bafab760addc6f2c464736f6c634300081a0033",T5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c87565b61086c565b6040516102509190611ccc565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cfd565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611cfd565b60405180910390f35b6102c760048036038101906102c29190611d40565b61095b565b005b6102e360048036038101906102de9190611dc5565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dc5565b61097e565b6040516103189190611ccc565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611cfd565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e12565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e2b565b610a11565b6040516103b29190611cfd565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611e65565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f34565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190612007565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190612007565b610e11565b604051610469929190612052565b60405180910390f35b61048c60048036038101906104879190611dc5565b611043565b005b348015610499575f80fd5b506104b460048036038101906104af9190612007565b611059565b6040516104c191906120e9565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dc5565b61113c565b6040516104fd9190611ccc565b60405180910390f35b61050e611153565b005b34801561051b575f80fd5b5061052461118c565b60405161053191906120e9565b60405180910390f35b610542611218565b005b34801561054f575f80fd5b5061055861122b565b6040516105659190611cfd565b60405180910390f35b348015610579575f80fd5b50610582611230565b60405161058f9190611e65565b60405180910390f35b3480156105a3575f80fd5b506105ac611258565b6040516105b99190611cfd565b60405180910390f35b3480156105cd575f80fd5b506105d661125e565b6040516105e3919061217c565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d9190612195565b611270565b60405161061f9190611ccc565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190612247565b611482565b60405161065b9190611e12565b60405180910390f35b34801561066f575f80fd5b5061068a6004803603810190610685919061231e565b611499565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123cf565b61154f565b6040516106bf9190611ccc565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190612195565b61156c565b6040516106fb9190611ccc565b60405180910390f35b34801561070f575f80fd5b5061072a6004803603810190610725919061231e565b61158d565b005b348015610737575f80fd5b50610740611643565b60405161074d9190611cfd565b60405180910390f35b348015610761575f80fd5b5061076a611649565b6040516107779190611cfd565b60405180910390f35b61079a60048036038101906107959190611e2b565b61164e565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123fa565b61168c565b6040516107cf9190611e12565b60405180910390f35b6107f260048036038101906107ed9190611e2b565b6116a1565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e2b565b6116ca565b6040516108279190611ccc565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e2b565b61171d565b6040516108639190611cfd565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610946575061094582611736565b5b9050919050565b5f8054905090565b60045481565b61096533826117af565b50565b6109706117be565b61097a82826117f5565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a2611805565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a8161180f565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612490565b5b9050602002016020810190610acf91906124e7565b90506001151581151503610b1457610b0f878784818110610af357610af2612490565b5b9050602002016020810190610b089190611e2b565b60016117f5565b610b47565b610b46878784818110610b2a57610b29612490565b5b9050602002016020810190610b3f9190611e2b565b60016117af565b5b508080600101915050610a9b565b505050505050565b5f610b66611844565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba99190612745565b905060015f81905550600180811115610bc557610bc4612109565b5b81602001516001811115610bdc57610bdb612109565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c9292919061278c565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd191906127c7565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e939291906127f2565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d91612109565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612a21565b50610dca3361186d565b610dd5336001611943565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e81611984565b5f8585810190610e2e9190612b59565b90505f8160200151806020019051810190610e4991906127c7565b9050600754600354610e5b9190612bcd565b811115610ec0573382604051602001610e749190612c91565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612cb1565b60405180910390fd5b8060035f828254610ed19190612bcd565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610f43959493929190612cdf565b5f604051808303815f87803b158015610f5a575f80fd5b505af1158015610f6c573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001610fee959493929190612dd6565b60405160208183030381529060405260405161100a91906120e9565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b61104b6117be565b61105582826117af565b5050565b60605f838381019061106b9190612745565b9050604051806080016040528060028081111561108b5761108a612109565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111029190612e8c565b6040516020818303038152906040528152506040516020016111249190612f52565b60405160208183030381529060405291505092915050565b5f808261114885610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461119990612854565b80601f01602080910402602001604051908101604052809291908181526020018280546111c590612854565b80156112105780601f106111e757610100808354040283529160200191611210565b820191905f5260205f20905b8154815290600101906020018083116111f357829003601f168201915b505050505081565b6112206117be565b6112295f6119ab565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112796117be565b5f6112848484611a71565b90505f600181111561129957611298612109565b5b60025f9054906101000a900460ff1660018111156112ba576112b9612109565b5b03611476576112c881611aad565b6112fe576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f81548092919061131090612f72565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b81526004016113a49695949392919061301e565b5f604051808303815f87803b1580156113bb575f80fd5b505af11580156113cd573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114489695949392919061309c565b60405160208183030381529060405260405161146491906120e9565b60405180910390a2600191505061147b565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b60026114a48161180f565b8282905085859050146114e3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115475761153a86868381811061150657611505612490565b5b905060200201602081019061151b9190611e2b565b85858481811061152e5761152d612490565b5b905060200201356117f5565b80806001019150506114e5565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115788484611a71565b905061158381611aad565b9150509392505050565b60026115988161180f565b8282905085859050146115d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561163b5761162e8686838181106115fa576115f9612490565b5b905060200201602081019061160f9190611e2b565b85858481811061162257611621612490565b5b905060200201356117af565b80806001019150506115d9565b505050505050565b60075481565b600181565b6116566117be565b63389a75e1600c52805f526020600c20805442111561167c57636f5e88185f526004601cfd5b5f815550611689816119ab565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a96117be565b8060601b6116be57637448fbae5f526004601cfd5b6116c7816119ab565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116ea611230565b73ffffffffffffffffffffffffffffffffffffffff161480611716575061171582600260011761113c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117a857506117a782611ae3565b5b9050919050565b6117ba82825f611b5c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117f3576382b429005f526004601cfd5b565b61180182826001611b5c565b5050565b5f6202a300905090565b638b78c6d81954331461184157638b78c6d8600c52335f52806020600c205416611840576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611875611bb4565b156118ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611940565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166119a8576382b429005f526004601cfd5b50565b6119b3611bb4565b15611a18577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a6e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a82919061317d565b90505f8160200151806020019051810190611a9d9190613211565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611adc5750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b555750611b5482611bb8565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c6681611c32565b8114611c70575f80fd5b50565b5f81359050611c8181611c5d565b92915050565b5f60208284031215611c9c57611c9b611c2a565b5b5f611ca984828501611c73565b91505092915050565b5f8115159050919050565b611cc681611cb2565b82525050565b5f602082019050611cdf5f830184611cbd565b92915050565b5f819050919050565b611cf781611ce5565b82525050565b5f602082019050611d105f830184611cee565b92915050565b611d1f81611ce5565b8114611d29575f80fd5b50565b5f81359050611d3a81611d16565b92915050565b5f60208284031215611d5557611d54611c2a565b5b5f611d6284828501611d2c565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9482611d6b565b9050919050565b611da481611d8a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f8060408385031215611ddb57611dda611c2a565b5b5f611de885828601611db1565b9250506020611df985828601611d2c565b9150509250929050565b611e0c81611c32565b82525050565b5f602082019050611e255f830184611e03565b92915050565b5f60208284031215611e4057611e3f611c2a565b5b5f611e4d84828501611db1565b91505092915050565b611e5f81611d8a565b82525050565b5f602082019050611e785f830184611e56565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9f57611e9e611e7e565b5b8235905067ffffffffffffffff811115611ebc57611ebb611e82565b5b602083019150836020820283011115611ed857611ed7611e86565b5b9250929050565b5f8083601f840112611ef457611ef3611e7e565b5b8235905067ffffffffffffffff811115611f1157611f10611e82565b5b602083019150836020820283011115611f2d57611f2c611e86565b5b9250929050565b5f805f8060408587031215611f4c57611f4b611c2a565b5b5f85013567ffffffffffffffff811115611f6957611f68611c2e565b5b611f7587828801611e8a565b9450945050602085013567ffffffffffffffff811115611f9857611f97611c2e565b5b611fa487828801611edf565b925092505092959194509250565b5f8083601f840112611fc757611fc6611e7e565b5b8235905067ffffffffffffffff811115611fe457611fe3611e82565b5b60208301915083600182028301111561200057611fff611e86565b5b9250929050565b5f806020838503121561201d5761201c611c2a565b5b5f83013567ffffffffffffffff81111561203a57612039611c2e565b5b61204685828601611fb2565b92509250509250929050565b5f6040820190506120655f830185611cee565b6120726020830184611e56565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120bb82612079565b6120c58185612083565b93506120d5818560208601612093565b6120de816120a1565b840191505092915050565b5f6020820190508181035f83015261210181846120b1565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061214757612146612109565b5b50565b5f81905061215782612136565b919050565b5f6121668261214a565b9050919050565b6121768161215c565b82525050565b5f60208201905061218f5f83018461216d565b92915050565b5f805f604084860312156121ac576121ab611c2a565b5b5f6121b986828701611db1565b935050602084013567ffffffffffffffff8111156121da576121d9611c2e565b5b6121e686828701611fb2565b92509250509250925092565b5f8083601f84011261220757612206611e7e565b5b8235905067ffffffffffffffff81111561222457612223611e82565b5b6020830191508360208202830111156122405761223f611e86565b5b9250929050565b5f805f805f805f8060a0898b03121561226357612262611c2a565b5b5f6122708b828c01611db1565b98505060206122818b828c01611db1565b975050604089013567ffffffffffffffff8111156122a2576122a1611c2e565b5b6122ae8b828c016121f2565b9650965050606089013567ffffffffffffffff8111156122d1576122d0611c2e565b5b6122dd8b828c016121f2565b9450945050608089013567ffffffffffffffff811115612300576122ff611c2e565b5b61230c8b828c01611fb2565b92509250509295985092959890939650565b5f805f806040858703121561233657612335611c2a565b5b5f85013567ffffffffffffffff81111561235357612352611c2e565b5b61235f87828801611e8a565b9450945050602085013567ffffffffffffffff81111561238257612381611c2e565b5b61238e878288016121f2565b925092505092959194509250565b5f819050919050565b6123ae8161239c565b81146123b8575f80fd5b50565b5f813590506123c9816123a5565b92915050565b5f602082840312156123e4576123e3611c2a565b5b5f6123f1848285016123bb565b91505092915050565b5f805f805f8060a0878903121561241457612413611c2a565b5b5f61242189828a01611db1565b965050602061243289828a01611db1565b955050604061244389828a01611d2c565b945050606061245489828a01611d2c565b935050608087013567ffffffffffffffff81111561247557612474611c2e565b5b61248189828a01611fb2565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124c681611cb2565b81146124d0575f80fd5b50565b5f813590506124e1816124bd565b92915050565b5f602082840312156124fc576124fb611c2a565b5b5f612509848285016124d3565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254c826120a1565b810181811067ffffffffffffffff8211171561256b5761256a612516565b5b80604052505050565b5f61257d611c21565b90506125898282612543565b919050565b5f80fd5b5f61259c82611d8a565b9050919050565b6125ac81612592565b81146125b6575f80fd5b50565b5f813590506125c7816125a3565b92915050565b600281106125d9575f80fd5b50565b5f813590506125ea816125cd565b92915050565b5f80fd5b5f67ffffffffffffffff82111561260e5761260d612516565b5b612617826120a1565b9050602081019050919050565b828183375f83830152505050565b5f61264461263f846125f4565b612574565b9050828152602081018484840111156126605761265f6125f0565b5b61266b848285612624565b509392505050565b5f82601f83011261268757612686611e7e565b5b8135612697848260208601612632565b91505092915050565b5f60a082840312156126b5576126b4612512565b5b6126bf60a0612574565b90505f6126ce848285016125b9565b5f8301525060206126e1848285016125dc565b60208301525060406126f584828501611d2c565b604083015250606061270984828501611d2c565b606083015250608082013567ffffffffffffffff81111561272d5761272c61258e565b5b61273984828501612673565b60808301525092915050565b5f6020828403121561275a57612759611c2a565b5b5f82013567ffffffffffffffff81111561277757612776611c2e565b5b612783848285016126a0565b91505092915050565b5f60408201905061279f5f830185611e56565b6127ac6020830184611cee565b9392505050565b5f815190506127c181611d16565b92915050565b5f602082840312156127dc576127db611c2a565b5b5f6127e9848285016127b3565b91505092915050565b5f6060820190506128055f830186611e56565b6128126020830185611cee565b61281f6040830184611cee565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286b57607f821691505b60208210810361287e5761287d612827565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826128a5565b6128ea86836128a5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61292561292061291b84611ce5565b612902565b611ce5565b9050919050565b5f819050919050565b61293e8361290b565b61295261294a8261292c565b8484546128b1565b825550505050565b5f90565b61296661295a565b612971818484612935565b505050565b5b81811015612994576129895f8261295e565b600181019050612977565b5050565b601f8211156129d9576129aa81612884565b6129b384612896565b810160208510156129c2578190505b6129d66129ce85612896565b830182612976565b50505b505050565b5f82821c905092915050565b5f6129f95f19846008026129de565b1980831691505092915050565b5f612a1183836129ea565b9150826002028217905092915050565b612a2a82612079565b67ffffffffffffffff811115612a4357612a42612516565b5b612a4d8254612854565b612a58828285612998565b5f60209050601f831160018114612a89575f8415612a77578287015190505b612a818582612a06565b865550612ae8565b601f198416612a9786612884565b5f5b82811015612abe57848901518255600182019150602085019450602081019050612a99565b86831015612adb5784890151612ad7601f8916826129ea565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612b0557612b04612512565b5b612b0f6040612574565b90505f612b1e84828501611db1565b5f83015250602082013567ffffffffffffffff811115612b4157612b4061258e565b5b612b4d84828501612673565b60208301525092915050565b5f60208284031215612b6e57612b6d611c2a565b5b5f82013567ffffffffffffffff811115612b8b57612b8a611c2e565b5b612b9784828501612af0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bd782611ce5565b9150612be283611ce5565b9250828203905081811115612bfa57612bf9612ba0565b5b92915050565b612c0981611d8a565b82525050565b5f82825260208201905092915050565b5f612c2982612079565b612c338185612c0f565b9350612c43818560208601612093565b612c4c816120a1565b840191505092915050565b5f604083015f830151612c6c5f860182612c00565b5060208301518482036020860152612c848282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612ca98184612c57565b905092915050565b5f604082019050612cc45f830185611e56565b8181036020830152612cd681846120b1565b90509392505050565b5f60a082019050612cf25f830188611e56565b612cff6020830187611e56565b612d0c6040830186611cee565b612d196060830185611cee565b8181036080830152612d2b81846120b1565b90509695505050505050565b5f8160601b9050919050565b5f612d4d82612d37565b9050919050565b5f612d5e82612d43565b9050919050565b612d76612d7182611d8a565b612d54565b82525050565b5f819050919050565b612d96612d9182611ce5565b612d7c565b82525050565b5f81905092915050565b5f612db082612079565b612dba8185612d9c565b9350612dca818560208601612093565b80840191505092915050565b5f612de18288612d65565b601482019150612df18287612d65565b601482019150612e018286612d85565b602082019150612e118285612d85565b602082019150612e218284612da6565b91508190509695505050505050565b612e3981611ce5565b82525050565b5f606083015f830151612e545f860182612e30565b506020830151612e676020860182612e30565b5060408301518482036040860152612e7f8282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612ea48184612e3f565b905092915050565b60038110612ebd57612ebc612109565b5b50565b5f819050612ecd82612eac565b919050565b5f612edc82612ec0565b9050919050565b612eec81612ed2565b82525050565b5f608083015f830151612f075f860182612ee3565b506020830151612f1a6020860182612c00565b506040830151612f2d6040860182612c00565b5060608301518482036060860152612f458282612c1f565b9150508091505092915050565b5f6020820190508181035f830152612f6a8184612ef2565b905092915050565b5f612f7c82611ce5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fae57612fad612ba0565b5b600182019050919050565b5f819050919050565b5f612fdc612fd7612fd284612fb9565b612902565b611ce5565b9050919050565b612fec81612fc2565b82525050565b5f612ffd8385612083565b935061300a838584612624565b613013836120a1565b840190509392505050565b5f60a0820190506130315f830189611e56565b61303e6020830188611e56565b61304b6040830187611cee565b6130586060830186612fe3565b818103608083015261306b818486612ff2565b9050979650505050505050565b5f6130838385612d9c565b9350613090838584612624565b82840190509392505050565b5f6130a78289612d65565b6014820191506130b78288612d65565b6014820191506130c78287612d85565b6020820191506130d78286612d85565b6020820191506130e8828486613078565b9150819050979650505050505050565b5f6040828403121561310d5761310c612512565b5b6131176040612574565b90505f82013567ffffffffffffffff8111156131365761313561258e565b5b61314284828501612673565b5f83015250602082013567ffffffffffffffff8111156131655761316461258e565b5b61317184828501612673565b60208301525092915050565b5f6020828403121561319257613191611c2a565b5b5f82013567ffffffffffffffff8111156131af576131ae611c2e565b5b6131bb848285016130f8565b91505092915050565b5f815190506131d2816123a5565b92915050565b5f602082840312156131ed576131ec612512565b5b6131f76020612574565b90505f613206848285016131c4565b5f8301525092915050565b5f6020828403121561322657613225611c2a565b5b5f613233848285016131d8565b9150509291505056fea264697066735822122019210a5a77925f361cc11783f8a24a505a1465f32c22175bafab760addc6f2c464736f6c634300081a0033",v5={},w5={},a0={_format:r5,contractName:u5,sourceName:o5,abi:l5,bytecode:m5,deployedBytecode:T5,linkReferences:v5,deployedLinkReferences:w5},M5="hh-sol-artifact-1",I5="PointsIncentive",h5="contracts/incentives/PointsIncentive.sol",g5=[{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:"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"}],A5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611b8b806100bd5f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db91906113f9565b61065f565b6040516101ed919061143e565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061146f565b60405180910390f35b61023a600480360381019061023591906114b2565b6106e0565b005b61025660048036038101906102519190611537565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611537565b610703565b60405161028b919061143e565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b5919061146f565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e99190611584565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061159d565b610796565b604051610325919061146f565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f91906115d7565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190611651565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a19190611651565b610921565b6040516103b492919061169c565b60405180910390f35b6103d760048036038101906103d29190611537565b610955565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa9190611651565b61096b565b60405161040c9190611733565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611537565b6109c2565b604051610448919061143e565b60405180910390f35b6104596109d9565b005b610463610a12565b005b348015610470575f80fd5b50610479610a25565b60405161048691906115d7565b60405180910390f35b34801561049a575f80fd5b506104a3610a4d565b6040516104b091906115d7565b60405180910390f35b3480156104c4575f80fd5b506104cd610a72565b6040516104da919061146f565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611753565b610a78565b604051610516919061143e565b60405180910390f35b34801561052a575f80fd5b506105456004803603810190610540919061159d565b610e8d565b604051610552919061143e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611753565b610eaa565b60405161058e919061143e565b60405180910390f35b3480156105a2575f80fd5b506105ab610ebd565b6040516105b8919061146f565b60405180910390f35b3480156105cc575f80fd5b506105d5610ec3565b6040516105e29190611584565b60405180910390f35b6106056004803603810190610600919061159d565b610ed5565b005b610621600480360381019061061c919061159d565b610f13565b005b34801561062e575f80fd5b506106496004803603810190610644919061159d565b610f3c565b604051610656919061146f565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f55565b5b9050919050565b5f8054905090565b6106ea3382610fce565b50565b6106f5610fdd565b6106ff8282611014565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611024565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361102e565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061081691906118a1565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e633611057565b50801561091c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d610fdd565b6109678282610fce565b5050565b60605f67ffffffffffffffff811115610987576109866117b4565b5b6040519080825280601f01601f1916602001820160405280156109b95781602001600182028036833780820191505090505b50905092915050565b5f80826109ce85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a1a610fdd565b610a235f61112d565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610a81610fdd565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2a91906118e0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bcd5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b8992919061194d565b602060405180830381865afa158015610ba4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc8919061199e565b151514155b15610c04576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c0d856111f3565b610c43576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610c55906119f6565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d0a929190611a3d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d749190611a9e565b5f604051808303815f865af19150503d805f8114610dad576040519150601f19603f3d011682016040523d82523d5f602084013e610db2565b606091505b5050905080610ded576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610e5c93929190611b19565b604051602081830303815290604052604051610e789190611733565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610eb4846111f3565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610edd610fdd565b63389a75e1600c52805f526020600c208054421115610f0357636f5e88185f526004601cfd5b5f815550610f108161112d565b50565b610f1b610fdd565b8060601b610f3057637448fbae5f526004601cfd5b610f398161112d565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fc75750610fc682611255565b5b9050919050565b610fd982825f6112ce565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611012576382b429005f526004601cfd5b565b611020828260016112ce565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61105f611326565b156110d7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561109957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061112a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611135611326565b1561119a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561124e5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112c757506112c68261132a565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112f057848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113d8816113a4565b81146113e2575f80fd5b50565b5f813590506113f3816113cf565b92915050565b5f6020828403121561140e5761140d61139c565b5b5f61141b848285016113e5565b91505092915050565b5f8115159050919050565b61143881611424565b82525050565b5f6020820190506114515f83018461142f565b92915050565b5f819050919050565b61146981611457565b82525050565b5f6020820190506114825f830184611460565b92915050565b61149181611457565b811461149b575f80fd5b50565b5f813590506114ac81611488565b92915050565b5f602082840312156114c7576114c661139c565b5b5f6114d48482850161149e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611506826114dd565b9050919050565b611516816114fc565b8114611520575f80fd5b50565b5f813590506115318161150d565b92915050565b5f806040838503121561154d5761154c61139c565b5b5f61155a85828601611523565b925050602061156b8582860161149e565b9150509250929050565b61157e816113a4565b82525050565b5f6020820190506115975f830184611575565b92915050565b5f602082840312156115b2576115b161139c565b5b5f6115bf84828501611523565b91505092915050565b6115d1816114fc565b82525050565b5f6020820190506115ea5f8301846115c8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611611576116106115f0565b5b8235905067ffffffffffffffff81111561162e5761162d6115f4565b5b60208301915083600182028301111561164a576116496115f8565b5b9250929050565b5f80602083850312156116675761166661139c565b5b5f83013567ffffffffffffffff811115611684576116836113a0565b5b611690858286016115fc565b92509250509250929050565b5f6040820190506116af5f830185611460565b6116bc60208301846115c8565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611705826116c3565b61170f81856116cd565b935061171f8185602086016116dd565b611728816116eb565b840191505092915050565b5f6020820190508181035f83015261174b81846116fb565b905092915050565b5f805f6040848603121561176a5761176961139c565b5b5f61177786828701611523565b935050602084013567ffffffffffffffff811115611798576117976113a0565b5b6117a4868287016115fc565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117ea826116eb565b810181811067ffffffffffffffff82111715611809576118086117b4565b5b80604052505050565b5f61181b611393565b905061182782826117e1565b919050565b5f60808284031215611841576118406117b0565b5b61184b6080611812565b90505f61185a84828501611523565b5f83015250602061186d848285016113e5565b60208301525060406118818482850161149e565b60408301525060606118958482850161149e565b60608301525092915050565b5f608082840312156118b6576118b561139c565b5b5f6118c38482850161182c565b91505092915050565b5f815190506118da8161150d565b92915050565b5f602082840312156118f5576118f461139c565b5b5f611902848285016118cc565b91505092915050565b5f819050919050565b5f819050919050565b5f61193761193261192d8461190b565b611914565b611457565b9050919050565b6119478161191d565b82525050565b5f6040820190506119605f8301856115c8565b61196d602083018461193e565b9392505050565b61197d81611424565b8114611987575f80fd5b50565b5f8151905061199881611974565b92915050565b5f602082840312156119b3576119b261139c565b5b5f6119c08482850161198a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0082611457565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a3257611a316119c9565b5b600182019050919050565b5f604082019050611a505f8301856115c8565b611a5d6020830184611460565b9392505050565b5f81905092915050565b5f611a78826116c3565b611a828185611a64565b9350611a928185602086016116dd565b80840191505092915050565b5f611aa98284611a6e565b915081905092915050565b5f8160601b9050919050565b5f611aca82611ab4565b9050919050565b5f611adb82611ac0565b9050919050565b611af3611aee826114fc565b611ad1565b82525050565b5f819050919050565b611b13611b0e82611457565b611af9565b82525050565b5f611b248286611ae2565b601482019150611b348285611ae2565b601482019150611b448284611b02565b60208201915081905094935050505056fea2646970667358221220d6b660c45cfb14561fecfab54209da8ea926d96b371bbdb9b93f5ad944e89aad64736f6c634300081a0033",O5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db91906113f9565b61065f565b6040516101ed919061143e565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061146f565b60405180910390f35b61023a600480360381019061023591906114b2565b6106e0565b005b61025660048036038101906102519190611537565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611537565b610703565b60405161028b919061143e565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b5919061146f565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e99190611584565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061159d565b610796565b604051610325919061146f565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f91906115d7565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190611651565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a19190611651565b610921565b6040516103b492919061169c565b60405180910390f35b6103d760048036038101906103d29190611537565b610955565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa9190611651565b61096b565b60405161040c9190611733565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611537565b6109c2565b604051610448919061143e565b60405180910390f35b6104596109d9565b005b610463610a12565b005b348015610470575f80fd5b50610479610a25565b60405161048691906115d7565b60405180910390f35b34801561049a575f80fd5b506104a3610a4d565b6040516104b091906115d7565b60405180910390f35b3480156104c4575f80fd5b506104cd610a72565b6040516104da919061146f565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611753565b610a78565b604051610516919061143e565b60405180910390f35b34801561052a575f80fd5b506105456004803603810190610540919061159d565b610e8d565b604051610552919061143e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611753565b610eaa565b60405161058e919061143e565b60405180910390f35b3480156105a2575f80fd5b506105ab610ebd565b6040516105b8919061146f565b60405180910390f35b3480156105cc575f80fd5b506105d5610ec3565b6040516105e29190611584565b60405180910390f35b6106056004803603810190610600919061159d565b610ed5565b005b610621600480360381019061061c919061159d565b610f13565b005b34801561062e575f80fd5b506106496004803603810190610644919061159d565b610f3c565b604051610656919061146f565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f55565b5b9050919050565b5f8054905090565b6106ea3382610fce565b50565b6106f5610fdd565b6106ff8282611014565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611024565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361102e565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061081691906118a1565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e633611057565b50801561091c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095d610fdd565b6109678282610fce565b5050565b60605f67ffffffffffffffff811115610987576109866117b4565b5b6040519080825280601f01601f1916602001820160405280156109b95781602001600182028036833780820191505090505b50905092915050565b5f80826109ce85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a1a610fdd565b610a235f61112d565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610a81610fdd565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2a91906118e0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bcd5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b8992919061194d565b602060405180830381865afa158015610ba4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc8919061199e565b151514155b15610c04576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c0d856111f3565b610c43576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610c55906119f6565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d0a929190611a3d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d749190611a9e565b5f604051808303815f865af19150503d805f8114610dad576040519150601f19603f3d011682016040523d82523d5f602084013e610db2565b606091505b5050905080610ded576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610e5c93929190611b19565b604051602081830303815290604052604051610e789190611733565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610eb4846111f3565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610edd610fdd565b63389a75e1600c52805f526020600c208054421115610f0357636f5e88185f526004601cfd5b5f815550610f108161112d565b50565b610f1b610fdd565b8060601b610f3057637448fbae5f526004601cfd5b610f398161112d565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fc75750610fc682611255565b5b9050919050565b610fd982825f6112ce565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611012576382b429005f526004601cfd5b565b611020828260016112ce565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61105f611326565b156110d7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561109957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061112a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611135611326565b1561119a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561124e5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112c757506112c68261132a565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112f057848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113d8816113a4565b81146113e2575f80fd5b50565b5f813590506113f3816113cf565b92915050565b5f6020828403121561140e5761140d61139c565b5b5f61141b848285016113e5565b91505092915050565b5f8115159050919050565b61143881611424565b82525050565b5f6020820190506114515f83018461142f565b92915050565b5f819050919050565b61146981611457565b82525050565b5f6020820190506114825f830184611460565b92915050565b61149181611457565b811461149b575f80fd5b50565b5f813590506114ac81611488565b92915050565b5f602082840312156114c7576114c661139c565b5b5f6114d48482850161149e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611506826114dd565b9050919050565b611516816114fc565b8114611520575f80fd5b50565b5f813590506115318161150d565b92915050565b5f806040838503121561154d5761154c61139c565b5b5f61155a85828601611523565b925050602061156b8582860161149e565b9150509250929050565b61157e816113a4565b82525050565b5f6020820190506115975f830184611575565b92915050565b5f602082840312156115b2576115b161139c565b5b5f6115bf84828501611523565b91505092915050565b6115d1816114fc565b82525050565b5f6020820190506115ea5f8301846115c8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611611576116106115f0565b5b8235905067ffffffffffffffff81111561162e5761162d6115f4565b5b60208301915083600182028301111561164a576116496115f8565b5b9250929050565b5f80602083850312156116675761166661139c565b5b5f83013567ffffffffffffffff811115611684576116836113a0565b5b611690858286016115fc565b92509250509250929050565b5f6040820190506116af5f830185611460565b6116bc60208301846115c8565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611705826116c3565b61170f81856116cd565b935061171f8185602086016116dd565b611728816116eb565b840191505092915050565b5f6020820190508181035f83015261174b81846116fb565b905092915050565b5f805f6040848603121561176a5761176961139c565b5b5f61177786828701611523565b935050602084013567ffffffffffffffff811115611798576117976113a0565b5b6117a4868287016115fc565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117ea826116eb565b810181811067ffffffffffffffff82111715611809576118086117b4565b5b80604052505050565b5f61181b611393565b905061182782826117e1565b919050565b5f60808284031215611841576118406117b0565b5b61184b6080611812565b90505f61185a84828501611523565b5f83015250602061186d848285016113e5565b60208301525060406118818482850161149e565b60408301525060606118958482850161149e565b60608301525092915050565b5f608082840312156118b6576118b561139c565b5b5f6118c38482850161182c565b91505092915050565b5f815190506118da8161150d565b92915050565b5f602082840312156118f5576118f461139c565b5b5f611902848285016118cc565b91505092915050565b5f819050919050565b5f819050919050565b5f61193761193261192d8461190b565b611914565b611457565b9050919050565b6119478161191d565b82525050565b5f6040820190506119605f8301856115c8565b61196d602083018461193e565b9392505050565b61197d81611424565b8114611987575f80fd5b50565b5f8151905061199881611974565b92915050565b5f602082840312156119b3576119b261139c565b5b5f6119c08482850161198a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0082611457565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a3257611a316119c9565b5b600182019050919050565b5f604082019050611a505f8301856115c8565b611a5d6020830184611460565b9392505050565b5f81905092915050565b5f611a78826116c3565b611a828185611a64565b9350611a928185602086016116dd565b80840191505092915050565b5f611aa98284611a6e565b915081905092915050565b5f8160601b9050919050565b5f611aca82611ab4565b9050919050565b5f611adb82611ac0565b9050919050565b611af3611aee826114fc565b611ad1565b82525050565b5f819050919050565b611b13611b0e82611457565b611af9565b82525050565b5f611b248286611ae2565b601482019150611b348285611ae2565b601482019150611b448284611b02565b60208201915081905094935050505056fea2646970667358221220d6b660c45cfb14561fecfab54209da8ea926d96b371bbdb9b93f5ad944e89aad64736f6c634300081a0033",R5={},_5={},d0={_format:M5,contractName:I5,sourceName:h5,abi:g5,bytecode:A5,deployedBytecode:O5,linkReferences:R5,deployedLinkReferences:_5},x5="hh-sol-artifact-1",C5="LimitedSignerValidator",z5="contracts/validators/LimitedSignerValidator.sol",N5=[{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"},{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:"nonpayable",type:"function"}],E5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161236361028a5f395f610fe601525f61128d01525f61126a01525f6112fc01525f61132001526123635ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d03c16d35d1d66252450c489ed15af375cf310cdf687ee8778277bd8f2bb2cca64736f6c634300081a0033",$5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d03c16d35d1d66252450c489ed15af375cf310cdf687ee8778277bd8f2bb2cca64736f6c634300081a0033",k5={},L5={},t0={_format:x5,contractName:C5,sourceName:z5,abi:N5,bytecode:E5,deployedBytecode:$5,linkReferences:k5,deployedLinkReferences:L5},H5="hh-sol-artifact-1",B5="SignerValidator",D5="contracts/validators/SignerValidator.sol",S5=[{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"},{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:"nonpayable",type:"function"}],V5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611ecf61028a5f395f610f6401525f6110a301525f61108001525f61111201525f6111360152611ecf5ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122087daf3e273f95aff5f13f045d02c91d9576d49c6f53cea4ce8ae97c0657612de64736f6c634300081a0033",q5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122087daf3e273f95aff5f13f045d02c91d9576d49c6f53cea4ce8ae97c0657612de64736f6c634300081a0033",F5={},U5={},c0={_format:H5,contractName:B5,sourceName:D5,abi:S5,bytecode:V5,deployedBytecode:q5,linkReferences:F5,deployedLinkReferences:U5};function G5(i,s,a){const c=i[s.name];if(typeof c=="function")return c;const r=i[a];return typeof r=="function"?r:p=>s(i,p)}async function P5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new y.ConnectorUnavailableReconnectingError({connector:e});const[d,_]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:_,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new y.ConnectorNotConnectedError;const c=s.chainId??a.chainId,r=await a.connector.getChainId();if(r!==a.chainId)throw new y.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:r});const p=a.connector;if(p.getClient)return p.getClient({chainId:c});const n=y.parseAccount(s.account??a.accounts[0]);if(n.address=y.getAddress(n.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===n.address.toLowerCase()))throw new y.ConnectorAccountNotFoundError({address:n.address,connector:p});const R=i.chains.find(e=>e.id===c),f=await a.connector.getProvider({chainId:c});return y.createClient({account:n,chain:R,name:"Connector Client",transport:e=>y.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:c,connector:r,...p}=s;let n;return typeof a=="object"&&a.type==="local"?n=i.getClient({chainId:c}):n=await P5(i,{account:a,chainId:c,connector:r}),await G5(n,y.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:c?{id:c}:null})}const Z5=async function(s,a){var u,o,l,m,T,v,w,M,I,h,g,A,O;const c=a.privateKey,r=a.mnemonic,p=a.chain;if(!c&&!r)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!y.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[n,R]=y.getDeployableOptions({chain:p,privateKey:c,mnemonic:r}),{config:f,account:e}=n,d=R.id,_=await new b.BoostRegistry({address:null,...n}).deploy(),z=class z extends b.BoostRegistry{};z.addresses={[d]:_.assertValidAddress()};let x=z;const C=new x({...n,address:_.assertValidAddress()}),n0=await new b.BoostCore({...n,registryAddress:C.assertValidAddress(),protocolFeeReceiver:e.address,owner:e.address}).deploy(),i0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),s0=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),p0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),y0=await b.getDeployedContractAddress(f,t(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,t(f,{abi:J.abi,bytecode:J.bytecode,account:e})),L=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),r0=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:c0.abi,bytecode:c0.bytecode,account:e})),F=await b.getDeployedContractAddress(f,t(f,{abi:t0.abi,bytecode:t0.bytecode,account:e})),u0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:B},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:N},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:E},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:$},m),ManagedBudgetWithFees:(T=class extends b.ManagedBudgetWithFees{},T.bases={[d]:p0},T),AllowListIncentive:(v=class extends b.AllowListIncentive{},v.bases={[d]:k},v),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(M=class extends b.ERC20Incentive{},M.bases={[d]:H},M),ERC20VariableIncentive:(I=class extends b.ERC20VariableIncentive{},I.bases={[d]:S},I),ERC20VariableCriteriaIncentive:(h=class extends b.ERC20VariableCriteriaIncentive{},h.bases={[d]:V},h),PointsIncentive:(g=class extends b.PointsIncentive{},g.bases={[d]:D},g),SignerValidator:(A=class extends b.SignerValidator{},A.bases={[d]:q},A),LimitedSignerValidator:(O=class extends b.LimitedSignerValidator{},O.bases={[d]:F},O)};for(const[o0,U]of Object.entries(u0))await C.register(U.registryType,o0,U.bases[d]);return{BOOST_CORE_ADDRESS:n0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:C.assertValidAddress(),CONTRACT_ACTION_BASE:i0,EVENT_ACTION_BASE:B,ERC721_MINT_ACTION_BASE:s0,SIMPLE_ALLOWLIST_BASE:N,SIMPLE_DENYLIST_BASE:E,MANAGED_BUDGET_BASE:$,VESTING_BUDGET_BASE:y0,ALLOWLIST_INCENTIVE_BASE:k,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:H,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:V,ERC1155_INCENTIVE_BASE:r0,POINTS_INCENTIVE_BASE:D,SIGNER_VALIDATOR_BASE:q,LIMITED_SIGNER_VALIDATOR_BASE:F}};exports.deploy=Z5;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),y=require("../utils-CQC0lDOX.cjs"),l0="hh-sol-artifact-1",m0="ContractAction",T0="contracts/actions/ContractAction.sol",v0=[{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"}],w0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",M0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",I0={},h0={},P={_format:l0,contractName:m0,sourceName:T0,abi:v0,bytecode:w0,deployedBytecode:M0,linkReferences:I0,deployedLinkReferences:h0},A0="hh-sol-artifact-1",g0="ERC721MintAction",R0="contracts/actions/ERC721MintAction.sol",O0=[{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:"nonpayable",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"}],x0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516116026100c85f395f61054001526116025ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",C0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",_0={},z0={},G={_format:A0,contractName:g0,sourceName:R0,abi:O0,bytecode:x0,deployedBytecode:C0,linkReferences:_0,deployedLinkReferences:z0},N0="hh-sol-artifact-1",E0="EventAction",$0="contracts/actions/EventAction.sol",k0=[{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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:"uint8",name:"fieldIndex",type:"uint8"},{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"}],L0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516123db6100c85f395f61034a01526123db5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220274ffd153b96474be98b2c3fea8b3e6acfc22a607176ec7b8c41f6ac37ab4d8764736f6c634300081a0033",H0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220274ffd153b96474be98b2c3fea8b3e6acfc22a607176ec7b8c41f6ac37ab4d8764736f6c634300081a0033",D0={},B0={},Z={_format:N0,contractName:E0,sourceName:$0,abi:k0,bytecode:L0,deployedBytecode:H0,linkReferences:D0,deployedLinkReferences:B0},S0="hh-sol-artifact-1",V0="SimpleAllowList",q0="contracts/allowlists/SimpleAllowList.sol",F0=[{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"}],U0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",P0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",G0={},Z0={},W={_format:S0,contractName:V0,sourceName:q0,abi:F0,bytecode:U0,deployedBytecode:P0,linkReferences:G0,deployedLinkReferences:Z0},W0="hh-sol-artifact-1",j0="SimpleDenyList",K0="contracts/allowlists/SimpleDenyList.sol",Q0=[{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"}],Y0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",J0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",X0={},ff={},j={_format:W0,contractName:j0,sourceName:K0,abi:Q0,bytecode:Y0,deployedBytecode:J0,linkReferences:X0,deployedLinkReferences:ff},bf="hh-sol-artifact-1",ef="ManagedBudget",af="contracts/budgets/ManagedBudget.sol",df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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"}],tf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",nf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",cf={},sf={},K={_format:bf,contractName:ef,sourceName:af,abi:df,bytecode:tf,deployedBytecode:nf,linkReferences:cf,deployedLinkReferences:sf},pf="hh-sol-artifact-1",yf="ManagedBudgetWithFees",rf="contracts/budgets/ManagedBudgetWithFees.sol",uf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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:"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"}],of="0x6080604052348015600e575f80fd5b50601b602b60201b60201c565b6027602b60201b60201c565b60bc565b5f6038609360201b60201c565b90508054600181161560515763f92ee8a95f526004601cfd5b8160c01c808260011c14608e578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b614ba6806100c95f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",lf="0x60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",mf={},Tf={},Q={_format:pf,contractName:yf,sourceName:rf,abi:uf,bytecode:of,deployedBytecode:lf,linkReferences:mf,deployedLinkReferences:Tf},vf="hh-sol-artifact-1",wf="VestingBudget",Mf="contracts/budgets/VestingBudget.sol",If=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",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:[{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"}],hf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",Af="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",gf={},Rf={},Y={_format:vf,contractName:wf,sourceName:Mf,abi:If,bytecode:hf,deployedBytecode:Af,linkReferences:gf,deployedLinkReferences:Rf},Of="hh-sol-artifact-1",xf="AllowListIncentive",Cf="contracts/incentives/AllowListIncentive.sol",_f=[{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"}],zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61180b806100bd5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Nf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Ef={},$f={},J={_format:Of,contractName:xf,sourceName:Cf,abi:_f,bytecode:zf,deployedBytecode:Nf,linkReferences:Ef,deployedLinkReferences:$f},kf="hh-sol-artifact-1",Lf="CGDAIncentive",Hf="contracts/incentives/CGDAIncentive.sol",Df=[{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"}],Bf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612848806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Sf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Vf={},qf={},X={_format:kf,contractName:Lf,sourceName:Hf,abi:Df,bytecode:Bf,deployedBytecode:Sf,linkReferences:Vf,deployedLinkReferences:qf},Ff="hh-sol-artifact-1",Uf="ERC20Incentive",Pf="contracts/incentives/ERC20Incentive.sol",Gf=[{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"},{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:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d51806100bd5f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",Wf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",jf={},Kf={},f0={_format:Ff,contractName:Uf,sourceName:Pf,abi:Gf,bytecode:Zf,deployedBytecode:Wf,linkReferences:jf,deployedLinkReferences:Kf},Qf="hh-sol-artifact-1",Yf="ERC20VariableCriteriaIncentive",Jf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Xf=[{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"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.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"},{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:"struct AERC20VariableCriteriaIncentive.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"}],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:[],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"}],f5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d42806100bd5f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",b5="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",e5={},a5={},b0={_format:Qf,contractName:Yf,sourceName:Jf,abi:Xf,bytecode:f5,deployedBytecode:b5,linkReferences:e5,deployedLinkReferences:a5},d5="hh-sol-artifact-1",t5="ERC20VariableIncentive",n5="contracts/incentives/ERC20VariableIncentive.sol",c5=[{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"},{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:[],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"}],i5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612707806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",s5="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",p5={},y5={},e0={_format:d5,contractName:t5,sourceName:n5,abi:c5,bytecode:i5,deployedBytecode:s5,linkReferences:p5,deployedLinkReferences:y5},r5="hh-sol-artifact-1",u5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",l5=[{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"}],m5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61332c806100bd5f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",T5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",v5={},w5={},a0={_format:r5,contractName:u5,sourceName:o5,abi:l5,bytecode:m5,deployedBytecode:T5,linkReferences:v5,deployedLinkReferences:w5},M5="hh-sol-artifact-1",I5="PointsIncentive",h5="contracts/incentives/PointsIncentive.sol",A5=[{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"}],g5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611c21806100bd5f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",R5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",O5={},x5={},d0={_format:M5,contractName:I5,sourceName:h5,abi:A5,bytecode:g5,deployedBytecode:R5,linkReferences:O5,deployedLinkReferences:x5},C5="hh-sol-artifact-1",_5="LimitedSignerValidator",z5="contracts/validators/LimitedSignerValidator.sol",N5=[{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:"nonpayable",type:"function"}],E5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161236361028a5f395f610fe601525f61128d01525f61126a01525f6112fc01525f61132001526123635ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d4fa7e3fb4f7c86b44d4f67ce9d9abff3e164c74acadbf114f3c66eb52afdbd864736f6c634300081a0033",$5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d4fa7e3fb4f7c86b44d4f67ce9d9abff3e164c74acadbf114f3c66eb52afdbd864736f6c634300081a0033",k5={},L5={},t0={_format:C5,contractName:_5,sourceName:z5,abi:N5,bytecode:E5,deployedBytecode:$5,linkReferences:k5,deployedLinkReferences:L5},H5="hh-sol-artifact-1",D5="SignerValidator",B5="contracts/validators/SignerValidator.sol",S5=[{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:"nonpayable",type:"function"}],V5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611f0661028a5f395f610f9b01525f6110da01525f6110b701525f61114901525f61116d0152611f065ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c6004803603810190610117919061126c565b610374565b60405161012991906112b1565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112d9565b60405180910390f35b348015610171575f80fd5b5061018c600480360381019061018791906113a8565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af919061147b565b61056e565b005b6101be61071c565b005b3480156101cb575f80fd5b506101e660048036038101906101e19190611553565b610755565b6040516101f391906112b1565b60405180910390f35b610204610948565b005b348015610211575f80fd5b5061022c600480360381019061022791906115d7565b61095b565b60405161023991906112b1565b60405180910390f35b34801561024d575f80fd5b50610256610977565b6040516102699796959493929190611799565b60405180910390f35b34801561027d575f80fd5b506102866109c2565b604051610293919061181b565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115d7565b6109ea565b005b3480156102cf575f80fd5b506102ea60048036038101906102e59190611992565b610a35565b6040516102f79190611a12565b60405180910390f35b61031a600480360381019061031591906115d7565b610a9e565b005b610336600480360381019061033191906115d7565b610adc565b005b348015610343575f80fd5b5061035e600480360381019061035991906115d7565b610b05565b60405161036b9190611a2b565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610b1e565b5b9050919050565b5f6103f6610b97565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610ba1565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a44565b5b90506020020160208101906104e19190611a9b565b5f808787858181106104f6576104f5611a44565b5b905060200201602081019061050b91906115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610bd8565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611bc1565b915091506105e2825f815181106105d5576105d4611a44565b5b6020026020010151610c01565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106d8919061181b565b60405180910390a150508015610717576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107ec9190611ca8565b90505f815f01518060200190518101906108069190611e02565b90505f61081d898360400151898660200151610a35565b905087826040015160ff1611610870578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610867929190611e58565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108f2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090881896001610cd79092919063ffffffff16565b61093a818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d3c9092919063ffffffff16565b935050505095945050505050565b610950610ba1565b6109595f610e3f565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506109ab610f05565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109f2610ba1565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a947ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a79959493929190611e7f565b60405160208183030381529060405280519060200120610f7c565b9050949350505050565b610aa6610ba1565b63389a75e1600c52805f526020600c208054421115610acc57636f5e88185f526004601cfd5b5f815550610ad981610e3f565b50565b610ae4610ba1565b8060601b610af957637448fbae5f526004601cfd5b610b0281610e3f565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b905750610b8f82610ff8565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bd6576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610c09611071565b15610c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c4357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cd4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610d0257815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2f57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e3857604051835f5260208301516040526040835103610da9576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610da657600193505f60605282604052505050610e38565b50505b6041835103610def5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610ded57600192505f606052816040525050610e38565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e47611071565b15610eac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f02565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f85611075565b15610f9957610f9261107d565b9050610fd5565b7f00000000000000000000000000000000000000000000000000000000000000009050610fc4611145565b15610fd457610fd161107d565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061106a57506110698261119d565b5b9050919050565b5f90565b5f6001905090565b5f80611087611075565b156110b5575f80611096610f05565b91509150818051906020012093508080519060200120925050506110fc565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61124b81611217565b8114611255575f80fd5b50565b5f8135905061126681611242565b92915050565b5f602082840312156112815761128061120f565b5b5f61128e84828501611258565b91505092915050565b5f8115159050919050565b6112ab81611297565b82525050565b5f6020820190506112c45f8301846112a2565b92915050565b6112d381611217565b82525050565b5f6020820190506112ec5f8301846112ca565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611313576113126112f2565b5b8235905067ffffffffffffffff8111156113305761132f6112f6565b5b60208301915083602082028301111561134c5761134b6112fa565b5b9250929050565b5f8083601f840112611368576113676112f2565b5b8235905067ffffffffffffffff811115611385576113846112f6565b5b6020830191508360208202830111156113a1576113a06112fa565b5b9250929050565b5f805f80604085870312156113c0576113bf61120f565b5b5f85013567ffffffffffffffff8111156113dd576113dc611213565b5b6113e9878288016112fe565b9450945050602085013567ffffffffffffffff81111561140c5761140b611213565b5b61141887828801611353565b925092505092959194509250565b5f8083601f84011261143b5761143a6112f2565b5b8235905067ffffffffffffffff811115611458576114576112f6565b5b602083019150836001820283011115611474576114736112fa565b5b9250929050565b5f80602083850312156114915761149061120f565b5b5f83013567ffffffffffffffff8111156114ae576114ad611213565b5b6114ba85828601611426565b92509250509250929050565b5f819050919050565b6114d8816114c6565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611522826114f9565b9050919050565b61153281611518565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f805f805f6080868803121561156c5761156b61120f565b5b5f611579888289016114e5565b955050602061158a888289016114e5565b945050604061159b8882890161153f565b935050606086013567ffffffffffffffff8111156115bc576115bb611213565b5b6115c888828901611426565b92509250509295509295909350565b5f602082840312156115ec576115eb61120f565b5b5f6115f98482850161153f565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61163681611602565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167e8261163c565b6116888185611646565b9350611698818560208601611656565b6116a181611664565b840191505092915050565b6116b5816114c6565b82525050565b6116c481611518565b82525050565b5f819050919050565b6116dc816116ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611714816114c6565b82525050565b5f611725838361170b565b60208301905092915050565b5f602082019050919050565b5f611747826116e2565b61175181856116ec565b935061175c836116fc565b805f5b8381101561178c578151611773888261171a565b975061177e83611731565b92505060018101905061175f565b5085935050505092915050565b5f60e0820190506117ac5f83018a61162d565b81810360208301526117be8189611674565b905081810360408301526117d28188611674565b90506117e160608301876116ac565b6117ee60808301866116bb565b6117fb60a08301856116d3565b81810360c083015261180d818461173d565b905098975050505050505050565b5f60208201905061182e5f8301846116bb565b92915050565b5f60ff82169050919050565b61184981611834565b8114611853575f80fd5b50565b5f8135905061186481611840565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118a482611664565b810181811067ffffffffffffffff821117156118c3576118c261186e565b5b80604052505050565b5f6118d5611206565b90506118e1828261189b565b919050565b5f67ffffffffffffffff821115611900576118ff61186e565b5b61190982611664565b9050602081019050919050565b828183375f83830152505050565b5f611936611931846118e6565b6118cc565b9050828152602081018484840111156119525761195161186a565b5b61195d848285611916565b509392505050565b5f82601f830112611979576119786112f2565b5b8135611989848260208601611924565b91505092915050565b5f805f80608085870312156119aa576119a961120f565b5b5f6119b7878288016114e5565b94505060206119c887828801611856565b93505060406119d98782880161153f565b925050606085013567ffffffffffffffff8111156119fa576119f9611213565b5b611a0687828801611965565b91505092959194509250565b5f602082019050611a255f8301846116d3565b92915050565b5f602082019050611a3e5f8301846116ac565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a7a81611297565b8114611a84575f80fd5b50565b5f81359050611a9581611a71565b92915050565b5f60208284031215611ab057611aaf61120f565b5b5f611abd84828501611a87565b91505092915050565b5f67ffffffffffffffff821115611ae057611adf61186e565b5b602082029050602081019050919050565b5f611b03611afe84611ac6565b6118cc565b90508083825260208201905060208402830185811115611b2657611b256112fa565b5b835b81811015611b4f5780611b3b888261153f565b845260208401935050602081019050611b28565b5050509392505050565b5f82601f830112611b6d57611b6c6112f2565b5b8135611b7d848260208601611af1565b91505092915050565b5f611b90826114f9565b9050919050565b611ba081611b86565b8114611baa575f80fd5b50565b5f81359050611bbb81611b97565b92915050565b5f8060408385031215611bd757611bd661120f565b5b5f83013567ffffffffffffffff811115611bf457611bf3611213565b5b611c0085828601611b59565b9250506020611c1185828601611bad565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c3857611c37611c1b565b5b611c4260406118cc565b90505f82013567ffffffffffffffff811115611c6157611c60611c1f565b5b611c6d84828501611965565b5f83015250602082013567ffffffffffffffff811115611c9057611c8f611c1f565b5b611c9c84828501611965565b60208301525092915050565b5f60208284031215611cbd57611cbc61120f565b5b5f82013567ffffffffffffffff811115611cda57611cd9611213565b5b611ce684828501611c23565b91505092915050565b5f81519050611cfd81611529565b92915050565b5f611d15611d10846118e6565b6118cc565b905082815260208101848484011115611d3157611d3061186a565b5b611d3c848285611656565b509392505050565b5f82601f830112611d5857611d576112f2565b5b8151611d68848260208601611d03565b91505092915050565b5f81519050611d7f81611840565b92915050565b5f60608284031215611d9a57611d99611c1b565b5b611da460606118cc565b90505f611db384828501611cef565b5f83015250602082015167ffffffffffffffff811115611dd657611dd5611c1f565b5b611de284828501611d44565b6020830152506040611df684828501611d71565b60408301525092915050565b5f60208284031215611e1757611e1661120f565b5b5f82015167ffffffffffffffff811115611e3457611e33611213565b5b611e4084828501611d85565b91505092915050565b611e5281611834565b82525050565b5f604082019050611e6b5f830185611e49565b611e7860208301846116ac565b9392505050565b5f60a082019050611e925f8301886116d3565b611e9f60208301876116ac565b611eac6040830186611e49565b611eb960608301856116bb565b611ec660808301846116d3565b969550505050505056fea2646970667358221220c878bffa469c59cf5f5f9a4334b893b031a135760d3134b74f109c8a522594c264736f6c634300081a0033",q5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c6004803603810190610117919061126c565b610374565b60405161012991906112b1565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112d9565b60405180910390f35b348015610171575f80fd5b5061018c600480360381019061018791906113a8565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af919061147b565b61056e565b005b6101be61071c565b005b3480156101cb575f80fd5b506101e660048036038101906101e19190611553565b610755565b6040516101f391906112b1565b60405180910390f35b610204610948565b005b348015610211575f80fd5b5061022c600480360381019061022791906115d7565b61095b565b60405161023991906112b1565b60405180910390f35b34801561024d575f80fd5b50610256610977565b6040516102699796959493929190611799565b60405180910390f35b34801561027d575f80fd5b506102866109c2565b604051610293919061181b565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115d7565b6109ea565b005b3480156102cf575f80fd5b506102ea60048036038101906102e59190611992565b610a35565b6040516102f79190611a12565b60405180910390f35b61031a600480360381019061031591906115d7565b610a9e565b005b610336600480360381019061033191906115d7565b610adc565b005b348015610343575f80fd5b5061035e600480360381019061035991906115d7565b610b05565b60405161036b9190611a2b565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610b1e565b5b9050919050565b5f6103f6610b97565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610ba1565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a44565b5b90506020020160208101906104e19190611a9b565b5f808787858181106104f6576104f5611a44565b5b905060200201602081019061050b91906115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610bd8565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611bc1565b915091506105e2825f815181106105d5576105d4611a44565b5b6020026020010151610c01565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106d8919061181b565b60405180910390a150508015610717576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107ec9190611ca8565b90505f815f01518060200190518101906108069190611e02565b90505f61081d898360400151898660200151610a35565b905087826040015160ff1611610870578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610867929190611e58565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108f2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090881896001610cd79092919063ffffffff16565b61093a818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d3c9092919063ffffffff16565b935050505095945050505050565b610950610ba1565b6109595f610e3f565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506109ab610f05565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109f2610ba1565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a947ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a79959493929190611e7f565b60405160208183030381529060405280519060200120610f7c565b9050949350505050565b610aa6610ba1565b63389a75e1600c52805f526020600c208054421115610acc57636f5e88185f526004601cfd5b5f815550610ad981610e3f565b50565b610ae4610ba1565b8060601b610af957637448fbae5f526004601cfd5b610b0281610e3f565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b905750610b8f82610ff8565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bd6576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610c09611071565b15610c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c4357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cd4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610d0257815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2f57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e3857604051835f5260208301516040526040835103610da9576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610da657600193505f60605282604052505050610e38565b50505b6041835103610def5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610ded57600192505f606052816040525050610e38565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e47611071565b15610eac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f02565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f85611075565b15610f9957610f9261107d565b9050610fd5565b7f00000000000000000000000000000000000000000000000000000000000000009050610fc4611145565b15610fd457610fd161107d565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061106a57506110698261119d565b5b9050919050565b5f90565b5f6001905090565b5f80611087611075565b156110b5575f80611096610f05565b91509150818051906020012093508080519060200120925050506110fc565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61124b81611217565b8114611255575f80fd5b50565b5f8135905061126681611242565b92915050565b5f602082840312156112815761128061120f565b5b5f61128e84828501611258565b91505092915050565b5f8115159050919050565b6112ab81611297565b82525050565b5f6020820190506112c45f8301846112a2565b92915050565b6112d381611217565b82525050565b5f6020820190506112ec5f8301846112ca565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611313576113126112f2565b5b8235905067ffffffffffffffff8111156113305761132f6112f6565b5b60208301915083602082028301111561134c5761134b6112fa565b5b9250929050565b5f8083601f840112611368576113676112f2565b5b8235905067ffffffffffffffff811115611385576113846112f6565b5b6020830191508360208202830111156113a1576113a06112fa565b5b9250929050565b5f805f80604085870312156113c0576113bf61120f565b5b5f85013567ffffffffffffffff8111156113dd576113dc611213565b5b6113e9878288016112fe565b9450945050602085013567ffffffffffffffff81111561140c5761140b611213565b5b61141887828801611353565b925092505092959194509250565b5f8083601f84011261143b5761143a6112f2565b5b8235905067ffffffffffffffff811115611458576114576112f6565b5b602083019150836001820283011115611474576114736112fa565b5b9250929050565b5f80602083850312156114915761149061120f565b5b5f83013567ffffffffffffffff8111156114ae576114ad611213565b5b6114ba85828601611426565b92509250509250929050565b5f819050919050565b6114d8816114c6565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611522826114f9565b9050919050565b61153281611518565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f805f805f6080868803121561156c5761156b61120f565b5b5f611579888289016114e5565b955050602061158a888289016114e5565b945050604061159b8882890161153f565b935050606086013567ffffffffffffffff8111156115bc576115bb611213565b5b6115c888828901611426565b92509250509295509295909350565b5f602082840312156115ec576115eb61120f565b5b5f6115f98482850161153f565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61163681611602565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167e8261163c565b6116888185611646565b9350611698818560208601611656565b6116a181611664565b840191505092915050565b6116b5816114c6565b82525050565b6116c481611518565b82525050565b5f819050919050565b6116dc816116ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611714816114c6565b82525050565b5f611725838361170b565b60208301905092915050565b5f602082019050919050565b5f611747826116e2565b61175181856116ec565b935061175c836116fc565b805f5b8381101561178c578151611773888261171a565b975061177e83611731565b92505060018101905061175f565b5085935050505092915050565b5f60e0820190506117ac5f83018a61162d565b81810360208301526117be8189611674565b905081810360408301526117d28188611674565b90506117e160608301876116ac565b6117ee60808301866116bb565b6117fb60a08301856116d3565b81810360c083015261180d818461173d565b905098975050505050505050565b5f60208201905061182e5f8301846116bb565b92915050565b5f60ff82169050919050565b61184981611834565b8114611853575f80fd5b50565b5f8135905061186481611840565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118a482611664565b810181811067ffffffffffffffff821117156118c3576118c261186e565b5b80604052505050565b5f6118d5611206565b90506118e1828261189b565b919050565b5f67ffffffffffffffff821115611900576118ff61186e565b5b61190982611664565b9050602081019050919050565b828183375f83830152505050565b5f611936611931846118e6565b6118cc565b9050828152602081018484840111156119525761195161186a565b5b61195d848285611916565b509392505050565b5f82601f830112611979576119786112f2565b5b8135611989848260208601611924565b91505092915050565b5f805f80608085870312156119aa576119a961120f565b5b5f6119b7878288016114e5565b94505060206119c887828801611856565b93505060406119d98782880161153f565b925050606085013567ffffffffffffffff8111156119fa576119f9611213565b5b611a0687828801611965565b91505092959194509250565b5f602082019050611a255f8301846116d3565b92915050565b5f602082019050611a3e5f8301846116ac565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a7a81611297565b8114611a84575f80fd5b50565b5f81359050611a9581611a71565b92915050565b5f60208284031215611ab057611aaf61120f565b5b5f611abd84828501611a87565b91505092915050565b5f67ffffffffffffffff821115611ae057611adf61186e565b5b602082029050602081019050919050565b5f611b03611afe84611ac6565b6118cc565b90508083825260208201905060208402830185811115611b2657611b256112fa565b5b835b81811015611b4f5780611b3b888261153f565b845260208401935050602081019050611b28565b5050509392505050565b5f82601f830112611b6d57611b6c6112f2565b5b8135611b7d848260208601611af1565b91505092915050565b5f611b90826114f9565b9050919050565b611ba081611b86565b8114611baa575f80fd5b50565b5f81359050611bbb81611b97565b92915050565b5f8060408385031215611bd757611bd661120f565b5b5f83013567ffffffffffffffff811115611bf457611bf3611213565b5b611c0085828601611b59565b9250506020611c1185828601611bad565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c3857611c37611c1b565b5b611c4260406118cc565b90505f82013567ffffffffffffffff811115611c6157611c60611c1f565b5b611c6d84828501611965565b5f83015250602082013567ffffffffffffffff811115611c9057611c8f611c1f565b5b611c9c84828501611965565b60208301525092915050565b5f60208284031215611cbd57611cbc61120f565b5b5f82013567ffffffffffffffff811115611cda57611cd9611213565b5b611ce684828501611c23565b91505092915050565b5f81519050611cfd81611529565b92915050565b5f611d15611d10846118e6565b6118cc565b905082815260208101848484011115611d3157611d3061186a565b5b611d3c848285611656565b509392505050565b5f82601f830112611d5857611d576112f2565b5b8151611d68848260208601611d03565b91505092915050565b5f81519050611d7f81611840565b92915050565b5f60608284031215611d9a57611d99611c1b565b5b611da460606118cc565b90505f611db384828501611cef565b5f83015250602082015167ffffffffffffffff811115611dd657611dd5611c1f565b5b611de284828501611d44565b6020830152506040611df684828501611d71565b60408301525092915050565b5f60208284031215611e1757611e1661120f565b5b5f82015167ffffffffffffffff811115611e3457611e33611213565b5b611e4084828501611d85565b91505092915050565b611e5281611834565b82525050565b5f604082019050611e6b5f830185611e49565b611e7860208301846116ac565b9392505050565b5f60a082019050611e925f8301886116d3565b611e9f60208301876116ac565b611eac6040830186611e49565b611eb960608301856116bb565b611ec660808301846116d3565b969550505050505056fea2646970667358221220c878bffa469c59cf5f5f9a4334b893b031a135760d3134b74f109c8a522594c264736f6c634300081a0033",F5={},U5={},n0={_format:H5,contractName:D5,sourceName:B5,abi:S5,bytecode:V5,deployedBytecode:q5,linkReferences:F5,deployedLinkReferences:U5};function P5(i,s,a){const n=i[s.name];if(typeof n=="function")return n;const r=i[a];return typeof r=="function"?r:p=>s(i,p)}async function G5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new y.ConnectorUnavailableReconnectingError({connector:e});const[d,x]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:x,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new y.ConnectorNotConnectedError;const n=s.chainId??a.chainId,r=await a.connector.getChainId();if(r!==a.chainId)throw new y.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:r});const p=a.connector;if(p.getClient)return p.getClient({chainId:n});const c=y.parseAccount(s.account??a.accounts[0]);if(c.address=y.getAddress(c.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===c.address.toLowerCase()))throw new y.ConnectorAccountNotFoundError({address:c.address,connector:p});const O=i.chains.find(e=>e.id===n),f=await a.connector.getProvider({chainId:n});return y.createClient({account:c,chain:O,name:"Connector Client",transport:e=>y.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:n,connector:r,...p}=s;let c;return typeof a=="object"&&a.type==="local"?c=i.getClient({chainId:n}):c=await G5(i,{account:a,chainId:n,connector:r}),await P5(c,y.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:n?{id:n}:null})}const Z5=async function(s,a){var u,o,l,m,T,v,w,M,I,h,A,g,R;const n=a.privateKey,r=a.mnemonic,p=a.chain;if(!n&&!r)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!y.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,O]=y.getDeployableOptions({chain:p,privateKey:n,mnemonic:r}),{config:f,account:e}=c,d=O.id,x=await new b.BoostRegistry({address:null,...c}).deploy(),z=class z extends b.BoostRegistry{};z.addresses={[d]:x.assertValidAddress()};let C=z;const _=new C({...c,address:x.assertValidAddress()}),c0=await new b.BoostCore({...c,registryAddress:_.assertValidAddress(),protocolFeeReceiver:e.address,owner:e.address}).deploy(),i0=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),s0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),p0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),y0=await b.getDeployedContractAddress(f,t(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,t(f,{abi:J.abi,bytecode:J.bytecode,account:e})),L=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),r0=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:n0.abi,bytecode:n0.bytecode,account:e})),F=await b.getDeployedContractAddress(f,t(f,{abi:t0.abi,bytecode:t0.bytecode,account:e})),u0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:D},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:N},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:E},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:$},m),ManagedBudgetWithFees:(T=class extends b.ManagedBudgetWithFees{},T.bases={[d]:p0},T),AllowListIncentive:(v=class extends b.AllowListIncentive{},v.bases={[d]:k},v),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(M=class extends b.ERC20Incentive{},M.bases={[d]:H},M),ERC20VariableIncentive:(I=class extends b.ERC20VariableIncentive{},I.bases={[d]:S},I),ERC20VariableCriteriaIncentive:(h=class extends b.ERC20VariableCriteriaIncentive{},h.bases={[d]:V},h),PointsIncentive:(A=class extends b.PointsIncentive{},A.bases={[d]:B},A),SignerValidator:(g=class extends b.SignerValidator{},g.bases={[d]:q},g),LimitedSignerValidator:(R=class extends b.LimitedSignerValidator{},R.bases={[d]:F},R)};for(const[o0,U]of Object.entries(u0))await _.register(U.registryType,o0,U.bases[d]);return{BOOST_CORE_ADDRESS:c0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:_.assertValidAddress(),CONTRACT_ACTION_BASE:i0,EVENT_ACTION_BASE:D,ERC721_MINT_ACTION_BASE:s0,SIMPLE_ALLOWLIST_BASE:N,SIMPLE_DENYLIST_BASE:E,MANAGED_BUDGET_BASE:$,VESTING_BUDGET_BASE:y0,ALLOWLIST_INCENTIVE_BASE:k,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:H,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:V,ERC1155_INCENTIVE_BASE:r0,POINTS_INCENTIVE_BASE:B,SIGNER_VALIDATOR_BASE:q,LIMITED_SIGNER_VALIDATOR_BASE:F}};exports.deploy=Z5;