@boostxyz/cli 1.1.0-alpha.34 → 1.1.0-alpha.36

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"),a=require("/home/runner/work/boost-protocol/boost-protocol/node_modules/.pnpm/@wagmi+core@2.13.8_@tanstack+query-core@5.32.0_@types+react@18.3.0_immer@10.0.2_react@18.3.0__rf4knvbttxkigkqzlfrm4rcvsi/node_modules/@wagmi/core/dist/esm/exports/index.js"),S=require("../utils-DX4pZJ98.cjs"),p0="hh-sol-artifact-1",y0="ContractAction",r0="contracts/actions/ContractAction.sol",u0=[{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"}],o0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",l0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",m0={},T0={},V={_format:p0,contractName:y0,sourceName:r0,abi:u0,bytecode:o0,deployedBytecode:l0,linkReferences:m0,deployedLinkReferences:T0},v0="hh-sol-artifact-1",w0="ERC721MintAction",M0="contracts/actions/ERC721MintAction.sol",I0=[{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"}],h0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516116026100c85f395f61054001526116025ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220a0bff22b510bd0fc26a18717d2760e209111bd0d91afb7b1dc48433b91cc280a64736f6c634300081a0033",A0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220a0bff22b510bd0fc26a18717d2760e209111bd0d91afb7b1dc48433b91cc280a64736f6c634300081a0033",O0={},R0={},q={_format:v0,contractName:w0,sourceName:M0,abi:I0,bytecode:h0,deployedBytecode:A0,linkReferences:O0,deployedLinkReferences:R0},g0="hh-sol-artifact-1",x0="EventAction",_0="contracts/actions/EventAction.sol",C0=[{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"}],z0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805161231a6100c85f395f61034a015261231a5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200236c05ff7d71063a06c7ef5cea85ff52f299b5e243d3a9892764b871433e7f864736f6c634300081a0033",N0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200236c05ff7d71063a06c7ef5cea85ff52f299b5e243d3a9892764b871433e7f864736f6c634300081a0033",E0={},$0={},U={_format:g0,contractName:x0,sourceName:_0,abi:C0,bytecode:z0,deployedBytecode:N0,linkReferences:E0,deployedLinkReferences:$0},L0="hh-sol-artifact-1",k0="SimpleAllowList",H0="contracts/allowlists/SimpleAllowList.sol",D0=[{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"}],B0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea26469706673582212206b73e8198e9228139c9a79a2bdd5d9f229bdb7a1f590aa641136742ce255382f64736f6c634300081a0033",S0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea26469706673582212206b73e8198e9228139c9a79a2bdd5d9f229bdb7a1f590aa641136742ce255382f64736f6c634300081a0033",V0={},q0={},F={_format:L0,contractName:k0,sourceName:H0,abi:D0,bytecode:B0,deployedBytecode:S0,linkReferences:V0,deployedLinkReferences:q0},U0="hh-sol-artifact-1",F0="SimpleDenyList",G0="contracts/allowlists/SimpleDenyList.sol",P0=[{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"}],Z0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea2646970667358221220116cbe1ffbc474fcaeb37297cb70b6ef5e5edc8a954bd32ea381049b2cd20ad664736f6c634300081a0033",j0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea2646970667358221220116cbe1ffbc474fcaeb37297cb70b6ef5e5edc8a954bd32ea381049b2cd20ad664736f6c634300081a0033",K0={},Q0={},G={_format:U0,contractName:F0,sourceName:G0,abi:P0,bytecode:Z0,deployedBytecode:j0,linkReferences:K0,deployedLinkReferences:Q0},W0="hh-sol-artifact-1",Y0="ManagedBudget",J0="contracts/budgets/ManagedBudget.sol",X0=[{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"}],ff="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea2646970667358221220d33a2596e25edfdcc4e9c01c346e636d27f88842e8256c376a620765a437037a64736f6c634300081a0033",bf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea2646970667358221220d33a2596e25edfdcc4e9c01c346e636d27f88842e8256c376a620765a437037a64736f6c634300081a0033",ef={},af={},P={_format:W0,contractName:Y0,sourceName:J0,abi:X0,bytecode:ff,deployedBytecode:bf,linkReferences:ef,deployedLinkReferences:af},df="hh-sol-artifact-1",tf="VestingBudget",cf="contracts/budgets/VestingBudget.sol",nf=[{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"}],sf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212203042a98b6f44d6bf5b3bb6c86e9629f17b6ec3105eebd1b8d17156f46a68750064736f6c634300081a0033",pf="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212203042a98b6f44d6bf5b3bb6c86e9629f17b6ec3105eebd1b8d17156f46a68750064736f6c634300081a0033",yf={},rf={},Z={_format:df,contractName:tf,sourceName:cf,abi:nf,bytecode:sf,deployedBytecode:pf,linkReferences:yf,deployedLinkReferences:rf},uf="hh-sol-artifact-1",of="AllowListIncentive",lf="contracts/incentives/AllowListIncentive.sol",mf=[{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"}],Tf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611815806101185f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190611006565b6104a0565b604051610160919061104b565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a919061107c565b60405180910390f35b34801561019e575f80fd5b506101a7610522565b6040516101b4919061107c565b60405180910390f35b6101c5610528565b005b3480156101d2575f80fd5b506101db610579565b6040516101e891906110a4565b60405180910390f35b3480156101fc575f80fd5b506102056105a0565b60405161021291906110fc565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611176565b6105c3565b005b34801561024e575f80fd5b5061026960048036038101906102649190611176565b6106a3565b6040516102779291906111c1565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611176565b6106d7565b6040516102b39190611258565b60405180910390f35b6102c461072e565b005b6102ce610767565b005b3480156102db575f80fd5b506102e461077a565b6040516102f191906112d3565b60405180910390f35b348015610305575f80fd5b5061030e61079f565b60405161031b91906110fc565b60405180910390f35b34801561032f575f80fd5b506103386107c7565b604051610345919061107c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190611316565b6107cd565b604051610381919061104b565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611373565b610973565b6040516103bd919061104b565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190611316565b610990565b6040516103f9919061104b565b60405180910390f35b34801561040d575f80fd5b50610416610a96565b604051610423919061107c565b60405180910390f35b61044660048036038101906104419190611373565b610a9c565b005b610462600480360381019061045d9190611373565b610ada565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611373565b610b03565b604051610497919061107c565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b1c565b5b9050919050565b5f600254905090565b60025481565b5f610531610b95565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6105cc610b9f565b905080546003825580156105fe5760018160011c14303b106105f55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060f91906114cc565b905061061a33610bc8565b805f015160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160048190555050801561069e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106f3576106f26113a2565b5b6040519080825280601f01601f1916602001820160405280156107255781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61076f610c9e565b6107785f610cd5565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f6107d6610c9e565b60045460015f8154809291906107eb90611524565b91905055101580610842575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610879576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108d986610d9b565b9150915060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b81526004016109399291906116d9565b5f604051808303815f87803b158015610950575f80fd5b505af1158015610962573d5f803e3d5ffd5b505050506001925050509392505050565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f6004546001541080156109eb575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a8d575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a4c9190611731565b602060405180830381865afa158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611787565b155b90509392505050565b60015481565b610aa4610c9e565b63389a75e1600c52805f526020600c208054421115610aca57636f5e88185f526004601cfd5b5f815550610ad781610cd5565b50565b610ae2610c9e565b8060601b610af757637448fbae5f526004601cfd5b610b0081610cd5565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b8e5750610b8d82610eba565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd0610f33565b15610c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cd3576382b429005f526004601cfd5b565b610cdd610f33565b15610d42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d98565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610dba57610db96113a2565b5b604051908082528060200260200182016040528015610de85781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610e0757610e066113a2565b5b604051908082528060200260200182016040528015610e355781602001602082028036833780820191505090505b50905084825f81518110610e4c57610e4b6117b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9b57610e9a6117b2565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f2c5750610f2b82610f37565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fe581610fb1565b8114610fef575f80fd5b50565b5f8135905061100081610fdc565b92915050565b5f6020828403121561101b5761101a610fa9565b5b5f61102884828501610ff2565b91505092915050565b5f8115159050919050565b61104581611031565b82525050565b5f60208201905061105e5f83018461103c565b92915050565b5f819050919050565b61107681611064565b82525050565b5f60208201905061108f5f83018461106d565b92915050565b61109e81610fb1565b82525050565b5f6020820190506110b75f830184611095565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110e6826110bd565b9050919050565b6110f6816110dc565b82525050565b5f60208201905061110f5f8301846110ed565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261113657611135611115565b5b8235905067ffffffffffffffff81111561115357611152611119565b5b60208301915083600182028301111561116f5761116e61111d565b5b9250929050565b5f806020838503121561118c5761118b610fa9565b5b5f83013567ffffffffffffffff8111156111a9576111a8610fad565b5b6111b585828601611121565b92509250509250929050565b5f6040820190506111d45f83018561106d565b6111e160208301846110ed565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61122a826111e8565b61123481856111f2565b9350611244818560208601611202565b61124d81611210565b840191505092915050565b5f6020820190508181035f8301526112708184611220565b905092915050565b5f819050919050565b5f61129b611296611291846110bd565b611278565b6110bd565b9050919050565b5f6112ac82611281565b9050919050565b5f6112bd826112a2565b9050919050565b6112cd816112b3565b82525050565b5f6020820190506112e65f8301846112c4565b92915050565b6112f5816110dc565b81146112ff575f80fd5b50565b5f81359050611310816112ec565b92915050565b5f805f6040848603121561132d5761132c610fa9565b5b5f61133a86828701611302565b935050602084013567ffffffffffffffff81111561135b5761135a610fad565b5b61136786828701611121565b92509250509250925092565b5f6020828403121561138857611387610fa9565b5b5f61139584828501611302565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113d882611210565b810181811067ffffffffffffffff821117156113f7576113f66113a2565b5b80604052505050565b5f611409610fa0565b905061141582826113cf565b919050565b5f611424826110dc565b9050919050565b6114348161141a565b811461143e575f80fd5b50565b5f8135905061144f8161142b565b92915050565b61145e81611064565b8114611468575f80fd5b50565b5f8135905061147981611455565b92915050565b5f604082840312156114945761149361139e565b5b61149e6040611400565b90505f6114ad84828501611441565b5f8301525060206114c08482850161146b565b60208301525092915050565b5f604082840312156114e1576114e0610fa9565b5b5f6114ee8482850161147f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61152e82611064565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115605761155f6114f7565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61159d816110dc565b82525050565b5f6115ae8383611594565b60208301905092915050565b5f602082019050919050565b5f6115d08261156b565b6115da8185611575565b93506115e583611585565b805f5b838110156116155781516115fc88826115a3565b9750611607836115ba565b9250506001810190506115e8565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61165481611031565b82525050565b5f611665838361164b565b60208301905092915050565b5f602082019050919050565b5f61168782611622565b611691818561162c565b935061169c8361163c565b805f5b838110156116cc5781516116b3888261165a565b97506116be83611671565b92505060018101905061169f565b5085935050505092915050565b5f6040820190508181035f8301526116f181856115c6565b90508181036020830152611705818461167d565b90509392505050565b50565b5f61171c5f836111f2565b91506117278261170e565b5f82019050919050565b5f6040820190506117445f8301846110ed565b818103602083015261175581611711565b905092915050565b61176681611031565b8114611770575f80fd5b50565b5f815190506117818161175d565b92915050565b5f6020828403121561179c5761179b610fa9565b5b5f6117a984828501611773565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212202f2805b0b43803fbc9dd3f411ae04b22f4b0334ed912f80ca9b152bb7696ae2b64736f6c634300081a0033",vf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190611006565b6104a0565b604051610160919061104b565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a919061107c565b60405180910390f35b34801561019e575f80fd5b506101a7610522565b6040516101b4919061107c565b60405180910390f35b6101c5610528565b005b3480156101d2575f80fd5b506101db610579565b6040516101e891906110a4565b60405180910390f35b3480156101fc575f80fd5b506102056105a0565b60405161021291906110fc565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611176565b6105c3565b005b34801561024e575f80fd5b5061026960048036038101906102649190611176565b6106a3565b6040516102779291906111c1565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611176565b6106d7565b6040516102b39190611258565b60405180910390f35b6102c461072e565b005b6102ce610767565b005b3480156102db575f80fd5b506102e461077a565b6040516102f191906112d3565b60405180910390f35b348015610305575f80fd5b5061030e61079f565b60405161031b91906110fc565b60405180910390f35b34801561032f575f80fd5b506103386107c7565b604051610345919061107c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190611316565b6107cd565b604051610381919061104b565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611373565b610973565b6040516103bd919061104b565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190611316565b610990565b6040516103f9919061104b565b60405180910390f35b34801561040d575f80fd5b50610416610a96565b604051610423919061107c565b60405180910390f35b61044660048036038101906104419190611373565b610a9c565b005b610462600480360381019061045d9190611373565b610ada565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611373565b610b03565b604051610497919061107c565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b1c565b5b9050919050565b5f600254905090565b60025481565b5f610531610b95565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6105cc610b9f565b905080546003825580156105fe5760018160011c14303b106105f55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060f91906114cc565b905061061a33610bc8565b805f015160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160048190555050801561069e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106f3576106f26113a2565b5b6040519080825280601f01601f1916602001820160405280156107255781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61076f610c9e565b6107785f610cd5565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f6107d6610c9e565b60045460015f8154809291906107eb90611524565b91905055101580610842575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610879576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108d986610d9b565b9150915060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b81526004016109399291906116d9565b5f604051808303815f87803b158015610950575f80fd5b505af1158015610962573d5f803e3d5ffd5b505050506001925050509392505050565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f6004546001541080156109eb575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a8d575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a4c9190611731565b602060405180830381865afa158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611787565b155b90509392505050565b60015481565b610aa4610c9e565b63389a75e1600c52805f526020600c208054421115610aca57636f5e88185f526004601cfd5b5f815550610ad781610cd5565b50565b610ae2610c9e565b8060601b610af757637448fbae5f526004601cfd5b610b0081610cd5565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b8e5750610b8d82610eba565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd0610f33565b15610c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cd3576382b429005f526004601cfd5b565b610cdd610f33565b15610d42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d98565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610dba57610db96113a2565b5b604051908082528060200260200182016040528015610de85781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610e0757610e066113a2565b5b604051908082528060200260200182016040528015610e355781602001602082028036833780820191505090505b50905084825f81518110610e4c57610e4b6117b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9b57610e9a6117b2565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f2c5750610f2b82610f37565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fe581610fb1565b8114610fef575f80fd5b50565b5f8135905061100081610fdc565b92915050565b5f6020828403121561101b5761101a610fa9565b5b5f61102884828501610ff2565b91505092915050565b5f8115159050919050565b61104581611031565b82525050565b5f60208201905061105e5f83018461103c565b92915050565b5f819050919050565b61107681611064565b82525050565b5f60208201905061108f5f83018461106d565b92915050565b61109e81610fb1565b82525050565b5f6020820190506110b75f830184611095565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110e6826110bd565b9050919050565b6110f6816110dc565b82525050565b5f60208201905061110f5f8301846110ed565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261113657611135611115565b5b8235905067ffffffffffffffff81111561115357611152611119565b5b60208301915083600182028301111561116f5761116e61111d565b5b9250929050565b5f806020838503121561118c5761118b610fa9565b5b5f83013567ffffffffffffffff8111156111a9576111a8610fad565b5b6111b585828601611121565b92509250509250929050565b5f6040820190506111d45f83018561106d565b6111e160208301846110ed565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61122a826111e8565b61123481856111f2565b9350611244818560208601611202565b61124d81611210565b840191505092915050565b5f6020820190508181035f8301526112708184611220565b905092915050565b5f819050919050565b5f61129b611296611291846110bd565b611278565b6110bd565b9050919050565b5f6112ac82611281565b9050919050565b5f6112bd826112a2565b9050919050565b6112cd816112b3565b82525050565b5f6020820190506112e65f8301846112c4565b92915050565b6112f5816110dc565b81146112ff575f80fd5b50565b5f81359050611310816112ec565b92915050565b5f805f6040848603121561132d5761132c610fa9565b5b5f61133a86828701611302565b935050602084013567ffffffffffffffff81111561135b5761135a610fad565b5b61136786828701611121565b92509250509250925092565b5f6020828403121561138857611387610fa9565b5b5f61139584828501611302565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113d882611210565b810181811067ffffffffffffffff821117156113f7576113f66113a2565b5b80604052505050565b5f611409610fa0565b905061141582826113cf565b919050565b5f611424826110dc565b9050919050565b6114348161141a565b811461143e575f80fd5b50565b5f8135905061144f8161142b565b92915050565b61145e81611064565b8114611468575f80fd5b50565b5f8135905061147981611455565b92915050565b5f604082840312156114945761149361139e565b5b61149e6040611400565b90505f6114ad84828501611441565b5f8301525060206114c08482850161146b565b60208301525092915050565b5f604082840312156114e1576114e0610fa9565b5b5f6114ee8482850161147f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61152e82611064565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115605761155f6114f7565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61159d816110dc565b82525050565b5f6115ae8383611594565b60208301905092915050565b5f602082019050919050565b5f6115d08261156b565b6115da8185611575565b93506115e583611585565b805f5b838110156116155781516115fc88826115a3565b9750611607836115ba565b9250506001810190506115e8565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61165481611031565b82525050565b5f611665838361164b565b60208301905092915050565b5f602082019050919050565b5f61168782611622565b611691818561162c565b935061169c8361163c565b805f5b838110156116cc5781516116b3888261165a565b97506116be83611671565b92505060018101905061169f565b5085935050505092915050565b5f6040820190508181035f8301526116f181856115c6565b90508181036020830152611705818461167d565b90509392505050565b50565b5f61171c5f836111f2565b91506117278261170e565b5f82019050919050565b5f6040820190506117445f8301846110ed565b818103602083015261175581611711565b905092915050565b61176681611031565b8114611770575f80fd5b50565b5f815190506117818161175d565b92915050565b5f6020828403121561179c5761179b610fa9565b5b5f6117a984828501611773565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212202f2805b0b43803fbc9dd3f411ae04b22f4b0334ed912f80ca9b152bb7696ae2b64736f6c634300081a0033",wf={},Mf={},j={_format:uf,contractName:of,sourceName:lf,abi:mf,bytecode:Tf,deployedBytecode:vf,linkReferences:wf,deployedLinkReferences:Mf},If="hh-sol-artifact-1",hf="CGDAIncentive",Af="contracts/incentives/CGDAIncentive.sol",Of=[{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"}],Rf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6127d4806101185f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a2b565b610777565b6040516102249190611a70565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aa1565b60405180910390f35b610271600480360381019061026c9190611ae4565b610898565b005b61028d60048036038101906102889190611b69565b6108a5565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b69565b6108bb565b6040516102c29190611a70565b60405180910390f35b3480156102d6575f80fd5b506102df6108d1565b6040516102ec9190611aa1565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bb6565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bcf565b61094f565b60405161035c9190611aa1565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c09565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611cd8565b61098b565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dab565b610a99565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dab565b610ccb565b604051610413929190611df6565b60405180910390f35b61043660048036038101906104319190611b69565b610e17565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dab565b610e2d565b60405161046b9190611e8d565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b69565b610efd565b6040516104a79190611a70565b60405180910390f35b6104b8610f14565b005b6104c2610f4d565b005b3480156104cf575f80fd5b506104d8610f60565b6040516104e59190611aa1565b60405180910390f35b3480156104f9575f80fd5b50610502610f65565b6040516105129493929190611ead565b60405180910390f35b348015610526575f80fd5b5061052f610f82565b60405161053c9190611c09565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611ef0565b610faa565b6040516105789190611a70565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611fa2565b611193565b005b3480156105b4575f80fd5b506105bd611249565b6040516105ca9190611aa1565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bcf565b61124f565b6040516106069190611a70565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611ef0565b61126c565b6040516106429190611a70565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611fa2565b61127f565b005b34801561067e575f80fd5b50610687611335565b6040516106949190611aa1565b60405180910390f35b3480156106a8575f80fd5b506106b161133b565b6040516106be9190611aa1565b60405180910390f35b6106e160048036038101906106dc9190611bcf565b611340565b005b6106fd60048036038101906106f89190611bcf565b61137e565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bcf565b6113a7565b6040516107329190611a70565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bcf565b6113fa565b60405161076e9190611aa1565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611413565b5b9050919050565b5f8060046002015442610803919061204d565b90505f61084e305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90505f610e10600460010154846108659190612080565b61086f91906120ee565b60046003015461087f919061211e565b905081811161088e5780610890565b815b935050505090565b6108a233826114bf565b50565b6108ad6114ce565b6108b78282611505565b5050565b5f81826108c78561094f565b1614905092915050565b60025481565b5f6108e0611515565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109968161151f565b8282905085859050146109d5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a91575f8484838181106109f6576109f5612151565b5b9050602002016020810190610a0b91906121a8565b90506001151581151503610a5057610a4b878784818110610a2f57610a2e612151565b5b9050602002016020810190610a449190611bcf565b6001611505565b610a83565b610a82878784818110610a6657610a65612151565b5b9050602002016020810190610a7b9190611bcf565b60016114bf565b5b5080806001019150506109d7565b505050505050565b5f610aa2611554565b90508054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae591906122dc565b90505f610b1430835f015173ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90508160800151811015610b6a57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6193929190612307565b60405180910390fd5b5f82602001511480610b7f57505f8260400151145b80610b8d57505f8260600151145b80610b9f575081602001518260800151105b15610bd6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060045f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600881905550610c843361157d565b610c8f336001611653565b50508015610cc6576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cd881611694565b5f8585810190610ce89190612455565b90505f8160200151806020019051810190610d0391906124b0565b9050610d52825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dc493929190612540565b604051602081830303815290604052604051610de09190611e8d565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e1f6114ce565b610e2982826114bf565b5050565b60605f8383810190610e3f91906122dc565b9050604051806080016040528060016002811115610e6057610e5f61257c565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ec391906125d2565b604051602081830303815290604052815250604051602001610ee591906126e8565b60405160208183030381529060405291505092915050565b5f8082610f098561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f556114ce565b610f5e5f611704565b565b600281565b6004805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fb36114ce565b610fbc846117ca565b610ffd57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ff4919061272b565b60405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f81548092919061106490612757565b91905055505f6110726107f0565b90504260046002018190555060045f015481116110935760045f01546110a4565b60045f0154816110a3919061204d565b5b6004600301819055506110f785825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116393929190612540565b60405160208183030381529060405260405161117f9190611e8d565b60405180910390a260019150509392505050565b600261119e8161151f565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff612151565b5b90506020020160208101906112159190611bcf565b85858481811061122857611227612151565b5b90506020020135611505565b80806001019150506111df565b505050505050565b60085481565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f611276846117ca565b90509392505050565b600261128a8161151f565b8282905085859050146112c9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561132d576113208686838181106112ec576112eb612151565b5b90506020020160208101906113019190611bcf565b85858481811061131457611313612151565b5b905060200201356114bf565b80806001019150506112cb565b505050505050565b60015481565b600181565b6113486114ce565b63389a75e1600c52805f526020600c20805442111561136e57636f5e88185f526004601cfd5b5f81555061137b81611704565b50565b6113866114ce565b8060601b61139b57637448fbae5f526004601cfd5b6113a481611704565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113c7610f82565b73ffffffffffffffffffffffffffffffffffffffff1614806113f357506113f2826002600117610efd565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611485575061148482611887565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114ca82825f611900565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611503576382b429005f526004601cfd5b565b61151182826001611900565b5050565b5f6202a300905090565b638b78c6d81954331461155157638b78c6d8600c52335f52806020600c205416611550576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611585611958565b156115fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115bf57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611650565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116b8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166116fb576390b8ec185f526004601cfd5b5f603452505050565b61170c611958565b15611771577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117d46107f0565b90505f8111801561182c575080611829305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b10155b801561187f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f957506118f88261195c565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192257848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a0a816119d6565b8114611a14575f80fd5b50565b5f81359050611a2581611a01565b92915050565b5f60208284031215611a4057611a3f6119ce565b5b5f611a4d84828501611a17565b91505092915050565b5f8115159050919050565b611a6a81611a56565b82525050565b5f602082019050611a835f830184611a61565b92915050565b5f819050919050565b611a9b81611a89565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b611ac381611a89565b8114611acd575f80fd5b50565b5f81359050611ade81611aba565b92915050565b5f60208284031215611af957611af86119ce565b5b5f611b0684828501611ad0565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b3882611b0f565b9050919050565b611b4881611b2e565b8114611b52575f80fd5b50565b5f81359050611b6381611b3f565b92915050565b5f8060408385031215611b7f57611b7e6119ce565b5b5f611b8c85828601611b55565b9250506020611b9d85828601611ad0565b9150509250929050565b611bb0816119d6565b82525050565b5f602082019050611bc95f830184611ba7565b92915050565b5f60208284031215611be457611be36119ce565b5b5f611bf184828501611b55565b91505092915050565b611c0381611b2e565b82525050565b5f602082019050611c1c5f830184611bfa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c4357611c42611c22565b5b8235905067ffffffffffffffff811115611c6057611c5f611c26565b5b602083019150836020820283011115611c7c57611c7b611c2a565b5b9250929050565b5f8083601f840112611c9857611c97611c22565b5b8235905067ffffffffffffffff811115611cb557611cb4611c26565b5b602083019150836020820283011115611cd157611cd0611c2a565b5b9250929050565b5f805f8060408587031215611cf057611cef6119ce565b5b5f85013567ffffffffffffffff811115611d0d57611d0c6119d2565b5b611d1987828801611c2e565b9450945050602085013567ffffffffffffffff811115611d3c57611d3b6119d2565b5b611d4887828801611c83565b925092505092959194509250565b5f8083601f840112611d6b57611d6a611c22565b5b8235905067ffffffffffffffff811115611d8857611d87611c26565b5b602083019150836001820283011115611da457611da3611c2a565b5b9250929050565b5f8060208385031215611dc157611dc06119ce565b5b5f83013567ffffffffffffffff811115611dde57611ddd6119d2565b5b611dea85828601611d56565b92509250509250929050565b5f604082019050611e095f830185611a92565b611e166020830184611bfa565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5f82611e1d565b611e698185611e27565b9350611e79818560208601611e37565b611e8281611e45565b840191505092915050565b5f6020820190508181035f830152611ea58184611e55565b905092915050565b5f608082019050611ec05f830187611a92565b611ecd6020830186611a92565b611eda6040830185611a92565b611ee76060830184611a92565b95945050505050565b5f805f60408486031215611f0757611f066119ce565b5b5f611f1486828701611b55565b935050602084013567ffffffffffffffff811115611f3557611f346119d2565b5b611f4186828701611d56565b92509250509250925092565b5f8083601f840112611f6257611f61611c22565b5b8235905067ffffffffffffffff811115611f7f57611f7e611c26565b5b602083019150836020820283011115611f9b57611f9a611c2a565b5b9250929050565b5f805f8060408587031215611fba57611fb96119ce565b5b5f85013567ffffffffffffffff811115611fd757611fd66119d2565b5b611fe387828801611c2e565b9450945050602085013567ffffffffffffffff811115612006576120056119d2565b5b61201287828801611f4d565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61205782611a89565b915061206283611a89565b925082820390508181111561207a57612079612020565b5b92915050565b5f61208a82611a89565b915061209583611a89565b92508282026120a381611a89565b915082820484148315176120ba576120b9612020565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6120f882611a89565b915061210383611a89565b925082612113576121126120c1565b5b828204905092915050565b5f61212882611a89565b915061213383611a89565b925082820190508082111561214b5761214a612020565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61218781611a56565b8114612191575f80fd5b50565b5f813590506121a28161217e565b92915050565b5f602082840312156121bd576121bc6119ce565b5b5f6121ca84828501612194565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61220d82611e45565b810181811067ffffffffffffffff8211171561222c5761222b6121d7565b5b80604052505050565b5f61223e6119c5565b905061224a8282612204565b919050565b5f80fd5b5f60a08284031215612268576122676121d3565b5b61227260a0612235565b90505f61228184828501611b55565b5f83015250602061229484828501611ad0565b60208301525060406122a884828501611ad0565b60408301525060606122bc84828501611ad0565b60608301525060806122d084828501611ad0565b60808301525092915050565b5f60a082840312156122f1576122f06119ce565b5b5f6122fe84828501612253565b91505092915050565b5f60608201905061231a5f830186611bfa565b6123276020830185611a92565b6123346040830184611a92565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561235a576123596121d7565b5b61236382611e45565b9050602081019050919050565b828183375f83830152505050565b5f61239061238b84612340565b612235565b9050828152602081018484840111156123ac576123ab61233c565b5b6123b7848285612370565b509392505050565b5f82601f8301126123d3576123d2611c22565b5b81356123e384826020860161237e565b91505092915050565b5f60408284031215612401576124006121d3565b5b61240b6040612235565b90505f61241a84828501611b55565b5f83015250602082013567ffffffffffffffff81111561243d5761243c61224f565b5b612449848285016123bf565b60208301525092915050565b5f6020828403121561246a576124696119ce565b5b5f82013567ffffffffffffffff811115612487576124866119d2565b5b612493848285016123ec565b91505092915050565b5f815190506124aa81611aba565b92915050565b5f602082840312156124c5576124c46119ce565b5b5f6124d28482850161249c565b91505092915050565b5f8160601b9050919050565b5f6124f1826124db565b9050919050565b5f612502826124e7565b9050919050565b61251a61251582611b2e565b6124f8565b82525050565b5f819050919050565b61253a61253582611a89565b612520565b82525050565b5f61254b8286612509565b60148201915061255b8285612509565b60148201915061256b8284612529565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125b281611a89565b82525050565b602082015f8201516125cc5f8501826125a9565b50505050565b5f6020820190506125e55f8301846125b8565b92915050565b600381106125fc576125fb61257c565b5b50565b5f81905061260c826125eb565b919050565b5f61261b826125ff565b9050919050565b61262b81612611565b82525050565b61263a81611b2e565b82525050565b5f82825260208201905092915050565b5f61265a82611e1d565b6126648185612640565b9350612674818560208601611e37565b61267d81611e45565b840191505092915050565b5f608083015f83015161269d5f860182612622565b5060208301516126b06020860182612631565b5060408301516126c36040860182612631565b50606083015184820360608601526126db8282612650565b9150508091505092915050565b5f6020820190508181035f8301526127008184612688565b905092915050565b50565b5f6127165f83611e27565b915061272182612708565b5f82019050919050565b5f60408201905061273e5f830184611bfa565b818103602083015261274f8161270b565b905092915050565b5f61276182611a89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279357612792612020565b5b60018201905091905056fea2646970667358221220903fc9978a0aa916e717631ddb8ac946ec1dedc5c2a6df2f4428bf244478aeda64736f6c634300081a0033",gf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a2b565b610777565b6040516102249190611a70565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aa1565b60405180910390f35b610271600480360381019061026c9190611ae4565b610898565b005b61028d60048036038101906102889190611b69565b6108a5565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b69565b6108bb565b6040516102c29190611a70565b60405180910390f35b3480156102d6575f80fd5b506102df6108d1565b6040516102ec9190611aa1565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bb6565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bcf565b61094f565b60405161035c9190611aa1565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c09565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611cd8565b61098b565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dab565b610a99565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dab565b610ccb565b604051610413929190611df6565b60405180910390f35b61043660048036038101906104319190611b69565b610e17565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dab565b610e2d565b60405161046b9190611e8d565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b69565b610efd565b6040516104a79190611a70565b60405180910390f35b6104b8610f14565b005b6104c2610f4d565b005b3480156104cf575f80fd5b506104d8610f60565b6040516104e59190611aa1565b60405180910390f35b3480156104f9575f80fd5b50610502610f65565b6040516105129493929190611ead565b60405180910390f35b348015610526575f80fd5b5061052f610f82565b60405161053c9190611c09565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611ef0565b610faa565b6040516105789190611a70565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611fa2565b611193565b005b3480156105b4575f80fd5b506105bd611249565b6040516105ca9190611aa1565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bcf565b61124f565b6040516106069190611a70565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611ef0565b61126c565b6040516106429190611a70565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611fa2565b61127f565b005b34801561067e575f80fd5b50610687611335565b6040516106949190611aa1565b60405180910390f35b3480156106a8575f80fd5b506106b161133b565b6040516106be9190611aa1565b60405180910390f35b6106e160048036038101906106dc9190611bcf565b611340565b005b6106fd60048036038101906106f89190611bcf565b61137e565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bcf565b6113a7565b6040516107329190611a70565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bcf565b6113fa565b60405161076e9190611aa1565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611413565b5b9050919050565b5f8060046002015442610803919061204d565b90505f61084e305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90505f610e10600460010154846108659190612080565b61086f91906120ee565b60046003015461087f919061211e565b905081811161088e5780610890565b815b935050505090565b6108a233826114bf565b50565b6108ad6114ce565b6108b78282611505565b5050565b5f81826108c78561094f565b1614905092915050565b60025481565b5f6108e0611515565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109968161151f565b8282905085859050146109d5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a91575f8484838181106109f6576109f5612151565b5b9050602002016020810190610a0b91906121a8565b90506001151581151503610a5057610a4b878784818110610a2f57610a2e612151565b5b9050602002016020810190610a449190611bcf565b6001611505565b610a83565b610a82878784818110610a6657610a65612151565b5b9050602002016020810190610a7b9190611bcf565b60016114bf565b5b5080806001019150506109d7565b505050505050565b5f610aa2611554565b90508054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae591906122dc565b90505f610b1430835f015173ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90508160800151811015610b6a57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6193929190612307565b60405180910390fd5b5f82602001511480610b7f57505f8260400151145b80610b8d57505f8260600151145b80610b9f575081602001518260800151105b15610bd6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060045f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600881905550610c843361157d565b610c8f336001611653565b50508015610cc6576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cd881611694565b5f8585810190610ce89190612455565b90505f8160200151806020019051810190610d0391906124b0565b9050610d52825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dc493929190612540565b604051602081830303815290604052604051610de09190611e8d565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e1f6114ce565b610e2982826114bf565b5050565b60605f8383810190610e3f91906122dc565b9050604051806080016040528060016002811115610e6057610e5f61257c565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ec391906125d2565b604051602081830303815290604052815250604051602001610ee591906126e8565b60405160208183030381529060405291505092915050565b5f8082610f098561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f556114ce565b610f5e5f611704565b565b600281565b6004805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fb36114ce565b610fbc846117ca565b610ffd57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ff4919061272b565b60405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f81548092919061106490612757565b91905055505f6110726107f0565b90504260046002018190555060045f015481116110935760045f01546110a4565b60045f0154816110a3919061204d565b5b6004600301819055506110f785825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116393929190612540565b60405160208183030381529060405260405161117f9190611e8d565b60405180910390a260019150509392505050565b600261119e8161151f565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff612151565b5b90506020020160208101906112159190611bcf565b85858481811061122857611227612151565b5b90506020020135611505565b80806001019150506111df565b505050505050565b60085481565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f611276846117ca565b90509392505050565b600261128a8161151f565b8282905085859050146112c9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561132d576113208686838181106112ec576112eb612151565b5b90506020020160208101906113019190611bcf565b85858481811061131457611313612151565b5b905060200201356114bf565b80806001019150506112cb565b505050505050565b60015481565b600181565b6113486114ce565b63389a75e1600c52805f526020600c20805442111561136e57636f5e88185f526004601cfd5b5f81555061137b81611704565b50565b6113866114ce565b8060601b61139b57637448fbae5f526004601cfd5b6113a481611704565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113c7610f82565b73ffffffffffffffffffffffffffffffffffffffff1614806113f357506113f2826002600117610efd565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611485575061148482611887565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114ca82825f611900565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611503576382b429005f526004601cfd5b565b61151182826001611900565b5050565b5f6202a300905090565b638b78c6d81954331461155157638b78c6d8600c52335f52806020600c205416611550576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611585611958565b156115fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115bf57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611650565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116b8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166116fb576390b8ec185f526004601cfd5b5f603452505050565b61170c611958565b15611771577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117d46107f0565b90505f8111801561182c575080611829305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b10155b801561187f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f957506118f88261195c565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192257848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a0a816119d6565b8114611a14575f80fd5b50565b5f81359050611a2581611a01565b92915050565b5f60208284031215611a4057611a3f6119ce565b5b5f611a4d84828501611a17565b91505092915050565b5f8115159050919050565b611a6a81611a56565b82525050565b5f602082019050611a835f830184611a61565b92915050565b5f819050919050565b611a9b81611a89565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b611ac381611a89565b8114611acd575f80fd5b50565b5f81359050611ade81611aba565b92915050565b5f60208284031215611af957611af86119ce565b5b5f611b0684828501611ad0565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b3882611b0f565b9050919050565b611b4881611b2e565b8114611b52575f80fd5b50565b5f81359050611b6381611b3f565b92915050565b5f8060408385031215611b7f57611b7e6119ce565b5b5f611b8c85828601611b55565b9250506020611b9d85828601611ad0565b9150509250929050565b611bb0816119d6565b82525050565b5f602082019050611bc95f830184611ba7565b92915050565b5f60208284031215611be457611be36119ce565b5b5f611bf184828501611b55565b91505092915050565b611c0381611b2e565b82525050565b5f602082019050611c1c5f830184611bfa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c4357611c42611c22565b5b8235905067ffffffffffffffff811115611c6057611c5f611c26565b5b602083019150836020820283011115611c7c57611c7b611c2a565b5b9250929050565b5f8083601f840112611c9857611c97611c22565b5b8235905067ffffffffffffffff811115611cb557611cb4611c26565b5b602083019150836020820283011115611cd157611cd0611c2a565b5b9250929050565b5f805f8060408587031215611cf057611cef6119ce565b5b5f85013567ffffffffffffffff811115611d0d57611d0c6119d2565b5b611d1987828801611c2e565b9450945050602085013567ffffffffffffffff811115611d3c57611d3b6119d2565b5b611d4887828801611c83565b925092505092959194509250565b5f8083601f840112611d6b57611d6a611c22565b5b8235905067ffffffffffffffff811115611d8857611d87611c26565b5b602083019150836001820283011115611da457611da3611c2a565b5b9250929050565b5f8060208385031215611dc157611dc06119ce565b5b5f83013567ffffffffffffffff811115611dde57611ddd6119d2565b5b611dea85828601611d56565b92509250509250929050565b5f604082019050611e095f830185611a92565b611e166020830184611bfa565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5f82611e1d565b611e698185611e27565b9350611e79818560208601611e37565b611e8281611e45565b840191505092915050565b5f6020820190508181035f830152611ea58184611e55565b905092915050565b5f608082019050611ec05f830187611a92565b611ecd6020830186611a92565b611eda6040830185611a92565b611ee76060830184611a92565b95945050505050565b5f805f60408486031215611f0757611f066119ce565b5b5f611f1486828701611b55565b935050602084013567ffffffffffffffff811115611f3557611f346119d2565b5b611f4186828701611d56565b92509250509250925092565b5f8083601f840112611f6257611f61611c22565b5b8235905067ffffffffffffffff811115611f7f57611f7e611c26565b5b602083019150836020820283011115611f9b57611f9a611c2a565b5b9250929050565b5f805f8060408587031215611fba57611fb96119ce565b5b5f85013567ffffffffffffffff811115611fd757611fd66119d2565b5b611fe387828801611c2e565b9450945050602085013567ffffffffffffffff811115612006576120056119d2565b5b61201287828801611f4d565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61205782611a89565b915061206283611a89565b925082820390508181111561207a57612079612020565b5b92915050565b5f61208a82611a89565b915061209583611a89565b92508282026120a381611a89565b915082820484148315176120ba576120b9612020565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6120f882611a89565b915061210383611a89565b925082612113576121126120c1565b5b828204905092915050565b5f61212882611a89565b915061213383611a89565b925082820190508082111561214b5761214a612020565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61218781611a56565b8114612191575f80fd5b50565b5f813590506121a28161217e565b92915050565b5f602082840312156121bd576121bc6119ce565b5b5f6121ca84828501612194565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61220d82611e45565b810181811067ffffffffffffffff8211171561222c5761222b6121d7565b5b80604052505050565b5f61223e6119c5565b905061224a8282612204565b919050565b5f80fd5b5f60a08284031215612268576122676121d3565b5b61227260a0612235565b90505f61228184828501611b55565b5f83015250602061229484828501611ad0565b60208301525060406122a884828501611ad0565b60408301525060606122bc84828501611ad0565b60608301525060806122d084828501611ad0565b60808301525092915050565b5f60a082840312156122f1576122f06119ce565b5b5f6122fe84828501612253565b91505092915050565b5f60608201905061231a5f830186611bfa565b6123276020830185611a92565b6123346040830184611a92565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561235a576123596121d7565b5b61236382611e45565b9050602081019050919050565b828183375f83830152505050565b5f61239061238b84612340565b612235565b9050828152602081018484840111156123ac576123ab61233c565b5b6123b7848285612370565b509392505050565b5f82601f8301126123d3576123d2611c22565b5b81356123e384826020860161237e565b91505092915050565b5f60408284031215612401576124006121d3565b5b61240b6040612235565b90505f61241a84828501611b55565b5f83015250602082013567ffffffffffffffff81111561243d5761243c61224f565b5b612449848285016123bf565b60208301525092915050565b5f6020828403121561246a576124696119ce565b5b5f82013567ffffffffffffffff811115612487576124866119d2565b5b612493848285016123ec565b91505092915050565b5f815190506124aa81611aba565b92915050565b5f602082840312156124c5576124c46119ce565b5b5f6124d28482850161249c565b91505092915050565b5f8160601b9050919050565b5f6124f1826124db565b9050919050565b5f612502826124e7565b9050919050565b61251a61251582611b2e565b6124f8565b82525050565b5f819050919050565b61253a61253582611a89565b612520565b82525050565b5f61254b8286612509565b60148201915061255b8285612509565b60148201915061256b8284612529565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125b281611a89565b82525050565b602082015f8201516125cc5f8501826125a9565b50505050565b5f6020820190506125e55f8301846125b8565b92915050565b600381106125fc576125fb61257c565b5b50565b5f81905061260c826125eb565b919050565b5f61261b826125ff565b9050919050565b61262b81612611565b82525050565b61263a81611b2e565b82525050565b5f82825260208201905092915050565b5f61265a82611e1d565b6126648185612640565b9350612674818560208601611e37565b61267d81611e45565b840191505092915050565b5f608083015f83015161269d5f860182612622565b5060208301516126b06020860182612631565b5060408301516126c36040860182612631565b50606083015184820360608601526126db8282612650565b9150508091505092915050565b5f6020820190508181035f8301526127008184612688565b905092915050565b50565b5f6127165f83611e27565b915061272182612708565b5f82019050919050565b5f60408201905061273e5f830184611bfa565b818103602083015261274f8161270b565b905092915050565b5f61276182611a89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279357612792612020565b5b60018201905091905056fea2646970667358221220903fc9978a0aa916e717631ddb8ac946ec1dedc5c2a6df2f4428bf244478aeda64736f6c634300081a0033",xf={},_f={},K={_format:If,contractName:hf,sourceName:Af,abi:Of,bytecode:Rf,deployedBytecode:gf,linkReferences:xf,deployedLinkReferences:_f},Cf="hh-sol-artifact-1",zf="ERC20Incentive",Nf="contracts/incentives/ERC20Incentive.sol",Ef=[{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"}],$f="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612ca2806101185f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e51565b6107dc565b60405161023a9190611e96565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ec7565b60405180910390f35b61028760048036038101906102829190611f0a565b61085e565b005b6102a3600480360381019061029e9190611f8f565b61086b565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f8f565b610881565b6040516102d89190611e96565b60405180910390f35b3480156102ec575f80fd5b506102f5610897565b005b348015610302575f80fd5b5061030b610a63565b6040516103189190611ec7565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fdc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ff5565b610ae1565b6040516103889190611ec7565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061202f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc91906120fe565b610b1d565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d1565b610c2b565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d1565b610e6b565b60405161043f92919061221c565b60405180910390f35b610462600480360381019061045d9190611f8f565b611105565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d1565b61111b565b60405161049791906122b3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f8f565b611239565b6040516104d39190611e96565b60405180910390f35b6104e4611250565b005b6104ee611289565b005b3480156104fb575f80fd5b5061050461129c565b6040516105119190611ec7565b60405180910390f35b348015610525575f80fd5b5061052e6112a1565b60405161053b919061202f565b60405180910390f35b34801561054f575f80fd5b506105586112c9565b6040516105659190611ec7565b60405180910390f35b348015610579575f80fd5b506105826112cf565b60405161058f9190612346565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0a565b6112e1565b6040516105cb919061202f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f5919061235f565b61131c565b6040516106079190611e96565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612411565b61160b565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ff5565b6116c1565b60405161066b9190611e96565b60405180910390f35b34801561067f575f80fd5b5061069a6004803603810190610695919061235f565b6116de565b6040516106a79190611e96565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612411565b6116f1565b005b3480156106e3575f80fd5b506106ec6117a7565b6040516106f99190611ec7565b60405180910390f35b34801561070d575f80fd5b506107166117ad565b6040516107239190611ec7565b60405180910390f35b61074660048036038101906107419190611ff5565b6117b2565b005b610762600480360381019061075d9190611ff5565b6117f0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ff5565b611819565b6040516107979190611e96565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ff5565b61186c565b6040516107d39190611ec7565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d82611885565b5b9050919050565b5f600254905090565b61086833826118fe565b50565b61087361190d565b61087d8282611944565b5050565b5f818261088d85610ae1565b1614905092915050565b60016108a281611954565b6001808111156108b5576108b46122d3565b5b60045f9054906101000a900460ff1660018111156108d6576108d56122d3565b5b1461090d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092591906124bc565b81525090505f6006808054905061093b8461197b565b610945919061251c565b815481106109565761095561254c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc816002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600254604051602001610a3a939291906125de565b604051602081830303815290604052604051610a5691906122b3565b60405180910390a2505050565b60025481565b5f610a726119d3565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b28816119dd565b828290508585905014610b67576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c23575f848483818110610b8857610b8761254c565b5b9050602002016020810190610b9d9190612644565b90506001151581151503610be257610bdd878784818110610bc157610bc061254c565b5b9050602002016020810190610bd69190611ff5565b6001611944565b610c15565b610c14878784818110610bf857610bf761254c565b5b9050602002016020810190610c0d9190611ff5565b60016118fe565b5b508080600101915050610b69565b505050505050565b5f610c34611a12565b90508054600382558015610c665760018160011c14303b10610c5d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c77919061279b565b90505f81604001511480610c8e57505f8160600151145b15610cc5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cd957610cd86122d3565b5b82602001516001811115610cf057610cef6122d3565b5b03610cff578160400151610d14565b81606001518260400151610d1391906127c6565b5b90505f610d4330845f015173ffffffffffffffffffffffffffffffffffffffff16611a3b90919063ffffffff16565b905081811015610d9157825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8893929190612807565b60405180910390fd5b825f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160045f6101000a81548160ff02191690836001811115610dfb57610dfa6122d3565b5b021790555082604001516002819055508260600151600581905550610e1f33611a6e565b610e2e83608001516001611b44565b5050508015610e66576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e7561190d565b5f8484810190610e859190612955565b90505f8160200151806020019051810190610ea091906129b0565b9050600180811115610eb557610eb46122d3565b5b60045f9054906101000a900460ff166001811115610ed657610ed56122d3565b5b03610f5c5760025481141580610eed57505f600154115b15610f50573382604051602001610f049190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f47929190612a8c565b60405180910390fd5b5f600581905550610ff4565b5f60025482610f6b919061251c565b14610fce573382604051602001610f829190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a8c565b60405180910390fd5b60025481610fdc9190612aba565b60055f828254610fec9190612aea565b925050819055505b611041825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b3939291906125de565b6040516020818303038152906040526040516110cf91906122b3565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b61110d61190d565b61111782826118fe565b5050565b60605f838381019061112d919061279b565b90505f600180811115611143576111426122d3565b5b8260200151600181111561115a576111596122d3565b5b0361116957816040015161117e565b8160600151826040015161117d91906127c6565b5b905060405180608001604052806001600281111561119f5761119e6122d3565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016111fe9190612b46565b6040516020818303038152906040528152506040516020016112209190612c05565b6040516020818303038152906040529250505092915050565b5f808261124585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61129161190d565b61129a5f611b85565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b600681815481106112f0575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132561190d565b61132e84611c4b565b611364576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001811115611377576113766122d3565b5b60045f9054906101000a900460ff166001811115611398576113976122d3565b5b036114f05760015f8154809291906113af90612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611455846002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002546040516020016114c3939291906125de565b6040516020818303038152906040526040516114df91906122b3565b60405180910390a260019050611604565b60015f81548092919061150290612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600684908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b6002611616816119dd565b828290508585905014611655576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116b9576116ac8686838181106116785761167761254c565b5b905060200201602081019061168d9190611ff5565b8585848181106116a05761169f61254c565b5b90506020020135611944565b8080600101915050611657565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6116e884611c4b565b90509392505050565b60026116fc816119dd565b82829050858590501461173b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561179f5761179286868381811061175e5761175d61254c565b5b90506020020160208101906117739190611ff5565b8585848181106117865761178561254c565b5b905060200201356118fe565b808060010191505061173d565b505050505050565b60015481565b600181565b6117ba61190d565b63389a75e1600c52805f526020600c2080544211156117e057636f5e88185f526004601cfd5b5f8155506117ed81611b85565b50565b6117f861190d565b8060601b61180d57637448fbae5f526004601cfd5b61181681611b85565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118396112a1565b73ffffffffffffffffffffffffffffffffffffffff1614806118655750611864826002600117611239565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f757506118f682611cad565b5b9050919050565b61190982825f611d26565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611942576382b429005f526004601cfd5b565b61195082826001611d26565b5050565b638b78c6d8600c52335f52806020600c205416611978576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119ca576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a0f57638b78c6d8600c52335f52806020600c205416611a0e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a76611d7e565b15611aee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b41565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b8d611d7e565b15611bf2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c48565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca65750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d1f5750611d1e82611d82565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3081611dfc565b8114611e3a575f80fd5b50565b5f81359050611e4b81611e27565b92915050565b5f60208284031215611e6657611e65611df4565b5b5f611e7384828501611e3d565b91505092915050565b5f8115159050919050565b611e9081611e7c565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f819050919050565b611ec181611eaf565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b611ee981611eaf565b8114611ef3575f80fd5b50565b5f81359050611f0481611ee0565b92915050565b5f60208284031215611f1f57611f1e611df4565b5b5f611f2c84828501611ef6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5e82611f35565b9050919050565b611f6e81611f54565b8114611f78575f80fd5b50565b5f81359050611f8981611f65565b92915050565b5f8060408385031215611fa557611fa4611df4565b5b5f611fb285828601611f7b565b9250506020611fc385828601611ef6565b9150509250929050565b611fd681611dfc565b82525050565b5f602082019050611fef5f830184611fcd565b92915050565b5f6020828403121561200a57612009611df4565b5b5f61201784828501611f7b565b91505092915050565b61202981611f54565b82525050565b5f6020820190506120425f830184612020565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206957612068612048565b5b8235905067ffffffffffffffff8111156120865761208561204c565b5b6020830191508360208202830111156120a2576120a1612050565b5b9250929050565b5f8083601f8401126120be576120bd612048565b5b8235905067ffffffffffffffff8111156120db576120da61204c565b5b6020830191508360208202830111156120f7576120f6612050565b5b9250929050565b5f805f806040858703121561211657612115611df4565b5b5f85013567ffffffffffffffff81111561213357612132611df8565b5b61213f87828801612054565b9450945050602085013567ffffffffffffffff81111561216257612161611df8565b5b61216e878288016120a9565b925092505092959194509250565b5f8083601f84011261219157612190612048565b5b8235905067ffffffffffffffff8111156121ae576121ad61204c565b5b6020830191508360018202830111156121ca576121c9612050565b5b9250929050565b5f80602083850312156121e7576121e6611df4565b5b5f83013567ffffffffffffffff81111561220457612203611df8565b5b6122108582860161217c565b92509250509250929050565b5f60408201905061222f5f830185611eb8565b61223c6020830184612020565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228582612243565b61228f818561224d565b935061229f81856020860161225d565b6122a88161226b565b840191505092915050565b5f6020820190508181035f8301526122cb818461227b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612311576123106122d3565b5b50565b5f81905061232182612300565b919050565b5f61233082612314565b9050919050565b61234081612326565b82525050565b5f6020820190506123595f830184612337565b92915050565b5f805f6040848603121561237657612375611df4565b5b5f61238386828701611f7b565b935050602084013567ffffffffffffffff8111156123a4576123a3611df8565b5b6123b08682870161217c565b92509250509250925092565b5f8083601f8401126123d1576123d0612048565b5b8235905067ffffffffffffffff8111156123ee576123ed61204c565b5b60208301915083602082028301111561240a57612409612050565b5b9250929050565b5f805f806040858703121561242957612428611df4565b5b5f85013567ffffffffffffffff81111561244657612445611df8565b5b61245287828801612054565b9450945050602085013567ffffffffffffffff81111561247557612474611df8565b5b612481878288016123bc565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124c682611eaf565b91506124d183611eaf565b92508282019050808211156124e9576124e861248f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252682611eaf565b915061253183611eaf565b925082612541576125406124ef565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f61258f82612579565b9050919050565b5f6125a082612585565b9050919050565b6125b86125b382611f54565b612596565b82525050565b5f819050919050565b6125d86125d382611eaf565b6125be565b82525050565b5f6125e982866125a7565b6014820191506125f982856125a7565b60148201915061260982846125c7565b602082019150819050949350505050565b61262381611e7c565b811461262d575f80fd5b50565b5f8135905061263e8161261a565b92915050565b5f6020828403121561265957612658611df4565b5b5f61266684828501612630565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126a98261226b565b810181811067ffffffffffffffff821117156126c8576126c7612673565b5b80604052505050565b5f6126da611deb565b90506126e682826126a0565b919050565b5f80fd5b600281106126fb575f80fd5b50565b5f8135905061270c816126ef565b92915050565b5f60a082840312156127275761272661266f565b5b61273160a06126d1565b90505f61274084828501611f7b565b5f830152506020612753848285016126fe565b602083015250604061276784828501611ef6565b604083015250606061277b84828501611ef6565b606083015250608061278f84828501611f7b565b60808301525092915050565b5f60a082840312156127b0576127af611df4565b5b5f6127bd84828501612712565b91505092915050565b5f6127d082611eaf565b91506127db83611eaf565b92508282026127e981611eaf565b91508282048414831517612800576127ff61248f565b5b5092915050565b5f60608201905061281a5f830186612020565b6128276020830185611eb8565b6128346040830184611eb8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285a57612859612673565b5b6128638261226b565b9050602081019050919050565b828183375f83830152505050565b5f61289061288b84612840565b6126d1565b9050828152602081018484840111156128ac576128ab61283c565b5b6128b7848285612870565b509392505050565b5f82601f8301126128d3576128d2612048565b5b81356128e384826020860161287e565b91505092915050565b5f604082840312156129015761290061266f565b5b61290b60406126d1565b90505f61291a84828501611f7b565b5f83015250602082013567ffffffffffffffff81111561293d5761293c6126eb565b5b612949848285016128bf565b60208301525092915050565b5f6020828403121561296a57612969611df4565b5b5f82013567ffffffffffffffff81111561298757612986611df8565b5b612993848285016128ec565b91505092915050565b5f815190506129aa81611ee0565b92915050565b5f602082840312156129c5576129c4611df4565b5b5f6129d28482850161299c565b91505092915050565b6129e481611f54565b82525050565b5f82825260208201905092915050565b5f612a0482612243565b612a0e81856129ea565b9350612a1e81856020860161225d565b612a278161226b565b840191505092915050565b5f604083015f830151612a475f8601826129db565b5060208301518482036020860152612a5f82826129fa565b9150508091505092915050565b5f6020820190508181035f830152612a848184612a32565b905092915050565b5f604082019050612a9f5f830185612020565b8181036020830152612ab1818461227b565b90509392505050565b5f612ac482611eaf565b9150612acf83611eaf565b925082612adf57612ade6124ef565b5b828204905092915050565b5f612af482611eaf565b9150612aff83611eaf565b9250828203905081811115612b1757612b1661248f565b5b92915050565b612b2681611eaf565b82525050565b602082015f820151612b405f850182612b1d565b50505050565b5f602082019050612b595f830184612b2c565b92915050565b60038110612b7057612b6f6122d3565b5b50565b5f819050612b8082612b5f565b919050565b5f612b8f82612b73565b9050919050565b612b9f81612b85565b82525050565b5f608083015f830151612bba5f860182612b96565b506020830151612bcd60208601826129db565b506040830151612be060408601826129db565b5060608301518482036060860152612bf882826129fa565b9150508091505092915050565b5f6020820190508181035f830152612c1d8184612ba5565b905092915050565b5f612c2f82611eaf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6157612c6061248f565b5b60018201905091905056fea2646970667358221220410c1d04820fa5550ff3aa75a902850d36cca567632e555158b82f613e89f94864736f6c634300081a0033",Lf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e51565b6107dc565b60405161023a9190611e96565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ec7565b60405180910390f35b61028760048036038101906102829190611f0a565b61085e565b005b6102a3600480360381019061029e9190611f8f565b61086b565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f8f565b610881565b6040516102d89190611e96565b60405180910390f35b3480156102ec575f80fd5b506102f5610897565b005b348015610302575f80fd5b5061030b610a63565b6040516103189190611ec7565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fdc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ff5565b610ae1565b6040516103889190611ec7565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061202f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc91906120fe565b610b1d565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d1565b610c2b565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d1565b610e6b565b60405161043f92919061221c565b60405180910390f35b610462600480360381019061045d9190611f8f565b611105565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d1565b61111b565b60405161049791906122b3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f8f565b611239565b6040516104d39190611e96565b60405180910390f35b6104e4611250565b005b6104ee611289565b005b3480156104fb575f80fd5b5061050461129c565b6040516105119190611ec7565b60405180910390f35b348015610525575f80fd5b5061052e6112a1565b60405161053b919061202f565b60405180910390f35b34801561054f575f80fd5b506105586112c9565b6040516105659190611ec7565b60405180910390f35b348015610579575f80fd5b506105826112cf565b60405161058f9190612346565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0a565b6112e1565b6040516105cb919061202f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f5919061235f565b61131c565b6040516106079190611e96565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612411565b61160b565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ff5565b6116c1565b60405161066b9190611e96565b60405180910390f35b34801561067f575f80fd5b5061069a6004803603810190610695919061235f565b6116de565b6040516106a79190611e96565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612411565b6116f1565b005b3480156106e3575f80fd5b506106ec6117a7565b6040516106f99190611ec7565b60405180910390f35b34801561070d575f80fd5b506107166117ad565b6040516107239190611ec7565b60405180910390f35b61074660048036038101906107419190611ff5565b6117b2565b005b610762600480360381019061075d9190611ff5565b6117f0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ff5565b611819565b6040516107979190611e96565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ff5565b61186c565b6040516107d39190611ec7565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d82611885565b5b9050919050565b5f600254905090565b61086833826118fe565b50565b61087361190d565b61087d8282611944565b5050565b5f818261088d85610ae1565b1614905092915050565b60016108a281611954565b6001808111156108b5576108b46122d3565b5b60045f9054906101000a900460ff1660018111156108d6576108d56122d3565b5b1461090d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092591906124bc565b81525090505f6006808054905061093b8461197b565b610945919061251c565b815481106109565761095561254c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc816002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600254604051602001610a3a939291906125de565b604051602081830303815290604052604051610a5691906122b3565b60405180910390a2505050565b60025481565b5f610a726119d3565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b28816119dd565b828290508585905014610b67576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c23575f848483818110610b8857610b8761254c565b5b9050602002016020810190610b9d9190612644565b90506001151581151503610be257610bdd878784818110610bc157610bc061254c565b5b9050602002016020810190610bd69190611ff5565b6001611944565b610c15565b610c14878784818110610bf857610bf761254c565b5b9050602002016020810190610c0d9190611ff5565b60016118fe565b5b508080600101915050610b69565b505050505050565b5f610c34611a12565b90508054600382558015610c665760018160011c14303b10610c5d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c77919061279b565b90505f81604001511480610c8e57505f8160600151145b15610cc5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cd957610cd86122d3565b5b82602001516001811115610cf057610cef6122d3565b5b03610cff578160400151610d14565b81606001518260400151610d1391906127c6565b5b90505f610d4330845f015173ffffffffffffffffffffffffffffffffffffffff16611a3b90919063ffffffff16565b905081811015610d9157825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8893929190612807565b60405180910390fd5b825f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160045f6101000a81548160ff02191690836001811115610dfb57610dfa6122d3565b5b021790555082604001516002819055508260600151600581905550610e1f33611a6e565b610e2e83608001516001611b44565b5050508015610e66576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e7561190d565b5f8484810190610e859190612955565b90505f8160200151806020019051810190610ea091906129b0565b9050600180811115610eb557610eb46122d3565b5b60045f9054906101000a900460ff166001811115610ed657610ed56122d3565b5b03610f5c5760025481141580610eed57505f600154115b15610f50573382604051602001610f049190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f47929190612a8c565b60405180910390fd5b5f600581905550610ff4565b5f60025482610f6b919061251c565b14610fce573382604051602001610f829190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a8c565b60405180910390fd5b60025481610fdc9190612aba565b60055f828254610fec9190612aea565b925050819055505b611041825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b3939291906125de565b6040516020818303038152906040526040516110cf91906122b3565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b61110d61190d565b61111782826118fe565b5050565b60605f838381019061112d919061279b565b90505f600180811115611143576111426122d3565b5b8260200151600181111561115a576111596122d3565b5b0361116957816040015161117e565b8160600151826040015161117d91906127c6565b5b905060405180608001604052806001600281111561119f5761119e6122d3565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016111fe9190612b46565b6040516020818303038152906040528152506040516020016112209190612c05565b6040516020818303038152906040529250505092915050565b5f808261124585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61129161190d565b61129a5f611b85565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b600681815481106112f0575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132561190d565b61132e84611c4b565b611364576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001811115611377576113766122d3565b5b60045f9054906101000a900460ff166001811115611398576113976122d3565b5b036114f05760015f8154809291906113af90612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611455846002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002546040516020016114c3939291906125de565b6040516020818303038152906040526040516114df91906122b3565b60405180910390a260019050611604565b60015f81548092919061150290612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600684908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b6002611616816119dd565b828290508585905014611655576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116b9576116ac8686838181106116785761167761254c565b5b905060200201602081019061168d9190611ff5565b8585848181106116a05761169f61254c565b5b90506020020135611944565b8080600101915050611657565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6116e884611c4b565b90509392505050565b60026116fc816119dd565b82829050858590501461173b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561179f5761179286868381811061175e5761175d61254c565b5b90506020020160208101906117739190611ff5565b8585848181106117865761178561254c565b5b905060200201356118fe565b808060010191505061173d565b505050505050565b60015481565b600181565b6117ba61190d565b63389a75e1600c52805f526020600c2080544211156117e057636f5e88185f526004601cfd5b5f8155506117ed81611b85565b50565b6117f861190d565b8060601b61180d57637448fbae5f526004601cfd5b61181681611b85565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118396112a1565b73ffffffffffffffffffffffffffffffffffffffff1614806118655750611864826002600117611239565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f757506118f682611cad565b5b9050919050565b61190982825f611d26565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611942576382b429005f526004601cfd5b565b61195082826001611d26565b5050565b638b78c6d8600c52335f52806020600c205416611978576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119ca576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a0f57638b78c6d8600c52335f52806020600c205416611a0e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a76611d7e565b15611aee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b41565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b8d611d7e565b15611bf2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c48565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca65750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d1f5750611d1e82611d82565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3081611dfc565b8114611e3a575f80fd5b50565b5f81359050611e4b81611e27565b92915050565b5f60208284031215611e6657611e65611df4565b5b5f611e7384828501611e3d565b91505092915050565b5f8115159050919050565b611e9081611e7c565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f819050919050565b611ec181611eaf565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b611ee981611eaf565b8114611ef3575f80fd5b50565b5f81359050611f0481611ee0565b92915050565b5f60208284031215611f1f57611f1e611df4565b5b5f611f2c84828501611ef6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5e82611f35565b9050919050565b611f6e81611f54565b8114611f78575f80fd5b50565b5f81359050611f8981611f65565b92915050565b5f8060408385031215611fa557611fa4611df4565b5b5f611fb285828601611f7b565b9250506020611fc385828601611ef6565b9150509250929050565b611fd681611dfc565b82525050565b5f602082019050611fef5f830184611fcd565b92915050565b5f6020828403121561200a57612009611df4565b5b5f61201784828501611f7b565b91505092915050565b61202981611f54565b82525050565b5f6020820190506120425f830184612020565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206957612068612048565b5b8235905067ffffffffffffffff8111156120865761208561204c565b5b6020830191508360208202830111156120a2576120a1612050565b5b9250929050565b5f8083601f8401126120be576120bd612048565b5b8235905067ffffffffffffffff8111156120db576120da61204c565b5b6020830191508360208202830111156120f7576120f6612050565b5b9250929050565b5f805f806040858703121561211657612115611df4565b5b5f85013567ffffffffffffffff81111561213357612132611df8565b5b61213f87828801612054565b9450945050602085013567ffffffffffffffff81111561216257612161611df8565b5b61216e878288016120a9565b925092505092959194509250565b5f8083601f84011261219157612190612048565b5b8235905067ffffffffffffffff8111156121ae576121ad61204c565b5b6020830191508360018202830111156121ca576121c9612050565b5b9250929050565b5f80602083850312156121e7576121e6611df4565b5b5f83013567ffffffffffffffff81111561220457612203611df8565b5b6122108582860161217c565b92509250509250929050565b5f60408201905061222f5f830185611eb8565b61223c6020830184612020565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228582612243565b61228f818561224d565b935061229f81856020860161225d565b6122a88161226b565b840191505092915050565b5f6020820190508181035f8301526122cb818461227b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612311576123106122d3565b5b50565b5f81905061232182612300565b919050565b5f61233082612314565b9050919050565b61234081612326565b82525050565b5f6020820190506123595f830184612337565b92915050565b5f805f6040848603121561237657612375611df4565b5b5f61238386828701611f7b565b935050602084013567ffffffffffffffff8111156123a4576123a3611df8565b5b6123b08682870161217c565b92509250509250925092565b5f8083601f8401126123d1576123d0612048565b5b8235905067ffffffffffffffff8111156123ee576123ed61204c565b5b60208301915083602082028301111561240a57612409612050565b5b9250929050565b5f805f806040858703121561242957612428611df4565b5b5f85013567ffffffffffffffff81111561244657612445611df8565b5b61245287828801612054565b9450945050602085013567ffffffffffffffff81111561247557612474611df8565b5b612481878288016123bc565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124c682611eaf565b91506124d183611eaf565b92508282019050808211156124e9576124e861248f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252682611eaf565b915061253183611eaf565b925082612541576125406124ef565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f61258f82612579565b9050919050565b5f6125a082612585565b9050919050565b6125b86125b382611f54565b612596565b82525050565b5f819050919050565b6125d86125d382611eaf565b6125be565b82525050565b5f6125e982866125a7565b6014820191506125f982856125a7565b60148201915061260982846125c7565b602082019150819050949350505050565b61262381611e7c565b811461262d575f80fd5b50565b5f8135905061263e8161261a565b92915050565b5f6020828403121561265957612658611df4565b5b5f61266684828501612630565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126a98261226b565b810181811067ffffffffffffffff821117156126c8576126c7612673565b5b80604052505050565b5f6126da611deb565b90506126e682826126a0565b919050565b5f80fd5b600281106126fb575f80fd5b50565b5f8135905061270c816126ef565b92915050565b5f60a082840312156127275761272661266f565b5b61273160a06126d1565b90505f61274084828501611f7b565b5f830152506020612753848285016126fe565b602083015250604061276784828501611ef6565b604083015250606061277b84828501611ef6565b606083015250608061278f84828501611f7b565b60808301525092915050565b5f60a082840312156127b0576127af611df4565b5b5f6127bd84828501612712565b91505092915050565b5f6127d082611eaf565b91506127db83611eaf565b92508282026127e981611eaf565b91508282048414831517612800576127ff61248f565b5b5092915050565b5f60608201905061281a5f830186612020565b6128276020830185611eb8565b6128346040830184611eb8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285a57612859612673565b5b6128638261226b565b9050602081019050919050565b828183375f83830152505050565b5f61289061288b84612840565b6126d1565b9050828152602081018484840111156128ac576128ab61283c565b5b6128b7848285612870565b509392505050565b5f82601f8301126128d3576128d2612048565b5b81356128e384826020860161287e565b91505092915050565b5f604082840312156129015761290061266f565b5b61290b60406126d1565b90505f61291a84828501611f7b565b5f83015250602082013567ffffffffffffffff81111561293d5761293c6126eb565b5b612949848285016128bf565b60208301525092915050565b5f6020828403121561296a57612969611df4565b5b5f82013567ffffffffffffffff81111561298757612986611df8565b5b612993848285016128ec565b91505092915050565b5f815190506129aa81611ee0565b92915050565b5f602082840312156129c5576129c4611df4565b5b5f6129d28482850161299c565b91505092915050565b6129e481611f54565b82525050565b5f82825260208201905092915050565b5f612a0482612243565b612a0e81856129ea565b9350612a1e81856020860161225d565b612a278161226b565b840191505092915050565b5f604083015f830151612a475f8601826129db565b5060208301518482036020860152612a5f82826129fa565b9150508091505092915050565b5f6020820190508181035f830152612a848184612a32565b905092915050565b5f604082019050612a9f5f830185612020565b8181036020830152612ab1818461227b565b90509392505050565b5f612ac482611eaf565b9150612acf83611eaf565b925082612adf57612ade6124ef565b5b828204905092915050565b5f612af482611eaf565b9150612aff83611eaf565b9250828203905081811115612b1757612b1661248f565b5b92915050565b612b2681611eaf565b82525050565b602082015f820151612b405f850182612b1d565b50505050565b5f602082019050612b595f830184612b2c565b92915050565b60038110612b7057612b6f6122d3565b5b50565b5f819050612b8082612b5f565b919050565b5f612b8f82612b73565b9050919050565b612b9f81612b85565b82525050565b5f608083015f830151612bba5f860182612b96565b506020830151612bcd60208601826129db565b506040830151612be060408601826129db565b5060608301518482036060860152612bf882826129fa565b9150508091505092915050565b5f6020820190508181035f830152612c1d8184612ba5565b905092915050565b5f612c2f82611eaf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6157612c6061248f565b5b60018201905091905056fea2646970667358221220410c1d04820fa5550ff3aa75a902850d36cca567632e555158b82f613e89f94864736f6c634300081a0033",kf={},Hf={},Q={_format:Cf,contractName:zf,sourceName:Nf,abi:Ef,bytecode:$f,deployedBytecode:Lf,linkReferences:kf,deployedLinkReferences:Hf},Df="hh-sol-artifact-1",Bf="ERC20VariableCriteriaIncentive",Sf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Vf=[{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"}],qf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612ca2806101185f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c38565b61084b565b6040516102509190611c7d565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cae565b60405180910390f35b61029d60048036038101906102989190611cf1565b6108cd565b005b6102b960048036038101906102b49190611d76565b6108da565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d76565b6108f0565b6040516102ee9190611c7d565b60405180910390f35b348015610302575f80fd5b5061030b610906565b6040516103189190611cae565b60405180910390f35b61032961090c565b005b348015610336575f80fd5b5061033f61095d565b60405161034c9190611dc3565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ddc565b610984565b6040516103889190611cae565b60405180910390f35b34801561039c575f80fd5b506103a561099d565b6040516103b29190611e16565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611ee5565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fb8565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fb8565b610d48565b60405161043f929190612003565b60405180910390f35b610462600480360381019061045d9190611d76565b610eac565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fb8565b610ec2565b604051610497919061209a565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d76565b610f90565b6040516104d39190611c7d565b60405180910390f35b6104e4610fa7565b005b3480156104f1575f80fd5b506104fa610fe0565b6040516105079190611cae565b60405180910390f35b610518610fe6565b005b348015610525575f80fd5b5061052e610ff9565b60405161053b9190611cae565b60405180910390f35b34801561054f575f80fd5b50610558610ffe565b6040516105689493929190612160565b60405180910390f35b34801561057c575f80fd5b50610585611053565b6040516105929190611e16565b60405180910390f35b3480156105a6575f80fd5b506105af61107b565b6040516105bc9190611cae565b60405180910390f35b3480156105d0575f80fd5b506105d9611081565b6040516105e69190612232565b60405180910390f35b3480156105fa575f80fd5b506106156004803603810190610610919061224b565b611150565b6040516106229190611c7d565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906122fd565b61137a565b005b34801561065e575f80fd5b50610667611430565b6040516106749190611cae565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611ddc565b611439565b6040516106b09190611c7d565b60405180910390f35b3480156106c4575f80fd5b506106cd611456565b6040516106da9190611cae565b60405180910390f35b3480156106ee575f80fd5b506107096004803603810190610704919061224b565b61145c565b6040516107169190611c7d565b60405180910390f35b34801561072a575f80fd5b50610745600480360381019061074091906122fd565b61146f565b005b348015610752575f80fd5b5061075b611525565b6040516107689190611cae565b60405180910390f35b34801561077c575f80fd5b5061078561152b565b6040516107929190611cae565b60405180910390f35b6107b560048036038101906107b09190611ddc565b611530565b005b6107d160048036038101906107cc9190611ddc565b61156e565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611ddc565b611597565b6040516108069190611c7d565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611ddc565b6115ea565b6040516108429190611cae565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611603565b5b9050919050565b5f600254905090565b6108d7338261167c565b50565b6108e261168b565b6108ec82826116c2565b5050565b5f81826108fc85610984565b1614905092915050565b60025481565b5f6109156116d2565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116dc565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a61237b565b5b9050602002016020810190610a4091906123d2565b90506001151581151503610a8557610a80878784818110610a6457610a6361237b565b5b9050602002016020810190610a799190611ddc565b60016116c2565b610ab8565b610ab7878784818110610a9b57610a9a61237b565b5b9050602002016020810190610ab09190611ddc565b600161167c565b5b508080600101915050610a0c565b505050505050565b5f610ad7611711565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125f3565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661173a90919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061261f565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460028190555083600481905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120ba565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc3361176d565b610d07336001611843565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d5581611884565b5f8585810190610d65919061276d565b90505f8160200151806020019051810190610d8091906127c8565b90508060045f828254610d939190612820565b92505081905550610de7825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e59939291906128b8565b604051602081830303815290604052604051610e75919061209a565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eb461168b565b610ebe828261167c565b5050565b60605f808484810190610ed5919061292f565b9250509150604051806080016040528060016002811115610ef957610ef86120ba565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5591906129a8565b604051602081830303815290604052815250604051602001610f779190612aaf565b6040516020818303038152906040529250505092915050565b5f8082610f9c85610984565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610fee61168b565b610ff75f6118f4565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b611089611b80565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110b9576110b86120ba565b5b60018111156110cb576110ca6120ba565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115961168b565b5f83838101906111699190612b54565b90505f816020015180602001905181019061118491906127c8565b90505f611190876119ba565b6111c6576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600254036111d7578190506111fb565b670de0b6b3a7640000826002546111ee9190612b9b565b6111f89190612c09565b90505b5f6006541415801561120e575060065481115b156112195760065490505b6004548160055461122a9190612c39565b1115611262576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112739190612c39565b925050819055506001805f82825461128b9190612c39565b925050819055506112dc87825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611348939291906128b8565b604051602081830303815290604052604051611364919061209a565b60405180910390a2600193505050509392505050565b6002611385816116dc565b8282905085859050146113c4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156114285761141b8686838181106113e7576113e661237b565b5b90506020020160208101906113fc9190611ddc565b85858481811061140f5761140e61237b565b5b905060200201356116c2565b80806001019150506113c6565b505050505050565b5f600654905090565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611466846119ba565b90509392505050565b600261147a816116dc565b8282905085859050146114b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561151d576115108686838181106114dc576114db61237b565b5b90506020020160208101906114f19190611ddc565b8585848181106115045761150361237b565b5b9050602002013561167c565b80806001019150506114bb565b505050505050565b60015481565b600181565b61153861168b565b63389a75e1600c52805f526020600c20805442111561155e57636f5e88185f526004601cfd5b5f81555061156b816118f4565b50565b61157661168b565b8060601b61158b57637448fbae5f526004601cfd5b611594816118f4565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115b7611053565b73ffffffffffffffffffffffffffffffffffffffff1614806115e357506115e2826002600117610f90565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116755750611674826119c9565b5b9050919050565b61168782825f611a42565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c0576382b429005f526004601cfd5b565b6116ce82826001611a42565b5050565b5f6202a300905090565b638b78c6d81954331461170e57638b78c6d8600c52335f52806020600c20541661170d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611775611a9a565b156117ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611840565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118a8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118eb576390b8ec185f526004601cfd5b5f603452505050565b6118fc611a9a565b15611961577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3b5750611a3a82611a9e565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b105750611b0f82611b17565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611b9e57611b9d6120ba565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c1781611be3565b8114611c21575f80fd5b50565b5f81359050611c3281611c0e565b92915050565b5f60208284031215611c4d57611c4c611bdb565b5b5f611c5a84828501611c24565b91505092915050565b5f8115159050919050565b611c7781611c63565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f819050919050565b611ca881611c96565b82525050565b5f602082019050611cc15f830184611c9f565b92915050565b611cd081611c96565b8114611cda575f80fd5b50565b5f81359050611ceb81611cc7565b92915050565b5f60208284031215611d0657611d05611bdb565b5b5f611d1384828501611cdd565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4582611d1c565b9050919050565b611d5581611d3b565b8114611d5f575f80fd5b50565b5f81359050611d7081611d4c565b92915050565b5f8060408385031215611d8c57611d8b611bdb565b5b5f611d9985828601611d62565b9250506020611daa85828601611cdd565b9150509250929050565b611dbd81611be3565b82525050565b5f602082019050611dd65f830184611db4565b92915050565b5f60208284031215611df157611df0611bdb565b5b5f611dfe84828501611d62565b91505092915050565b611e1081611d3b565b82525050565b5f602082019050611e295f830184611e07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5057611e4f611e2f565b5b8235905067ffffffffffffffff811115611e6d57611e6c611e33565b5b602083019150836020820283011115611e8957611e88611e37565b5b9250929050565b5f8083601f840112611ea557611ea4611e2f565b5b8235905067ffffffffffffffff811115611ec257611ec1611e33565b5b602083019150836020820283011115611ede57611edd611e37565b5b9250929050565b5f805f8060408587031215611efd57611efc611bdb565b5b5f85013567ffffffffffffffff811115611f1a57611f19611bdf565b5b611f2687828801611e3b565b9450945050602085013567ffffffffffffffff811115611f4957611f48611bdf565b5b611f5587828801611e90565b925092505092959194509250565b5f8083601f840112611f7857611f77611e2f565b5b8235905067ffffffffffffffff811115611f9557611f94611e33565b5b602083019150836001820283011115611fb157611fb0611e37565b5b9250929050565b5f8060208385031215611fce57611fcd611bdb565b5b5f83013567ffffffffffffffff811115611feb57611fea611bdf565b5b611ff785828601611f63565b92509250509250929050565b5f6040820190506120165f830185611c9f565b6120236020830184611e07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206c8261202a565b6120768185612034565b9350612086818560208601612044565b61208f81612052565b840191505092915050565b5f6020820190508181035f8301526120b28184612062565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106120f8576120f76120ba565b5b50565b5f819050612108826120e7565b919050565b5f612117826120fb565b9050919050565b6121278161210d565b82525050565b5f819050919050565b61213f8161212d565b82525050565b5f60ff82169050919050565b61215a81612145565b82525050565b5f6080820190506121735f83018761211e565b6121806020830186612136565b61218d6040830185612151565b61219a6060830184611e07565b95945050505050565b6121ac8161210d565b82525050565b6121bb8161212d565b82525050565b6121ca81612145565b82525050565b6121d981611d3b565b82525050565b608082015f8201516121f35f8501826121a3565b50602082015161220660208501826121b2565b50604082015161221960408501826121c1565b50606082015161222c60608501826121d0565b50505050565b5f6080820190506122455f8301846121df565b92915050565b5f805f6040848603121561226257612261611bdb565b5b5f61226f86828701611d62565b935050602084013567ffffffffffffffff8111156122905761228f611bdf565b5b61229c86828701611f63565b92509250509250925092565b5f8083601f8401126122bd576122bc611e2f565b5b8235905067ffffffffffffffff8111156122da576122d9611e33565b5b6020830191508360208202830111156122f6576122f5611e37565b5b9250929050565b5f805f806040858703121561231557612314611bdb565b5b5f85013567ffffffffffffffff81111561233257612331611bdf565b5b61233e87828801611e3b565b9450945050602085013567ffffffffffffffff81111561236157612360611bdf565b5b61236d878288016122a8565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123b181611c63565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f602082840312156123e7576123e6611bdb565b5b5f6123f4848285016123be565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61243782612052565b810181811067ffffffffffffffff8211171561245657612455612401565b5b80604052505050565b5f612468611bd2565b9050612474828261242e565b919050565b5f80fd5b60028110612489575f80fd5b50565b5f8135905061249a8161247d565b92915050565b6124a98161212d565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b6124d381612145565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f60808284031215612509576125086123fd565b5b612513608061245f565b90505f6125228482850161248c565b5f830152506020612535848285016124b6565b6020830152506040612549848285016124e0565b604083015250606061255d84828501611d62565b60608301525092915050565b5f610100828403121561257f5761257e6123fd565b5b61258960a061245f565b90505f61259884828501611d62565b5f8301525060206125ab84828501611cdd565b60208301525060406125bf84828501611cdd565b60408301525060606125d384828501611cdd565b60608301525060806125e7848285016124f4565b60808301525092915050565b5f610100828403121561260957612608611bdb565b5b5f61261684828501612569565b91505092915050565b5f6060820190506126325f830186611e07565b61263f6020830185611c9f565b61264c6040830184611c9f565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267257612671612401565b5b61267b82612052565b9050602081019050919050565b828183375f83830152505050565b5f6126a86126a384612658565b61245f565b9050828152602081018484840111156126c4576126c3612654565b5b6126cf848285612688565b509392505050565b5f82601f8301126126eb576126ea611e2f565b5b81356126fb848260208601612696565b91505092915050565b5f60408284031215612719576127186123fd565b5b612723604061245f565b90505f61273284828501611d62565b5f83015250602082013567ffffffffffffffff81111561275557612754612479565b5b612761848285016126d7565b60208301525092915050565b5f6020828403121561278257612781611bdb565b5b5f82013567ffffffffffffffff81111561279f5761279e611bdf565b5b6127ab84828501612704565b91505092915050565b5f815190506127c281611cc7565b92915050565b5f602082840312156127dd576127dc611bdb565b5b5f6127ea848285016127b4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61282a82611c96565b915061283583611c96565b925082820390508181111561284d5761284c6127f3565b5b92915050565b5f8160601b9050919050565b5f61286982612853565b9050919050565b5f61287a8261285f565b9050919050565b61289261288d82611d3b565b612870565b82525050565b5f819050919050565b6128b26128ad82611c96565b612898565b82525050565b5f6128c38286612881565b6014820191506128d38285612881565b6014820191506128e382846128a1565b602082019150819050949350505050565b5f6128fe82611d1c565b9050919050565b61290e816128f4565b8114612918575f80fd5b50565b5f8135905061292981612905565b92915050565b5f805f6060848603121561294657612945611bdb565b5b5f6129538682870161291b565b935050602061296486828701611cdd565b925050604061297586828701611cdd565b9150509250925092565b61298881611c96565b82525050565b602082015f8201516129a25f85018261297f565b50505050565b5f6020820190506129bb5f83018461298e565b92915050565b600381106129d2576129d16120ba565b5b50565b5f8190506129e2826129c1565b919050565b5f6129f1826129d5565b9050919050565b612a01816129e7565b82525050565b5f82825260208201905092915050565b5f612a218261202a565b612a2b8185612a07565b9350612a3b818560208601612044565b612a4481612052565b840191505092915050565b5f608083015f830151612a645f8601826129f8565b506020830151612a7760208601826121d0565b506040830151612a8a60408601826121d0565b5060608301518482036060860152612aa28282612a17565b9150508091505092915050565b5f6020820190508181035f830152612ac78184612a4f565b905092915050565b5f60408284031215612ae457612ae36123fd565b5b612aee604061245f565b90505f82013567ffffffffffffffff811115612b0d57612b0c612479565b5b612b19848285016126d7565b5f83015250602082013567ffffffffffffffff811115612b3c57612b3b612479565b5b612b48848285016126d7565b60208301525092915050565b5f60208284031215612b6957612b68611bdb565b5b5f82013567ffffffffffffffff811115612b8657612b85611bdf565b5b612b9284828501612acf565b91505092915050565b5f612ba582611c96565b9150612bb083611c96565b9250828202612bbe81611c96565b91508282048414831517612bd557612bd46127f3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1382611c96565b9150612c1e83611c96565b925082612c2e57612c2d612bdc565b5b828204905092915050565b5f612c4382611c96565b9150612c4e83611c96565b9250828201905080821115612c6657612c656127f3565b5b9291505056fea26469706673582212209c47e7904d457f54d04df161fc92cb1b6758da1c7f38c6f8ac60698daab25b7264736f6c634300081a0033",Uf="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c38565b61084b565b6040516102509190611c7d565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cae565b60405180910390f35b61029d60048036038101906102989190611cf1565b6108cd565b005b6102b960048036038101906102b49190611d76565b6108da565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d76565b6108f0565b6040516102ee9190611c7d565b60405180910390f35b348015610302575f80fd5b5061030b610906565b6040516103189190611cae565b60405180910390f35b61032961090c565b005b348015610336575f80fd5b5061033f61095d565b60405161034c9190611dc3565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ddc565b610984565b6040516103889190611cae565b60405180910390f35b34801561039c575f80fd5b506103a561099d565b6040516103b29190611e16565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611ee5565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fb8565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fb8565b610d48565b60405161043f929190612003565b60405180910390f35b610462600480360381019061045d9190611d76565b610eac565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fb8565b610ec2565b604051610497919061209a565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d76565b610f90565b6040516104d39190611c7d565b60405180910390f35b6104e4610fa7565b005b3480156104f1575f80fd5b506104fa610fe0565b6040516105079190611cae565b60405180910390f35b610518610fe6565b005b348015610525575f80fd5b5061052e610ff9565b60405161053b9190611cae565b60405180910390f35b34801561054f575f80fd5b50610558610ffe565b6040516105689493929190612160565b60405180910390f35b34801561057c575f80fd5b50610585611053565b6040516105929190611e16565b60405180910390f35b3480156105a6575f80fd5b506105af61107b565b6040516105bc9190611cae565b60405180910390f35b3480156105d0575f80fd5b506105d9611081565b6040516105e69190612232565b60405180910390f35b3480156105fa575f80fd5b506106156004803603810190610610919061224b565b611150565b6040516106229190611c7d565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906122fd565b61137a565b005b34801561065e575f80fd5b50610667611430565b6040516106749190611cae565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611ddc565b611439565b6040516106b09190611c7d565b60405180910390f35b3480156106c4575f80fd5b506106cd611456565b6040516106da9190611cae565b60405180910390f35b3480156106ee575f80fd5b506107096004803603810190610704919061224b565b61145c565b6040516107169190611c7d565b60405180910390f35b34801561072a575f80fd5b50610745600480360381019061074091906122fd565b61146f565b005b348015610752575f80fd5b5061075b611525565b6040516107689190611cae565b60405180910390f35b34801561077c575f80fd5b5061078561152b565b6040516107929190611cae565b60405180910390f35b6107b560048036038101906107b09190611ddc565b611530565b005b6107d160048036038101906107cc9190611ddc565b61156e565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611ddc565b611597565b6040516108069190611c7d565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611ddc565b6115ea565b6040516108429190611cae565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611603565b5b9050919050565b5f600254905090565b6108d7338261167c565b50565b6108e261168b565b6108ec82826116c2565b5050565b5f81826108fc85610984565b1614905092915050565b60025481565b5f6109156116d2565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116dc565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a61237b565b5b9050602002016020810190610a4091906123d2565b90506001151581151503610a8557610a80878784818110610a6457610a6361237b565b5b9050602002016020810190610a799190611ddc565b60016116c2565b610ab8565b610ab7878784818110610a9b57610a9a61237b565b5b9050602002016020810190610ab09190611ddc565b600161167c565b5b508080600101915050610a0c565b505050505050565b5f610ad7611711565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125f3565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661173a90919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061261f565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460028190555083600481905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120ba565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc3361176d565b610d07336001611843565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d5581611884565b5f8585810190610d65919061276d565b90505f8160200151806020019051810190610d8091906127c8565b90508060045f828254610d939190612820565b92505081905550610de7825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e59939291906128b8565b604051602081830303815290604052604051610e75919061209a565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eb461168b565b610ebe828261167c565b5050565b60605f808484810190610ed5919061292f565b9250509150604051806080016040528060016002811115610ef957610ef86120ba565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5591906129a8565b604051602081830303815290604052815250604051602001610f779190612aaf565b6040516020818303038152906040529250505092915050565b5f8082610f9c85610984565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610fee61168b565b610ff75f6118f4565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b611089611b80565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110b9576110b86120ba565b5b60018111156110cb576110ca6120ba565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115961168b565b5f83838101906111699190612b54565b90505f816020015180602001905181019061118491906127c8565b90505f611190876119ba565b6111c6576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600254036111d7578190506111fb565b670de0b6b3a7640000826002546111ee9190612b9b565b6111f89190612c09565b90505b5f6006541415801561120e575060065481115b156112195760065490505b6004548160055461122a9190612c39565b1115611262576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112739190612c39565b925050819055506001805f82825461128b9190612c39565b925050819055506112dc87825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611348939291906128b8565b604051602081830303815290604052604051611364919061209a565b60405180910390a2600193505050509392505050565b6002611385816116dc565b8282905085859050146113c4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156114285761141b8686838181106113e7576113e661237b565b5b90506020020160208101906113fc9190611ddc565b85858481811061140f5761140e61237b565b5b905060200201356116c2565b80806001019150506113c6565b505050505050565b5f600654905090565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611466846119ba565b90509392505050565b600261147a816116dc565b8282905085859050146114b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561151d576115108686838181106114dc576114db61237b565b5b90506020020160208101906114f19190611ddc565b8585848181106115045761150361237b565b5b9050602002013561167c565b80806001019150506114bb565b505050505050565b60015481565b600181565b61153861168b565b63389a75e1600c52805f526020600c20805442111561155e57636f5e88185f526004601cfd5b5f81555061156b816118f4565b50565b61157661168b565b8060601b61158b57637448fbae5f526004601cfd5b611594816118f4565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115b7611053565b73ffffffffffffffffffffffffffffffffffffffff1614806115e357506115e2826002600117610f90565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116755750611674826119c9565b5b9050919050565b61168782825f611a42565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c0576382b429005f526004601cfd5b565b6116ce82826001611a42565b5050565b5f6202a300905090565b638b78c6d81954331461170e57638b78c6d8600c52335f52806020600c20541661170d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611775611a9a565b156117ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611840565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118a8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118eb576390b8ec185f526004601cfd5b5f603452505050565b6118fc611a9a565b15611961577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3b5750611a3a82611a9e565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b105750611b0f82611b17565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611b9e57611b9d6120ba565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c1781611be3565b8114611c21575f80fd5b50565b5f81359050611c3281611c0e565b92915050565b5f60208284031215611c4d57611c4c611bdb565b5b5f611c5a84828501611c24565b91505092915050565b5f8115159050919050565b611c7781611c63565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f819050919050565b611ca881611c96565b82525050565b5f602082019050611cc15f830184611c9f565b92915050565b611cd081611c96565b8114611cda575f80fd5b50565b5f81359050611ceb81611cc7565b92915050565b5f60208284031215611d0657611d05611bdb565b5b5f611d1384828501611cdd565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4582611d1c565b9050919050565b611d5581611d3b565b8114611d5f575f80fd5b50565b5f81359050611d7081611d4c565b92915050565b5f8060408385031215611d8c57611d8b611bdb565b5b5f611d9985828601611d62565b9250506020611daa85828601611cdd565b9150509250929050565b611dbd81611be3565b82525050565b5f602082019050611dd65f830184611db4565b92915050565b5f60208284031215611df157611df0611bdb565b5b5f611dfe84828501611d62565b91505092915050565b611e1081611d3b565b82525050565b5f602082019050611e295f830184611e07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5057611e4f611e2f565b5b8235905067ffffffffffffffff811115611e6d57611e6c611e33565b5b602083019150836020820283011115611e8957611e88611e37565b5b9250929050565b5f8083601f840112611ea557611ea4611e2f565b5b8235905067ffffffffffffffff811115611ec257611ec1611e33565b5b602083019150836020820283011115611ede57611edd611e37565b5b9250929050565b5f805f8060408587031215611efd57611efc611bdb565b5b5f85013567ffffffffffffffff811115611f1a57611f19611bdf565b5b611f2687828801611e3b565b9450945050602085013567ffffffffffffffff811115611f4957611f48611bdf565b5b611f5587828801611e90565b925092505092959194509250565b5f8083601f840112611f7857611f77611e2f565b5b8235905067ffffffffffffffff811115611f9557611f94611e33565b5b602083019150836001820283011115611fb157611fb0611e37565b5b9250929050565b5f8060208385031215611fce57611fcd611bdb565b5b5f83013567ffffffffffffffff811115611feb57611fea611bdf565b5b611ff785828601611f63565b92509250509250929050565b5f6040820190506120165f830185611c9f565b6120236020830184611e07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206c8261202a565b6120768185612034565b9350612086818560208601612044565b61208f81612052565b840191505092915050565b5f6020820190508181035f8301526120b28184612062565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106120f8576120f76120ba565b5b50565b5f819050612108826120e7565b919050565b5f612117826120fb565b9050919050565b6121278161210d565b82525050565b5f819050919050565b61213f8161212d565b82525050565b5f60ff82169050919050565b61215a81612145565b82525050565b5f6080820190506121735f83018761211e565b6121806020830186612136565b61218d6040830185612151565b61219a6060830184611e07565b95945050505050565b6121ac8161210d565b82525050565b6121bb8161212d565b82525050565b6121ca81612145565b82525050565b6121d981611d3b565b82525050565b608082015f8201516121f35f8501826121a3565b50602082015161220660208501826121b2565b50604082015161221960408501826121c1565b50606082015161222c60608501826121d0565b50505050565b5f6080820190506122455f8301846121df565b92915050565b5f805f6040848603121561226257612261611bdb565b5b5f61226f86828701611d62565b935050602084013567ffffffffffffffff8111156122905761228f611bdf565b5b61229c86828701611f63565b92509250509250925092565b5f8083601f8401126122bd576122bc611e2f565b5b8235905067ffffffffffffffff8111156122da576122d9611e33565b5b6020830191508360208202830111156122f6576122f5611e37565b5b9250929050565b5f805f806040858703121561231557612314611bdb565b5b5f85013567ffffffffffffffff81111561233257612331611bdf565b5b61233e87828801611e3b565b9450945050602085013567ffffffffffffffff81111561236157612360611bdf565b5b61236d878288016122a8565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123b181611c63565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f602082840312156123e7576123e6611bdb565b5b5f6123f4848285016123be565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61243782612052565b810181811067ffffffffffffffff8211171561245657612455612401565b5b80604052505050565b5f612468611bd2565b9050612474828261242e565b919050565b5f80fd5b60028110612489575f80fd5b50565b5f8135905061249a8161247d565b92915050565b6124a98161212d565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b6124d381612145565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f60808284031215612509576125086123fd565b5b612513608061245f565b90505f6125228482850161248c565b5f830152506020612535848285016124b6565b6020830152506040612549848285016124e0565b604083015250606061255d84828501611d62565b60608301525092915050565b5f610100828403121561257f5761257e6123fd565b5b61258960a061245f565b90505f61259884828501611d62565b5f8301525060206125ab84828501611cdd565b60208301525060406125bf84828501611cdd565b60408301525060606125d384828501611cdd565b60608301525060806125e7848285016124f4565b60808301525092915050565b5f610100828403121561260957612608611bdb565b5b5f61261684828501612569565b91505092915050565b5f6060820190506126325f830186611e07565b61263f6020830185611c9f565b61264c6040830184611c9f565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267257612671612401565b5b61267b82612052565b9050602081019050919050565b828183375f83830152505050565b5f6126a86126a384612658565b61245f565b9050828152602081018484840111156126c4576126c3612654565b5b6126cf848285612688565b509392505050565b5f82601f8301126126eb576126ea611e2f565b5b81356126fb848260208601612696565b91505092915050565b5f60408284031215612719576127186123fd565b5b612723604061245f565b90505f61273284828501611d62565b5f83015250602082013567ffffffffffffffff81111561275557612754612479565b5b612761848285016126d7565b60208301525092915050565b5f6020828403121561278257612781611bdb565b5b5f82013567ffffffffffffffff81111561279f5761279e611bdf565b5b6127ab84828501612704565b91505092915050565b5f815190506127c281611cc7565b92915050565b5f602082840312156127dd576127dc611bdb565b5b5f6127ea848285016127b4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61282a82611c96565b915061283583611c96565b925082820390508181111561284d5761284c6127f3565b5b92915050565b5f8160601b9050919050565b5f61286982612853565b9050919050565b5f61287a8261285f565b9050919050565b61289261288d82611d3b565b612870565b82525050565b5f819050919050565b6128b26128ad82611c96565b612898565b82525050565b5f6128c38286612881565b6014820191506128d38285612881565b6014820191506128e382846128a1565b602082019150819050949350505050565b5f6128fe82611d1c565b9050919050565b61290e816128f4565b8114612918575f80fd5b50565b5f8135905061292981612905565b92915050565b5f805f6060848603121561294657612945611bdb565b5b5f6129538682870161291b565b935050602061296486828701611cdd565b925050604061297586828701611cdd565b9150509250925092565b61298881611c96565b82525050565b602082015f8201516129a25f85018261297f565b50505050565b5f6020820190506129bb5f83018461298e565b92915050565b600381106129d2576129d16120ba565b5b50565b5f8190506129e2826129c1565b919050565b5f6129f1826129d5565b9050919050565b612a01816129e7565b82525050565b5f82825260208201905092915050565b5f612a218261202a565b612a2b8185612a07565b9350612a3b818560208601612044565b612a4481612052565b840191505092915050565b5f608083015f830151612a645f8601826129f8565b506020830151612a7760208601826121d0565b506040830151612a8a60408601826121d0565b5060608301518482036060860152612aa28282612a17565b9150508091505092915050565b5f6020820190508181035f830152612ac78184612a4f565b905092915050565b5f60408284031215612ae457612ae36123fd565b5b612aee604061245f565b90505f82013567ffffffffffffffff811115612b0d57612b0c612479565b5b612b19848285016126d7565b5f83015250602082013567ffffffffffffffff811115612b3c57612b3b612479565b5b612b48848285016126d7565b60208301525092915050565b5f60208284031215612b6957612b68611bdb565b5b5f82013567ffffffffffffffff811115612b8657612b85611bdf565b5b612b9284828501612acf565b91505092915050565b5f612ba582611c96565b9150612bb083611c96565b9250828202612bbe81611c96565b91508282048414831517612bd557612bd46127f3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1382611c96565b9150612c1e83611c96565b925082612c2e57612c2d612bdc565b5b828204905092915050565b5f612c4382611c96565b9150612c4e83611c96565b9250828201905080821115612c6657612c656127f3565b5b9291505056fea26469706673582212209c47e7904d457f54d04df161fc92cb1b6758da1c7f38c6f8ac60698daab25b7264736f6c634300081a0033",Ff={},Gf={},W={_format:Df,contractName:Bf,sourceName:Sf,abi:Vf,bytecode:qf,deployedBytecode:Uf,linkReferences:Ff,deployedLinkReferences:Gf},Pf="hh-sol-artifact-1",Zf="ERC20VariableIncentive",jf="contracts/incentives/ERC20VariableIncentive.sol",Kf=[{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"}],Qf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612687806101185f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611888565b610774565b60405161022491906118cd565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e91906118fe565b60405180910390f35b610271600480360381019061026c9190611941565b6107f6565b005b61028d600480360381019061028891906119c6565b610803565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119c6565b610819565b6040516102c291906118cd565b60405180910390f35b3480156102d6575f80fd5b506102df61082f565b6040516102ec91906118fe565b60405180910390f35b6102fd610835565b005b34801561030a575f80fd5b50610313610886565b6040516103209190611a13565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a2c565b6108ad565b60405161035c91906118fe565b60405180910390f35b348015610370575f80fd5b506103796108c6565b6040516103869190611a66565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b35565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c08565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c08565b610bb4565b604051610413929190611c53565b60405180910390f35b610436600480360381019061043191906119c6565b610d18565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c08565b610d2e565b60405161046b9190611cea565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119c6565b610dfc565b6040516104a791906118cd565b60405180910390f35b6104b8610e13565b005b6104c2610e4c565b005b3480156104cf575f80fd5b506104d8610e5f565b6040516104e591906118fe565b60405180910390f35b3480156104f9575f80fd5b50610502610e64565b60405161050f9190611a66565b60405180910390f35b348015610523575f80fd5b5061052c610e8c565b60405161053991906118fe565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d0a565b610e92565b60405161057591906118cd565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dbc565b61109e565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a2c565b611154565b6040516105d991906118cd565b60405180910390f35b3480156105ed575f80fd5b506105f6611171565b60405161060391906118fe565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d0a565b611177565b60405161063f91906118cd565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dbc565b61118a565b005b34801561067b575f80fd5b50610684611240565b60405161069191906118fe565b60405180910390f35b3480156106a5575f80fd5b506106ae611246565b6040516106bb91906118fe565b60405180910390f35b6106de60048036038101906106d99190611a2c565b61124b565b005b6106fa60048036038101906106f59190611a2c565b611289565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a2c565b6112b2565b60405161072f91906118cd565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a2c565b611305565b60405161076b91906118fe565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e58261131e565b5b9050919050565b5f600254905090565b6108003382611397565b50565b61080b6113a6565b61081582826113dd565b5050565b5f8182610825856108ad565b1614905092915050565b60025481565b5f61083e6113ed565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f4816113f7565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e3a565b5b90506020020160208101906109699190611e91565b905060011515811515036109ae576109a987878481811061098d5761098c611e3a565b5b90506020020160208101906109a29190611a2c565b60016113dd565b6109e1565b6109e08787848181106109c4576109c3611e3a565b5b90506020020160208101906109d99190611a2c565b6001611397565b5b508080600101915050610935565b505050505050565b5f610a0061142c565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611f9d565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145590919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fc8565b60405180910390fd5b835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600281905550816004819055505f600581905550610b6a33611488565b610b7533600161155e565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc18161159f565b5f8585810190610bd19190612116565b90505f8160200151806020019051810190610bec9190612171565b90508060045f828254610bff91906121c9565b92505081905550610c53825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc593929190612261565b604051602081830303815290604052604051610ce19190611cea565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d206113a6565b610d2a8282611397565b5050565b60605f808484810190610d4191906122d8565b9250509150604051806080016040528060016002811115610d6557610d64612328565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc1919061237e565b604051602081830303815290604052815250604051602001610de39190612494565b6040516020818303038152906040529250505092915050565b5f8082610e08856108ad565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e546113a6565b610e5d5f61160f565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f610e9b6113a6565b5f8383810190610eab9190612539565b90505f8160200151806020019051810190610ec69190612171565b90505f610ed2876116d5565b610f08576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025403610f1957819050610f3d565b670de0b6b3a764000082600254610f309190612580565b610f3a91906125ee565b90505b60045481600554610f4e919061261e565b1115610f86576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f97919061261e565b925050819055506001805f828254610faf919061261e565b9250508190555061100087825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898460405160200161106c93929190612261565b6040516020818303038152906040526040516110889190611cea565b60405180910390a2600193505050509392505050565b60026110a9816113f7565b8282905085859050146110e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561114c5761113f86868381811061110b5761110a611e3a565b5b90506020020160208101906111209190611a2c565b85858481811061113357611132611e3a565b5b905060200201356113dd565b80806001019150506110ea565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611181846116d5565b90509392505050565b6002611195816113f7565b8282905085859050146111d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112385761122b8686838181106111f7576111f6611e3a565b5b905060200201602081019061120c9190611a2c565b85858481811061121f5761121e611e3a565b5b90506020020135611397565b80806001019150506111d6565b505050505050565b60015481565b600181565b6112536113a6565b63389a75e1600c52805f526020600c20805442111561127957636f5e88185f526004601cfd5b5f8155506112868161160f565b50565b6112916113a6565b8060601b6112a657637448fbae5f526004601cfd5b6112af8161160f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112d2610e64565b73ffffffffffffffffffffffffffffffffffffffff1614806112fe57506112fd826002600117610dfc565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611390575061138f826116e4565b5b9050919050565b6113a282825f61175d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113db576382b429005f526004601cfd5b565b6113e98282600161175d565b5050565b5f6202a300905090565b638b78c6d81954331461142957638b78c6d8600c52335f52806020600c205416611428576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114906117b5565b15611508577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061155b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611606576390b8ec185f526004601cfd5b5f603452505050565b6116176117b5565b1561167c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117565750611755826117b9565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361177f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61186781611833565b8114611871575f80fd5b50565b5f813590506118828161185e565b92915050565b5f6020828403121561189d5761189c61182b565b5b5f6118aa84828501611874565b91505092915050565b5f8115159050919050565b6118c7816118b3565b82525050565b5f6020820190506118e05f8301846118be565b92915050565b5f819050919050565b6118f8816118e6565b82525050565b5f6020820190506119115f8301846118ef565b92915050565b611920816118e6565b811461192a575f80fd5b50565b5f8135905061193b81611917565b92915050565b5f602082840312156119565761195561182b565b5b5f6119638482850161192d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119958261196c565b9050919050565b6119a58161198b565b81146119af575f80fd5b50565b5f813590506119c08161199c565b92915050565b5f80604083850312156119dc576119db61182b565b5b5f6119e9858286016119b2565b92505060206119fa8582860161192d565b9150509250929050565b611a0d81611833565b82525050565b5f602082019050611a265f830184611a04565b92915050565b5f60208284031215611a4157611a4061182b565b5b5f611a4e848285016119b2565b91505092915050565b611a608161198b565b82525050565b5f602082019050611a795f830184611a57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa057611a9f611a7f565b5b8235905067ffffffffffffffff811115611abd57611abc611a83565b5b602083019150836020820283011115611ad957611ad8611a87565b5b9250929050565b5f8083601f840112611af557611af4611a7f565b5b8235905067ffffffffffffffff811115611b1257611b11611a83565b5b602083019150836020820283011115611b2e57611b2d611a87565b5b9250929050565b5f805f8060408587031215611b4d57611b4c61182b565b5b5f85013567ffffffffffffffff811115611b6a57611b6961182f565b5b611b7687828801611a8b565b9450945050602085013567ffffffffffffffff811115611b9957611b9861182f565b5b611ba587828801611ae0565b925092505092959194509250565b5f8083601f840112611bc857611bc7611a7f565b5b8235905067ffffffffffffffff811115611be557611be4611a83565b5b602083019150836001820283011115611c0157611c00611a87565b5b9250929050565b5f8060208385031215611c1e57611c1d61182b565b5b5f83013567ffffffffffffffff811115611c3b57611c3a61182f565b5b611c4785828601611bb3565b92509250509250929050565b5f604082019050611c665f8301856118ef565b611c736020830184611a57565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cbc82611c7a565b611cc68185611c84565b9350611cd6818560208601611c94565b611cdf81611ca2565b840191505092915050565b5f6020820190508181035f830152611d028184611cb2565b905092915050565b5f805f60408486031215611d2157611d2061182b565b5b5f611d2e868287016119b2565b935050602084013567ffffffffffffffff811115611d4f57611d4e61182f565b5b611d5b86828701611bb3565b92509250509250925092565b5f8083601f840112611d7c57611d7b611a7f565b5b8235905067ffffffffffffffff811115611d9957611d98611a83565b5b602083019150836020820283011115611db557611db4611a87565b5b9250929050565b5f805f8060408587031215611dd457611dd361182b565b5b5f85013567ffffffffffffffff811115611df157611df061182f565b5b611dfd87828801611a8b565b9450945050602085013567ffffffffffffffff811115611e2057611e1f61182f565b5b611e2c87828801611d67565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e70816118b3565b8114611e7a575f80fd5b50565b5f81359050611e8b81611e67565b92915050565b5f60208284031215611ea657611ea561182b565b5b5f611eb384828501611e7d565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ef682611ca2565b810181811067ffffffffffffffff82111715611f1557611f14611ec0565b5b80604052505050565b5f611f27611822565b9050611f338282611eed565b919050565b5f80fd5b5f60608284031215611f5157611f50611ebc565b5b611f5b6060611f1e565b90505f611f6a848285016119b2565b5f830152506020611f7d8482850161192d565b6020830152506040611f918482850161192d565b60408301525092915050565b5f60608284031215611fb257611fb161182b565b5b5f611fbf84828501611f3c565b91505092915050565b5f606082019050611fdb5f830186611a57565b611fe860208301856118ef565b611ff560408301846118ef565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561201b5761201a611ec0565b5b61202482611ca2565b9050602081019050919050565b828183375f83830152505050565b5f61205161204c84612001565b611f1e565b90508281526020810184848401111561206d5761206c611ffd565b5b612078848285612031565b509392505050565b5f82601f83011261209457612093611a7f565b5b81356120a484826020860161203f565b91505092915050565b5f604082840312156120c2576120c1611ebc565b5b6120cc6040611f1e565b90505f6120db848285016119b2565b5f83015250602082013567ffffffffffffffff8111156120fe576120fd611f38565b5b61210a84828501612080565b60208301525092915050565b5f6020828403121561212b5761212a61182b565b5b5f82013567ffffffffffffffff8111156121485761214761182f565b5b612154848285016120ad565b91505092915050565b5f8151905061216b81611917565b92915050565b5f602082840312156121865761218561182b565b5b5f6121938482850161215d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d3826118e6565b91506121de836118e6565b92508282039050818111156121f6576121f561219c565b5b92915050565b5f8160601b9050919050565b5f612212826121fc565b9050919050565b5f61222382612208565b9050919050565b61223b6122368261198b565b612219565b82525050565b5f819050919050565b61225b612256826118e6565b612241565b82525050565b5f61226c828661222a565b60148201915061227c828561222a565b60148201915061228c828461224a565b602082019150819050949350505050565b5f6122a78261196c565b9050919050565b6122b78161229d565b81146122c1575f80fd5b50565b5f813590506122d2816122ae565b92915050565b5f805f606084860312156122ef576122ee61182b565b5b5f6122fc868287016122c4565b935050602061230d8682870161192d565b925050604061231e8682870161192d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61235e816118e6565b82525050565b602082015f8201516123785f850182612355565b50505050565b5f6020820190506123915f830184612364565b92915050565b600381106123a8576123a7612328565b5b50565b5f8190506123b882612397565b919050565b5f6123c7826123ab565b9050919050565b6123d7816123bd565b82525050565b6123e68161198b565b82525050565b5f82825260208201905092915050565b5f61240682611c7a565b61241081856123ec565b9350612420818560208601611c94565b61242981611ca2565b840191505092915050565b5f608083015f8301516124495f8601826123ce565b50602083015161245c60208601826123dd565b50604083015161246f60408601826123dd565b506060830151848203606086015261248782826123fc565b9150508091505092915050565b5f6020820190508181035f8301526124ac8184612434565b905092915050565b5f604082840312156124c9576124c8611ebc565b5b6124d36040611f1e565b90505f82013567ffffffffffffffff8111156124f2576124f1611f38565b5b6124fe84828501612080565b5f83015250602082013567ffffffffffffffff81111561252157612520611f38565b5b61252d84828501612080565b60208301525092915050565b5f6020828403121561254e5761254d61182b565b5b5f82013567ffffffffffffffff81111561256b5761256a61182f565b5b612577848285016124b4565b91505092915050565b5f61258a826118e6565b9150612595836118e6565b92508282026125a3816118e6565b915082820484148315176125ba576125b961219c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125f8826118e6565b9150612603836118e6565b925082612613576126126125c1565b5b828204905092915050565b5f612628826118e6565b9150612633836118e6565b925082820190508082111561264b5761264a61219c565b5b9291505056fea264697066735822122009cb726c4381a097b229659e760f31c3e30f527494c6a6cc77256a569c67e7e164736f6c634300081a0033",Wf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611888565b610774565b60405161022491906118cd565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e91906118fe565b60405180910390f35b610271600480360381019061026c9190611941565b6107f6565b005b61028d600480360381019061028891906119c6565b610803565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119c6565b610819565b6040516102c291906118cd565b60405180910390f35b3480156102d6575f80fd5b506102df61082f565b6040516102ec91906118fe565b60405180910390f35b6102fd610835565b005b34801561030a575f80fd5b50610313610886565b6040516103209190611a13565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a2c565b6108ad565b60405161035c91906118fe565b60405180910390f35b348015610370575f80fd5b506103796108c6565b6040516103869190611a66565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b35565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c08565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c08565b610bb4565b604051610413929190611c53565b60405180910390f35b610436600480360381019061043191906119c6565b610d18565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c08565b610d2e565b60405161046b9190611cea565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119c6565b610dfc565b6040516104a791906118cd565b60405180910390f35b6104b8610e13565b005b6104c2610e4c565b005b3480156104cf575f80fd5b506104d8610e5f565b6040516104e591906118fe565b60405180910390f35b3480156104f9575f80fd5b50610502610e64565b60405161050f9190611a66565b60405180910390f35b348015610523575f80fd5b5061052c610e8c565b60405161053991906118fe565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d0a565b610e92565b60405161057591906118cd565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dbc565b61109e565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a2c565b611154565b6040516105d991906118cd565b60405180910390f35b3480156105ed575f80fd5b506105f6611171565b60405161060391906118fe565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d0a565b611177565b60405161063f91906118cd565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dbc565b61118a565b005b34801561067b575f80fd5b50610684611240565b60405161069191906118fe565b60405180910390f35b3480156106a5575f80fd5b506106ae611246565b6040516106bb91906118fe565b60405180910390f35b6106de60048036038101906106d99190611a2c565b61124b565b005b6106fa60048036038101906106f59190611a2c565b611289565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a2c565b6112b2565b60405161072f91906118cd565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a2c565b611305565b60405161076b91906118fe565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e58261131e565b5b9050919050565b5f600254905090565b6108003382611397565b50565b61080b6113a6565b61081582826113dd565b5050565b5f8182610825856108ad565b1614905092915050565b60025481565b5f61083e6113ed565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f4816113f7565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e3a565b5b90506020020160208101906109699190611e91565b905060011515811515036109ae576109a987878481811061098d5761098c611e3a565b5b90506020020160208101906109a29190611a2c565b60016113dd565b6109e1565b6109e08787848181106109c4576109c3611e3a565b5b90506020020160208101906109d99190611a2c565b6001611397565b5b508080600101915050610935565b505050505050565b5f610a0061142c565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611f9d565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145590919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fc8565b60405180910390fd5b835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600281905550816004819055505f600581905550610b6a33611488565b610b7533600161155e565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc18161159f565b5f8585810190610bd19190612116565b90505f8160200151806020019051810190610bec9190612171565b90508060045f828254610bff91906121c9565b92505081905550610c53825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc593929190612261565b604051602081830303815290604052604051610ce19190611cea565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d206113a6565b610d2a8282611397565b5050565b60605f808484810190610d4191906122d8565b9250509150604051806080016040528060016002811115610d6557610d64612328565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc1919061237e565b604051602081830303815290604052815250604051602001610de39190612494565b6040516020818303038152906040529250505092915050565b5f8082610e08856108ad565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e546113a6565b610e5d5f61160f565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f610e9b6113a6565b5f8383810190610eab9190612539565b90505f8160200151806020019051810190610ec69190612171565b90505f610ed2876116d5565b610f08576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025403610f1957819050610f3d565b670de0b6b3a764000082600254610f309190612580565b610f3a91906125ee565b90505b60045481600554610f4e919061261e565b1115610f86576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f97919061261e565b925050819055506001805f828254610faf919061261e565b9250508190555061100087825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898460405160200161106c93929190612261565b6040516020818303038152906040526040516110889190611cea565b60405180910390a2600193505050509392505050565b60026110a9816113f7565b8282905085859050146110e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561114c5761113f86868381811061110b5761110a611e3a565b5b90506020020160208101906111209190611a2c565b85858481811061113357611132611e3a565b5b905060200201356113dd565b80806001019150506110ea565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611181846116d5565b90509392505050565b6002611195816113f7565b8282905085859050146111d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112385761122b8686838181106111f7576111f6611e3a565b5b905060200201602081019061120c9190611a2c565b85858481811061121f5761121e611e3a565b5b90506020020135611397565b80806001019150506111d6565b505050505050565b60015481565b600181565b6112536113a6565b63389a75e1600c52805f526020600c20805442111561127957636f5e88185f526004601cfd5b5f8155506112868161160f565b50565b6112916113a6565b8060601b6112a657637448fbae5f526004601cfd5b6112af8161160f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112d2610e64565b73ffffffffffffffffffffffffffffffffffffffff1614806112fe57506112fd826002600117610dfc565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611390575061138f826116e4565b5b9050919050565b6113a282825f61175d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113db576382b429005f526004601cfd5b565b6113e98282600161175d565b5050565b5f6202a300905090565b638b78c6d81954331461142957638b78c6d8600c52335f52806020600c205416611428576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114906117b5565b15611508577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061155b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611606576390b8ec185f526004601cfd5b5f603452505050565b6116176117b5565b1561167c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117565750611755826117b9565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361177f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61186781611833565b8114611871575f80fd5b50565b5f813590506118828161185e565b92915050565b5f6020828403121561189d5761189c61182b565b5b5f6118aa84828501611874565b91505092915050565b5f8115159050919050565b6118c7816118b3565b82525050565b5f6020820190506118e05f8301846118be565b92915050565b5f819050919050565b6118f8816118e6565b82525050565b5f6020820190506119115f8301846118ef565b92915050565b611920816118e6565b811461192a575f80fd5b50565b5f8135905061193b81611917565b92915050565b5f602082840312156119565761195561182b565b5b5f6119638482850161192d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119958261196c565b9050919050565b6119a58161198b565b81146119af575f80fd5b50565b5f813590506119c08161199c565b92915050565b5f80604083850312156119dc576119db61182b565b5b5f6119e9858286016119b2565b92505060206119fa8582860161192d565b9150509250929050565b611a0d81611833565b82525050565b5f602082019050611a265f830184611a04565b92915050565b5f60208284031215611a4157611a4061182b565b5b5f611a4e848285016119b2565b91505092915050565b611a608161198b565b82525050565b5f602082019050611a795f830184611a57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa057611a9f611a7f565b5b8235905067ffffffffffffffff811115611abd57611abc611a83565b5b602083019150836020820283011115611ad957611ad8611a87565b5b9250929050565b5f8083601f840112611af557611af4611a7f565b5b8235905067ffffffffffffffff811115611b1257611b11611a83565b5b602083019150836020820283011115611b2e57611b2d611a87565b5b9250929050565b5f805f8060408587031215611b4d57611b4c61182b565b5b5f85013567ffffffffffffffff811115611b6a57611b6961182f565b5b611b7687828801611a8b565b9450945050602085013567ffffffffffffffff811115611b9957611b9861182f565b5b611ba587828801611ae0565b925092505092959194509250565b5f8083601f840112611bc857611bc7611a7f565b5b8235905067ffffffffffffffff811115611be557611be4611a83565b5b602083019150836001820283011115611c0157611c00611a87565b5b9250929050565b5f8060208385031215611c1e57611c1d61182b565b5b5f83013567ffffffffffffffff811115611c3b57611c3a61182f565b5b611c4785828601611bb3565b92509250509250929050565b5f604082019050611c665f8301856118ef565b611c736020830184611a57565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cbc82611c7a565b611cc68185611c84565b9350611cd6818560208601611c94565b611cdf81611ca2565b840191505092915050565b5f6020820190508181035f830152611d028184611cb2565b905092915050565b5f805f60408486031215611d2157611d2061182b565b5b5f611d2e868287016119b2565b935050602084013567ffffffffffffffff811115611d4f57611d4e61182f565b5b611d5b86828701611bb3565b92509250509250925092565b5f8083601f840112611d7c57611d7b611a7f565b5b8235905067ffffffffffffffff811115611d9957611d98611a83565b5b602083019150836020820283011115611db557611db4611a87565b5b9250929050565b5f805f8060408587031215611dd457611dd361182b565b5b5f85013567ffffffffffffffff811115611df157611df061182f565b5b611dfd87828801611a8b565b9450945050602085013567ffffffffffffffff811115611e2057611e1f61182f565b5b611e2c87828801611d67565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e70816118b3565b8114611e7a575f80fd5b50565b5f81359050611e8b81611e67565b92915050565b5f60208284031215611ea657611ea561182b565b5b5f611eb384828501611e7d565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ef682611ca2565b810181811067ffffffffffffffff82111715611f1557611f14611ec0565b5b80604052505050565b5f611f27611822565b9050611f338282611eed565b919050565b5f80fd5b5f60608284031215611f5157611f50611ebc565b5b611f5b6060611f1e565b90505f611f6a848285016119b2565b5f830152506020611f7d8482850161192d565b6020830152506040611f918482850161192d565b60408301525092915050565b5f60608284031215611fb257611fb161182b565b5b5f611fbf84828501611f3c565b91505092915050565b5f606082019050611fdb5f830186611a57565b611fe860208301856118ef565b611ff560408301846118ef565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561201b5761201a611ec0565b5b61202482611ca2565b9050602081019050919050565b828183375f83830152505050565b5f61205161204c84612001565b611f1e565b90508281526020810184848401111561206d5761206c611ffd565b5b612078848285612031565b509392505050565b5f82601f83011261209457612093611a7f565b5b81356120a484826020860161203f565b91505092915050565b5f604082840312156120c2576120c1611ebc565b5b6120cc6040611f1e565b90505f6120db848285016119b2565b5f83015250602082013567ffffffffffffffff8111156120fe576120fd611f38565b5b61210a84828501612080565b60208301525092915050565b5f6020828403121561212b5761212a61182b565b5b5f82013567ffffffffffffffff8111156121485761214761182f565b5b612154848285016120ad565b91505092915050565b5f8151905061216b81611917565b92915050565b5f602082840312156121865761218561182b565b5b5f6121938482850161215d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d3826118e6565b91506121de836118e6565b92508282039050818111156121f6576121f561219c565b5b92915050565b5f8160601b9050919050565b5f612212826121fc565b9050919050565b5f61222382612208565b9050919050565b61223b6122368261198b565b612219565b82525050565b5f819050919050565b61225b612256826118e6565b612241565b82525050565b5f61226c828661222a565b60148201915061227c828561222a565b60148201915061228c828461224a565b602082019150819050949350505050565b5f6122a78261196c565b9050919050565b6122b78161229d565b81146122c1575f80fd5b50565b5f813590506122d2816122ae565b92915050565b5f805f606084860312156122ef576122ee61182b565b5b5f6122fc868287016122c4565b935050602061230d8682870161192d565b925050604061231e8682870161192d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61235e816118e6565b82525050565b602082015f8201516123785f850182612355565b50505050565b5f6020820190506123915f830184612364565b92915050565b600381106123a8576123a7612328565b5b50565b5f8190506123b882612397565b919050565b5f6123c7826123ab565b9050919050565b6123d7816123bd565b82525050565b6123e68161198b565b82525050565b5f82825260208201905092915050565b5f61240682611c7a565b61241081856123ec565b9350612420818560208601611c94565b61242981611ca2565b840191505092915050565b5f608083015f8301516124495f8601826123ce565b50602083015161245c60208601826123dd565b50604083015161246f60408601826123dd565b506060830151848203606086015261248782826123fc565b9150508091505092915050565b5f6020820190508181035f8301526124ac8184612434565b905092915050565b5f604082840312156124c9576124c8611ebc565b5b6124d36040611f1e565b90505f82013567ffffffffffffffff8111156124f2576124f1611f38565b5b6124fe84828501612080565b5f83015250602082013567ffffffffffffffff81111561252157612520611f38565b5b61252d84828501612080565b60208301525092915050565b5f6020828403121561254e5761254d61182b565b5b5f82013567ffffffffffffffff81111561256b5761256a61182f565b5b612577848285016124b4565b91505092915050565b5f61258a826118e6565b9150612595836118e6565b92508282026125a3816118e6565b915082820484148315176125ba576125b961219c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125f8826118e6565b9150612603836118e6565b925082612613576126126125c1565b5b828204905092915050565b5f612628826118e6565b9150612633836118e6565b925082820190508082111561264b5761264a61219c565b5b9291505056fea264697066735822122009cb726c4381a097b229659e760f31c3e30f527494c6a6cc77256a569c67e7e164736f6c634300081a0033",Yf={},Jf={},Y={_format:Pf,contractName:Zf,sourceName:jf,abi:Kf,bytecode:Qf,deployedBytecode:Wf,linkReferences:Yf,deployedLinkReferences:Jf},Xf="hh-sol-artifact-1",f5="ERC1155Incentive",b5="contracts/incentives/ERC1155Incentive.sol",e5=[{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"}],a5="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613269806101185f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c7e565b61086c565b6040516102509190611cc3565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cf4565b60405180910390f35b34801561028e575f80fd5b50610297610956565b6040516102a49190611cf4565b60405180910390f35b6102c760048036038101906102c29190611d37565b61095c565b005b6102e360048036038101906102de9190611dbc565b610969565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dbc565b61097f565b6040516103189190611cc3565b60405180910390f35b34801561032c575f80fd5b50610335610995565b6040516103429190611cf4565b60405180910390f35b61035361099b565b005b348015610360575f80fd5b506103696109ec565b6040516103769190611e09565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e22565b610a13565b6040516103b29190611cf4565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2c565b6040516103dc9190611e5c565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f2b565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190611ffe565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190611ffe565b610e11565b604051610469929190612049565b60405180910390f35b61048c60048036038101906104879190611dbc565b61103d565b005b348015610499575f80fd5b506104b460048036038101906104af9190611ffe565b611053565b6040516104c191906120e0565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dbc565b611136565b6040516104fd9190611cc3565b60405180910390f35b61050e61114d565b005b34801561051b575f80fd5b50610524611186565b60405161053191906120e0565b60405180910390f35b610542611212565b005b34801561054f575f80fd5b50610558611225565b6040516105659190611cf4565b60405180910390f35b348015610579575f80fd5b5061058261122a565b60405161058f9190611e5c565b60405180910390f35b3480156105a3575f80fd5b506105ac611252565b6040516105b99190611cf4565b60405180910390f35b3480156105cd575f80fd5b506105d6611258565b6040516105e39190612173565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061218c565b61126a565b60405161061f9190611cc3565b60405180910390f35b348015610633575f80fd5b5061064e6004803603810190610649919061223e565b611479565b60405161065b9190611e09565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612315565b611490565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123c6565b611546565b6040516106bf9190611cc3565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061218c565b611563565b6040516106fb9190611cc3565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612315565b611584565b005b348015610737575f80fd5b5061074061163a565b60405161074d9190611cf4565b60405180910390f35b348015610761575f80fd5b5061076a611640565b6040516107779190611cf4565b60405180910390f35b61079a60048036038101906107959190611e22565b611645565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123f1565b611683565b6040516107cf9190611e09565b60405180910390f35b6107f260048036038101906107ed9190611e22565b611698565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e22565b6116c1565b6040516108279190611cc3565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e22565b611714565b6040516108639190611cf4565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094657506109458261172d565b5b9050919050565b5f600254905090565b60065481565b61096633826117a6565b50565b6109716117b5565b61097b82826117ec565b5050565b5f818261098b85610a13565b1614905092915050565b60025481565b5f6109a46117fc565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611806565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612487565b5b9050602002016020810190610acf91906124de565b90506001151581151503610b1457610b0f878784818110610af357610af2612487565b5b9050602002016020810190610b089190611e22565b60016117ec565b610b47565b610b46878784818110610b2a57610b29612487565b5b9050602002016020810190610b3f9190611e22565b60016117a6565b5b508080600101915050610a9b565b505050505050565b5f610b6661183b565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba9919061273c565b90506001600281905550600180811115610bc657610bc5612100565b5b81602001516001811115610bdd57610bdc612100565b5b03610c14576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c51576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c93929190612783565b602060405180830381865afa158015610cae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd291906127be565b90508160600151811015610d2857815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1f939291906127e9565b60405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160045f6101000a81548160ff02191690836001811115610d9257610d91612100565b5b021790555081604001516006819055508160600151600581905550816080015160079081610dc09190612a18565b50610dca33611864565b610dd533600161193a565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e8161197b565b5f8585810190610e2e9190612b50565b90505f8160200151806020019051810190610e4991906127be565b9050600154600554610e5b9190612bc4565b811115610ec0573382604051602001610e749190612c88565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612ca8565b60405180910390fd5b8060055f828254610ed19190612bc4565b925050819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516006548587602001516040518663ffffffff1660e01b8152600401610f41959493929190612cd6565b5f604051808303815f87803b158015610f58575f80fd5b505af1158015610f6a573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600654858760200151604051602001610fea959493929190612dcd565b60405160208183030381529060405260405161100691906120e0565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110456117b5565b61104f82826117a6565b5050565b60605f8383810190611065919061273c565b9050604051806080016040528060028081111561108557611084612100565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016110fc9190612e83565b60405160208183030381529060405281525060405160200161111e9190612f49565b60405160208183030381529060405291505092915050565b5f808261114285610a13565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b600780546111939061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bf9061284b565b801561120a5780601f106111e15761010080835404028352916020019161120a565b820191905f5260205f20905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b61121a6117b5565b6112235f6119a2565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b5f6112736117b5565b5f61127e8484611a68565b90505f600181111561129357611292612100565b5b60045f9054906101000a900460ff1660018111156112b4576112b3612100565b5b0361146d576112c281611aa4565b6112f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81548092919061130a90612f69565b9190505550600160035f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600654600189896040518763ffffffff1660e01b815260040161139d96959493929190613015565b5f604051808303815f87803b1580156113b4575f80fd5b505af11580156113c6573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876006546001898960405160200161143f96959493929190613093565b60405160208183030381529060405260405161145b91906120e0565b60405180910390a26001915050611472565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261149b81611806565b8282905085859050146114da576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561153e576115318686838181106114fd576114fc612487565b5b90506020020160208101906115129190611e22565b85858481811061152557611524612487565b5b905060200201356117ec565b80806001019150506114dc565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f8061156f8484611a68565b905061157a81611aa4565b9150509392505050565b600261158f81611806565b8282905085859050146115ce576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611632576116258686838181106115f1576115f0612487565b5b90506020020160208101906116069190611e22565b85858481811061161957611618612487565b5b905060200201356117a6565b80806001019150506115d0565b505050505050565b60015481565b600181565b61164d6117b5565b63389a75e1600c52805f526020600c20805442111561167357636f5e88185f526004601cfd5b5f815550611680816119a2565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a06117b5565b8060601b6116b557637448fbae5f526004601cfd5b6116be816119a2565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116e161122a565b73ffffffffffffffffffffffffffffffffffffffff16148061170d575061170c826002600117611136565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179f575061179e82611ada565b5b9050919050565b6117b182825f611b53565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117ea576382b429005f526004601cfd5b565b6117f882826001611b53565b5050565b5f6202a300905090565b638b78c6d81954331461183857638b78c6d8600c52335f52806020600c205416611837576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61186c611bab565b156118e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118a657630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611937565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661199f576382b429005f526004601cfd5b50565b6119aa611bab565b15611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a65565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a799190613174565b90505f8160200151806020019051810190611a949190613208565b9050805f01519250505092915050565b5f60035f8381526020019081526020015f205f9054906101000a900460ff16158015611ad35750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b4c5750611b4b82611baf565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c5d81611c29565b8114611c67575f80fd5b50565b5f81359050611c7881611c54565b92915050565b5f60208284031215611c9357611c92611c21565b5b5f611ca084828501611c6a565b91505092915050565b5f8115159050919050565b611cbd81611ca9565b82525050565b5f602082019050611cd65f830184611cb4565b92915050565b5f819050919050565b611cee81611cdc565b82525050565b5f602082019050611d075f830184611ce5565b92915050565b611d1681611cdc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f60208284031215611d4c57611d4b611c21565b5b5f611d5984828501611d23565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d8b82611d62565b9050919050565b611d9b81611d81565b8114611da5575f80fd5b50565b5f81359050611db681611d92565b92915050565b5f8060408385031215611dd257611dd1611c21565b5b5f611ddf85828601611da8565b9250506020611df085828601611d23565b9150509250929050565b611e0381611c29565b82525050565b5f602082019050611e1c5f830184611dfa565b92915050565b5f60208284031215611e3757611e36611c21565b5b5f611e4484828501611da8565b91505092915050565b611e5681611d81565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9657611e95611e75565b5b8235905067ffffffffffffffff811115611eb357611eb2611e79565b5b602083019150836020820283011115611ecf57611ece611e7d565b5b9250929050565b5f8083601f840112611eeb57611eea611e75565b5b8235905067ffffffffffffffff811115611f0857611f07611e79565b5b602083019150836020820283011115611f2457611f23611e7d565b5b9250929050565b5f805f8060408587031215611f4357611f42611c21565b5b5f85013567ffffffffffffffff811115611f6057611f5f611c25565b5b611f6c87828801611e81565b9450945050602085013567ffffffffffffffff811115611f8f57611f8e611c25565b5b611f9b87828801611ed6565b925092505092959194509250565b5f8083601f840112611fbe57611fbd611e75565b5b8235905067ffffffffffffffff811115611fdb57611fda611e79565b5b602083019150836001820283011115611ff757611ff6611e7d565b5b9250929050565b5f806020838503121561201457612013611c21565b5b5f83013567ffffffffffffffff81111561203157612030611c25565b5b61203d85828601611fa9565b92509250509250929050565b5f60408201905061205c5f830185611ce5565b6120696020830184611e4d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b282612070565b6120bc818561207a565b93506120cc81856020860161208a565b6120d581612098565b840191505092915050565b5f6020820190508181035f8301526120f881846120a8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061213e5761213d612100565b5b50565b5f81905061214e8261212d565b919050565b5f61215d82612141565b9050919050565b61216d81612153565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f805f604084860312156121a3576121a2611c21565b5b5f6121b086828701611da8565b935050602084013567ffffffffffffffff8111156121d1576121d0611c25565b5b6121dd86828701611fa9565b92509250509250925092565b5f8083601f8401126121fe576121fd611e75565b5b8235905067ffffffffffffffff81111561221b5761221a611e79565b5b60208301915083602082028301111561223757612236611e7d565b5b9250929050565b5f805f805f805f8060a0898b03121561225a57612259611c21565b5b5f6122678b828c01611da8565b98505060206122788b828c01611da8565b975050604089013567ffffffffffffffff81111561229957612298611c25565b5b6122a58b828c016121e9565b9650965050606089013567ffffffffffffffff8111156122c8576122c7611c25565b5b6122d48b828c016121e9565b9450945050608089013567ffffffffffffffff8111156122f7576122f6611c25565b5b6123038b828c01611fa9565b92509250509295985092959890939650565b5f805f806040858703121561232d5761232c611c21565b5b5f85013567ffffffffffffffff81111561234a57612349611c25565b5b61235687828801611e81565b9450945050602085013567ffffffffffffffff81111561237957612378611c25565b5b612385878288016121e9565b925092505092959194509250565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f602082840312156123db576123da611c21565b5b5f6123e8848285016123b2565b91505092915050565b5f805f805f8060a0878903121561240b5761240a611c21565b5b5f61241889828a01611da8565b965050602061242989828a01611da8565b955050604061243a89828a01611d23565b945050606061244b89828a01611d23565b935050608087013567ffffffffffffffff81111561246c5761246b611c25565b5b61247889828a01611fa9565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124bd81611ca9565b81146124c7575f80fd5b50565b5f813590506124d8816124b4565b92915050565b5f602082840312156124f3576124f2611c21565b5b5f612500848285016124ca565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254382612098565b810181811067ffffffffffffffff821117156125625761256161250d565b5b80604052505050565b5f612574611c18565b9050612580828261253a565b919050565b5f80fd5b5f61259382611d81565b9050919050565b6125a381612589565b81146125ad575f80fd5b50565b5f813590506125be8161259a565b92915050565b600281106125d0575f80fd5b50565b5f813590506125e1816125c4565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126055761260461250d565b5b61260e82612098565b9050602081019050919050565b828183375f83830152505050565b5f61263b612636846125eb565b61256b565b905082815260208101848484011115612657576126566125e7565b5b61266284828561261b565b509392505050565b5f82601f83011261267e5761267d611e75565b5b813561268e848260208601612629565b91505092915050565b5f60a082840312156126ac576126ab612509565b5b6126b660a061256b565b90505f6126c5848285016125b0565b5f8301525060206126d8848285016125d3565b60208301525060406126ec84828501611d23565b604083015250606061270084828501611d23565b606083015250608082013567ffffffffffffffff81111561272457612723612585565b5b6127308482850161266a565b60808301525092915050565b5f6020828403121561275157612750611c21565b5b5f82013567ffffffffffffffff81111561276e5761276d611c25565b5b61277a84828501612697565b91505092915050565b5f6040820190506127965f830185611e4d565b6127a36020830184611ce5565b9392505050565b5f815190506127b881611d0d565b92915050565b5f602082840312156127d3576127d2611c21565b5b5f6127e0848285016127aa565b91505092915050565b5f6060820190506127fc5f830186611e4d565b6128096020830185611ce5565b6128166040830184611ce5565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286257607f821691505b6020821081036128755761287461281e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261289c565b6128e1868361289c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61291c61291761291284611cdc565b6128f9565b611cdc565b9050919050565b5f819050919050565b61293583612902565b61294961294182612923565b8484546128a8565b825550505050565b5f90565b61295d612951565b61296881848461292c565b505050565b5b8181101561298b576129805f82612955565b60018101905061296e565b5050565b601f8211156129d0576129a18161287b565b6129aa8461288d565b810160208510156129b9578190505b6129cd6129c58561288d565b83018261296d565b50505b505050565b5f82821c905092915050565b5f6129f05f19846008026129d5565b1980831691505092915050565b5f612a0883836129e1565b9150826002028217905092915050565b612a2182612070565b67ffffffffffffffff811115612a3a57612a3961250d565b5b612a44825461284b565b612a4f82828561298f565b5f60209050601f831160018114612a80575f8415612a6e578287015190505b612a7885826129fd565b865550612adf565b601f198416612a8e8661287b565b5f5b82811015612ab557848901518255600182019150602085019450602081019050612a90565b86831015612ad25784890151612ace601f8916826129e1565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612afc57612afb612509565b5b612b06604061256b565b90505f612b1584828501611da8565b5f83015250602082013567ffffffffffffffff811115612b3857612b37612585565b5b612b448482850161266a565b60208301525092915050565b5f60208284031215612b6557612b64611c21565b5b5f82013567ffffffffffffffff811115612b8257612b81611c25565b5b612b8e84828501612ae7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bce82611cdc565b9150612bd983611cdc565b9250828203905081811115612bf157612bf0612b97565b5b92915050565b612c0081611d81565b82525050565b5f82825260208201905092915050565b5f612c2082612070565b612c2a8185612c06565b9350612c3a81856020860161208a565b612c4381612098565b840191505092915050565b5f604083015f830151612c635f860182612bf7565b5060208301518482036020860152612c7b8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612ca08184612c4e565b905092915050565b5f604082019050612cbb5f830185611e4d565b8181036020830152612ccd81846120a8565b90509392505050565b5f60a082019050612ce95f830188611e4d565b612cf66020830187611e4d565b612d036040830186611ce5565b612d106060830185611ce5565b8181036080830152612d2281846120a8565b90509695505050505050565b5f8160601b9050919050565b5f612d4482612d2e565b9050919050565b5f612d5582612d3a565b9050919050565b612d6d612d6882611d81565b612d4b565b82525050565b5f819050919050565b612d8d612d8882611cdc565b612d73565b82525050565b5f81905092915050565b5f612da782612070565b612db18185612d93565b9350612dc181856020860161208a565b80840191505092915050565b5f612dd88288612d5c565b601482019150612de88287612d5c565b601482019150612df88286612d7c565b602082019150612e088285612d7c565b602082019150612e188284612d9d565b91508190509695505050505050565b612e3081611cdc565b82525050565b5f606083015f830151612e4b5f860182612e27565b506020830151612e5e6020860182612e27565b5060408301518482036040860152612e768282612c16565b9150508091505092915050565b5f6020820190508181035f830152612e9b8184612e36565b905092915050565b60038110612eb457612eb3612100565b5b50565b5f819050612ec482612ea3565b919050565b5f612ed382612eb7565b9050919050565b612ee381612ec9565b82525050565b5f608083015f830151612efe5f860182612eda565b506020830151612f116020860182612bf7565b506040830151612f246040860182612bf7565b5060608301518482036060860152612f3c8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612f618184612ee9565b905092915050565b5f612f7382611cdc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa557612fa4612b97565b5b600182019050919050565b5f819050919050565b5f612fd3612fce612fc984612fb0565b6128f9565b611cdc565b9050919050565b612fe381612fb9565b82525050565b5f612ff4838561207a565b935061300183858461261b565b61300a83612098565b840190509392505050565b5f60a0820190506130285f830189611e4d565b6130356020830188611e4d565b6130426040830187611ce5565b61304f6060830186612fda565b8181036080830152613062818486612fe9565b9050979650505050505050565b5f61307a8385612d93565b935061308783858461261b565b82840190509392505050565b5f61309e8289612d5c565b6014820191506130ae8288612d5c565b6014820191506130be8287612d7c565b6020820191506130ce8286612d7c565b6020820191506130df82848661306f565b9150819050979650505050505050565b5f6040828403121561310457613103612509565b5b61310e604061256b565b90505f82013567ffffffffffffffff81111561312d5761312c612585565b5b6131398482850161266a565b5f83015250602082013567ffffffffffffffff81111561315c5761315b612585565b5b6131688482850161266a565b60208301525092915050565b5f6020828403121561318957613188611c21565b5b5f82013567ffffffffffffffff8111156131a6576131a5611c25565b5b6131b2848285016130ef565b91505092915050565b5f815190506131c98161239c565b92915050565b5f602082840312156131e4576131e3612509565b5b6131ee602061256b565b90505f6131fd848285016131bb565b5f8301525092915050565b5f6020828403121561321d5761321c611c21565b5b5f61322a848285016131cf565b9150509291505056fea2646970667358221220cce3a3e77bfd8b7cefb45a4e41677ac42c3764b0ca35254db63a11cffcdc1b5e64736f6c634300081a0033",d5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c7e565b61086c565b6040516102509190611cc3565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cf4565b60405180910390f35b34801561028e575f80fd5b50610297610956565b6040516102a49190611cf4565b60405180910390f35b6102c760048036038101906102c29190611d37565b61095c565b005b6102e360048036038101906102de9190611dbc565b610969565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dbc565b61097f565b6040516103189190611cc3565b60405180910390f35b34801561032c575f80fd5b50610335610995565b6040516103429190611cf4565b60405180910390f35b61035361099b565b005b348015610360575f80fd5b506103696109ec565b6040516103769190611e09565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e22565b610a13565b6040516103b29190611cf4565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2c565b6040516103dc9190611e5c565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f2b565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190611ffe565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190611ffe565b610e11565b604051610469929190612049565b60405180910390f35b61048c60048036038101906104879190611dbc565b61103d565b005b348015610499575f80fd5b506104b460048036038101906104af9190611ffe565b611053565b6040516104c191906120e0565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dbc565b611136565b6040516104fd9190611cc3565b60405180910390f35b61050e61114d565b005b34801561051b575f80fd5b50610524611186565b60405161053191906120e0565b60405180910390f35b610542611212565b005b34801561054f575f80fd5b50610558611225565b6040516105659190611cf4565b60405180910390f35b348015610579575f80fd5b5061058261122a565b60405161058f9190611e5c565b60405180910390f35b3480156105a3575f80fd5b506105ac611252565b6040516105b99190611cf4565b60405180910390f35b3480156105cd575f80fd5b506105d6611258565b6040516105e39190612173565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061218c565b61126a565b60405161061f9190611cc3565b60405180910390f35b348015610633575f80fd5b5061064e6004803603810190610649919061223e565b611479565b60405161065b9190611e09565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612315565b611490565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123c6565b611546565b6040516106bf9190611cc3565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061218c565b611563565b6040516106fb9190611cc3565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612315565b611584565b005b348015610737575f80fd5b5061074061163a565b60405161074d9190611cf4565b60405180910390f35b348015610761575f80fd5b5061076a611640565b6040516107779190611cf4565b60405180910390f35b61079a60048036038101906107959190611e22565b611645565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123f1565b611683565b6040516107cf9190611e09565b60405180910390f35b6107f260048036038101906107ed9190611e22565b611698565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e22565b6116c1565b6040516108279190611cc3565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e22565b611714565b6040516108639190611cf4565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094657506109458261172d565b5b9050919050565b5f600254905090565b60065481565b61096633826117a6565b50565b6109716117b5565b61097b82826117ec565b5050565b5f818261098b85610a13565b1614905092915050565b60025481565b5f6109a46117fc565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611806565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612487565b5b9050602002016020810190610acf91906124de565b90506001151581151503610b1457610b0f878784818110610af357610af2612487565b5b9050602002016020810190610b089190611e22565b60016117ec565b610b47565b610b46878784818110610b2a57610b29612487565b5b9050602002016020810190610b3f9190611e22565b60016117a6565b5b508080600101915050610a9b565b505050505050565b5f610b6661183b565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba9919061273c565b90506001600281905550600180811115610bc657610bc5612100565b5b81602001516001811115610bdd57610bdc612100565b5b03610c14576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c51576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c93929190612783565b602060405180830381865afa158015610cae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd291906127be565b90508160600151811015610d2857815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1f939291906127e9565b60405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160045f6101000a81548160ff02191690836001811115610d9257610d91612100565b5b021790555081604001516006819055508160600151600581905550816080015160079081610dc09190612a18565b50610dca33611864565b610dd533600161193a565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e8161197b565b5f8585810190610e2e9190612b50565b90505f8160200151806020019051810190610e4991906127be565b9050600154600554610e5b9190612bc4565b811115610ec0573382604051602001610e749190612c88565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612ca8565b60405180910390fd5b8060055f828254610ed19190612bc4565b925050819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516006548587602001516040518663ffffffff1660e01b8152600401610f41959493929190612cd6565b5f604051808303815f87803b158015610f58575f80fd5b505af1158015610f6a573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600654858760200151604051602001610fea959493929190612dcd565b60405160208183030381529060405260405161100691906120e0565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110456117b5565b61104f82826117a6565b5050565b60605f8383810190611065919061273c565b9050604051806080016040528060028081111561108557611084612100565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016110fc9190612e83565b60405160208183030381529060405281525060405160200161111e9190612f49565b60405160208183030381529060405291505092915050565b5f808261114285610a13565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b600780546111939061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bf9061284b565b801561120a5780601f106111e15761010080835404028352916020019161120a565b820191905f5260205f20905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b61121a6117b5565b6112235f6119a2565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b5f6112736117b5565b5f61127e8484611a68565b90505f600181111561129357611292612100565b5b60045f9054906101000a900460ff1660018111156112b4576112b3612100565b5b0361146d576112c281611aa4565b6112f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81548092919061130a90612f69565b9190505550600160035f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600654600189896040518763ffffffff1660e01b815260040161139d96959493929190613015565b5f604051808303815f87803b1580156113b4575f80fd5b505af11580156113c6573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876006546001898960405160200161143f96959493929190613093565b60405160208183030381529060405260405161145b91906120e0565b60405180910390a26001915050611472565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261149b81611806565b8282905085859050146114da576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561153e576115318686838181106114fd576114fc612487565b5b90506020020160208101906115129190611e22565b85858481811061152557611524612487565b5b905060200201356117ec565b80806001019150506114dc565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f8061156f8484611a68565b905061157a81611aa4565b9150509392505050565b600261158f81611806565b8282905085859050146115ce576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611632576116258686838181106115f1576115f0612487565b5b90506020020160208101906116069190611e22565b85858481811061161957611618612487565b5b905060200201356117a6565b80806001019150506115d0565b505050505050565b60015481565b600181565b61164d6117b5565b63389a75e1600c52805f526020600c20805442111561167357636f5e88185f526004601cfd5b5f815550611680816119a2565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a06117b5565b8060601b6116b557637448fbae5f526004601cfd5b6116be816119a2565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116e161122a565b73ffffffffffffffffffffffffffffffffffffffff16148061170d575061170c826002600117611136565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179f575061179e82611ada565b5b9050919050565b6117b182825f611b53565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117ea576382b429005f526004601cfd5b565b6117f882826001611b53565b5050565b5f6202a300905090565b638b78c6d81954331461183857638b78c6d8600c52335f52806020600c205416611837576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61186c611bab565b156118e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118a657630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611937565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661199f576382b429005f526004601cfd5b50565b6119aa611bab565b15611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a65565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a799190613174565b90505f8160200151806020019051810190611a949190613208565b9050805f01519250505092915050565b5f60035f8381526020019081526020015f205f9054906101000a900460ff16158015611ad35750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b4c5750611b4b82611baf565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c5d81611c29565b8114611c67575f80fd5b50565b5f81359050611c7881611c54565b92915050565b5f60208284031215611c9357611c92611c21565b5b5f611ca084828501611c6a565b91505092915050565b5f8115159050919050565b611cbd81611ca9565b82525050565b5f602082019050611cd65f830184611cb4565b92915050565b5f819050919050565b611cee81611cdc565b82525050565b5f602082019050611d075f830184611ce5565b92915050565b611d1681611cdc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f60208284031215611d4c57611d4b611c21565b5b5f611d5984828501611d23565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d8b82611d62565b9050919050565b611d9b81611d81565b8114611da5575f80fd5b50565b5f81359050611db681611d92565b92915050565b5f8060408385031215611dd257611dd1611c21565b5b5f611ddf85828601611da8565b9250506020611df085828601611d23565b9150509250929050565b611e0381611c29565b82525050565b5f602082019050611e1c5f830184611dfa565b92915050565b5f60208284031215611e3757611e36611c21565b5b5f611e4484828501611da8565b91505092915050565b611e5681611d81565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9657611e95611e75565b5b8235905067ffffffffffffffff811115611eb357611eb2611e79565b5b602083019150836020820283011115611ecf57611ece611e7d565b5b9250929050565b5f8083601f840112611eeb57611eea611e75565b5b8235905067ffffffffffffffff811115611f0857611f07611e79565b5b602083019150836020820283011115611f2457611f23611e7d565b5b9250929050565b5f805f8060408587031215611f4357611f42611c21565b5b5f85013567ffffffffffffffff811115611f6057611f5f611c25565b5b611f6c87828801611e81565b9450945050602085013567ffffffffffffffff811115611f8f57611f8e611c25565b5b611f9b87828801611ed6565b925092505092959194509250565b5f8083601f840112611fbe57611fbd611e75565b5b8235905067ffffffffffffffff811115611fdb57611fda611e79565b5b602083019150836001820283011115611ff757611ff6611e7d565b5b9250929050565b5f806020838503121561201457612013611c21565b5b5f83013567ffffffffffffffff81111561203157612030611c25565b5b61203d85828601611fa9565b92509250509250929050565b5f60408201905061205c5f830185611ce5565b6120696020830184611e4d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b282612070565b6120bc818561207a565b93506120cc81856020860161208a565b6120d581612098565b840191505092915050565b5f6020820190508181035f8301526120f881846120a8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061213e5761213d612100565b5b50565b5f81905061214e8261212d565b919050565b5f61215d82612141565b9050919050565b61216d81612153565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f805f604084860312156121a3576121a2611c21565b5b5f6121b086828701611da8565b935050602084013567ffffffffffffffff8111156121d1576121d0611c25565b5b6121dd86828701611fa9565b92509250509250925092565b5f8083601f8401126121fe576121fd611e75565b5b8235905067ffffffffffffffff81111561221b5761221a611e79565b5b60208301915083602082028301111561223757612236611e7d565b5b9250929050565b5f805f805f805f8060a0898b03121561225a57612259611c21565b5b5f6122678b828c01611da8565b98505060206122788b828c01611da8565b975050604089013567ffffffffffffffff81111561229957612298611c25565b5b6122a58b828c016121e9565b9650965050606089013567ffffffffffffffff8111156122c8576122c7611c25565b5b6122d48b828c016121e9565b9450945050608089013567ffffffffffffffff8111156122f7576122f6611c25565b5b6123038b828c01611fa9565b92509250509295985092959890939650565b5f805f806040858703121561232d5761232c611c21565b5b5f85013567ffffffffffffffff81111561234a57612349611c25565b5b61235687828801611e81565b9450945050602085013567ffffffffffffffff81111561237957612378611c25565b5b612385878288016121e9565b925092505092959194509250565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f602082840312156123db576123da611c21565b5b5f6123e8848285016123b2565b91505092915050565b5f805f805f8060a0878903121561240b5761240a611c21565b5b5f61241889828a01611da8565b965050602061242989828a01611da8565b955050604061243a89828a01611d23565b945050606061244b89828a01611d23565b935050608087013567ffffffffffffffff81111561246c5761246b611c25565b5b61247889828a01611fa9565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124bd81611ca9565b81146124c7575f80fd5b50565b5f813590506124d8816124b4565b92915050565b5f602082840312156124f3576124f2611c21565b5b5f612500848285016124ca565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254382612098565b810181811067ffffffffffffffff821117156125625761256161250d565b5b80604052505050565b5f612574611c18565b9050612580828261253a565b919050565b5f80fd5b5f61259382611d81565b9050919050565b6125a381612589565b81146125ad575f80fd5b50565b5f813590506125be8161259a565b92915050565b600281106125d0575f80fd5b50565b5f813590506125e1816125c4565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126055761260461250d565b5b61260e82612098565b9050602081019050919050565b828183375f83830152505050565b5f61263b612636846125eb565b61256b565b905082815260208101848484011115612657576126566125e7565b5b61266284828561261b565b509392505050565b5f82601f83011261267e5761267d611e75565b5b813561268e848260208601612629565b91505092915050565b5f60a082840312156126ac576126ab612509565b5b6126b660a061256b565b90505f6126c5848285016125b0565b5f8301525060206126d8848285016125d3565b60208301525060406126ec84828501611d23565b604083015250606061270084828501611d23565b606083015250608082013567ffffffffffffffff81111561272457612723612585565b5b6127308482850161266a565b60808301525092915050565b5f6020828403121561275157612750611c21565b5b5f82013567ffffffffffffffff81111561276e5761276d611c25565b5b61277a84828501612697565b91505092915050565b5f6040820190506127965f830185611e4d565b6127a36020830184611ce5565b9392505050565b5f815190506127b881611d0d565b92915050565b5f602082840312156127d3576127d2611c21565b5b5f6127e0848285016127aa565b91505092915050565b5f6060820190506127fc5f830186611e4d565b6128096020830185611ce5565b6128166040830184611ce5565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286257607f821691505b6020821081036128755761287461281e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261289c565b6128e1868361289c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61291c61291761291284611cdc565b6128f9565b611cdc565b9050919050565b5f819050919050565b61293583612902565b61294961294182612923565b8484546128a8565b825550505050565b5f90565b61295d612951565b61296881848461292c565b505050565b5b8181101561298b576129805f82612955565b60018101905061296e565b5050565b601f8211156129d0576129a18161287b565b6129aa8461288d565b810160208510156129b9578190505b6129cd6129c58561288d565b83018261296d565b50505b505050565b5f82821c905092915050565b5f6129f05f19846008026129d5565b1980831691505092915050565b5f612a0883836129e1565b9150826002028217905092915050565b612a2182612070565b67ffffffffffffffff811115612a3a57612a3961250d565b5b612a44825461284b565b612a4f82828561298f565b5f60209050601f831160018114612a80575f8415612a6e578287015190505b612a7885826129fd565b865550612adf565b601f198416612a8e8661287b565b5f5b82811015612ab557848901518255600182019150602085019450602081019050612a90565b86831015612ad25784890151612ace601f8916826129e1565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612afc57612afb612509565b5b612b06604061256b565b90505f612b1584828501611da8565b5f83015250602082013567ffffffffffffffff811115612b3857612b37612585565b5b612b448482850161266a565b60208301525092915050565b5f60208284031215612b6557612b64611c21565b5b5f82013567ffffffffffffffff811115612b8257612b81611c25565b5b612b8e84828501612ae7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bce82611cdc565b9150612bd983611cdc565b9250828203905081811115612bf157612bf0612b97565b5b92915050565b612c0081611d81565b82525050565b5f82825260208201905092915050565b5f612c2082612070565b612c2a8185612c06565b9350612c3a81856020860161208a565b612c4381612098565b840191505092915050565b5f604083015f830151612c635f860182612bf7565b5060208301518482036020860152612c7b8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612ca08184612c4e565b905092915050565b5f604082019050612cbb5f830185611e4d565b8181036020830152612ccd81846120a8565b90509392505050565b5f60a082019050612ce95f830188611e4d565b612cf66020830187611e4d565b612d036040830186611ce5565b612d106060830185611ce5565b8181036080830152612d2281846120a8565b90509695505050505050565b5f8160601b9050919050565b5f612d4482612d2e565b9050919050565b5f612d5582612d3a565b9050919050565b612d6d612d6882611d81565b612d4b565b82525050565b5f819050919050565b612d8d612d8882611cdc565b612d73565b82525050565b5f81905092915050565b5f612da782612070565b612db18185612d93565b9350612dc181856020860161208a565b80840191505092915050565b5f612dd88288612d5c565b601482019150612de88287612d5c565b601482019150612df88286612d7c565b602082019150612e088285612d7c565b602082019150612e188284612d9d565b91508190509695505050505050565b612e3081611cdc565b82525050565b5f606083015f830151612e4b5f860182612e27565b506020830151612e5e6020860182612e27565b5060408301518482036040860152612e768282612c16565b9150508091505092915050565b5f6020820190508181035f830152612e9b8184612e36565b905092915050565b60038110612eb457612eb3612100565b5b50565b5f819050612ec482612ea3565b919050565b5f612ed382612eb7565b9050919050565b612ee381612ec9565b82525050565b5f608083015f830151612efe5f860182612eda565b506020830151612f116020860182612bf7565b506040830151612f246040860182612bf7565b5060608301518482036060860152612f3c8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612f618184612ee9565b905092915050565b5f612f7382611cdc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa557612fa4612b97565b5b600182019050919050565b5f819050919050565b5f612fd3612fce612fc984612fb0565b6128f9565b611cdc565b9050919050565b612fe381612fb9565b82525050565b5f612ff4838561207a565b935061300183858461261b565b61300a83612098565b840190509392505050565b5f60a0820190506130285f830189611e4d565b6130356020830188611e4d565b6130426040830187611ce5565b61304f6060830186612fda565b8181036080830152613062818486612fe9565b9050979650505050505050565b5f61307a8385612d93565b935061308783858461261b565b82840190509392505050565b5f61309e8289612d5c565b6014820191506130ae8288612d5c565b6014820191506130be8287612d7c565b6020820191506130ce8286612d7c565b6020820191506130df82848661306f565b9150819050979650505050505050565b5f6040828403121561310457613103612509565b5b61310e604061256b565b90505f82013567ffffffffffffffff81111561312d5761312c612585565b5b6131398482850161266a565b5f83015250602082013567ffffffffffffffff81111561315c5761315b612585565b5b6131688482850161266a565b60208301525092915050565b5f6020828403121561318957613188611c21565b5b5f82013567ffffffffffffffff8111156131a6576131a5611c25565b5b6131b2848285016130ef565b91505092915050565b5f815190506131c98161239c565b92915050565b5f602082840312156131e4576131e3612509565b5b6131ee602061256b565b90505f6131fd848285016131bb565b5f8301525092915050565b5f6020828403121561321d5761321c611c21565b5b5f61322a848285016131cf565b9150509291505056fea2646970667358221220cce3a3e77bfd8b7cefb45a4e41677ac42c3764b0ca35254db63a11cffcdc1b5e64736f6c634300081a0033",t5={},c5={},J={_format:Xf,contractName:f5,sourceName:b5,abi:e5,bytecode:a5,deployedBytecode:d5,linkReferences:t5,deployedLinkReferences:c5},n5="hh-sol-artifact-1",i5="PointsIncentive",s5="contracts/incentives/PointsIncentive.sol",p5=[{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"}],y5="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611b99806101185f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db9190611407565b61065f565b6040516101ed919061144c565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061147d565b60405180910390f35b61023a600480360381019061023591906114c0565b6106e1565b005b61025660048036038101906102519190611545565b6106ee565b005b348015610263575f80fd5b5061027e60048036038101906102799190611545565b610704565b60405161028b919061144c565b60405180910390f35b34801561029f575f80fd5b506102a861071a565b6040516102b5919061147d565b60405180910390f35b6102c6610720565b005b3480156102d3575f80fd5b506102dc610771565b6040516102e99190611592565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115ab565b610798565b604051610325919061147d565b60405180910390f35b348015610339575f80fd5b506103426107b1565b60405161034f91906115e5565b60405180910390f35b348015610363575f80fd5b5061037e6004803603810190610379919061165f565b6107d4565b005b34801561038b575f80fd5b506103a660048036038101906103a1919061165f565b61092c565b6040516103b49291906116aa565b60405180910390f35b6103d760048036038101906103d29190611545565b610960565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061165f565b610976565b60405161040c9190611741565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611545565b6109cd565b604051610448919061144c565b60405180910390f35b6104596109e4565b005b610463610a1d565b005b348015610470575f80fd5b50610479610a30565b60405161048691906115e5565b60405180910390f35b34801561049a575f80fd5b506104a3610a58565b6040516104b091906115e5565b60405180910390f35b3480156104c4575f80fd5b506104cd610a7d565b6040516104da919061147d565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611761565b610a83565b604051610516919061144c565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115ab565b610e9b565b604051610552919061144c565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611761565b610eb8565b60405161058e919061144c565b60405180910390f35b3480156105a2575f80fd5b506105ab610ecb565b6040516105b8919061147d565b60405180910390f35b3480156105cc575f80fd5b506105d5610ed1565b6040516105e29190611592565b60405180910390f35b610605600480360381019061060091906115ab565b610ee3565b005b610621600480360381019061061c91906115ab565b610f21565b005b34801561062e575f80fd5b50610649600480360381019061064491906115ab565b610f4a565b604051610656919061147d565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f63565b5b9050919050565b5f600254905090565b6106eb3382610fdc565b50565b6106f6610feb565b6107008282611022565b5050565b5f818261071085610798565b1614905092915050565b60025481565b5f610729611032565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107dd61103c565b9050805460038255801561080f5760018160011c14303b106108065763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061082091906118af565b90505f8160400151148061083757505f8160600151145b1561086e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160065f6101000a81548163ffffffff021916908360e01c0217905550806040015160028190555080606001516005819055506108f133611065565b508015610927576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610968610feb565b6109728282610fdc565b5050565b60605f67ffffffffffffffff811115610992576109916117c2565b5b6040519080825280601f01601f1916602001820160405280156109c45781602001600182028036833780820191505090505b50905092915050565b5f80826109d985610798565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a25610feb565b610a2e5f61113b565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b5f610a8c610feb565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3591906118ee565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bd85750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b9492919061195b565b602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd391906119ac565b151514155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1885611201565b610c4e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f815480929190610c6090611a04565b9190505550600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900460e01b87600254604051602401610d17929190611a4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d819190611aac565b5f604051808303815f865af19150503d805f8114610dba576040519150601f19603f3d011682016040523d82523d5f602084013e610dbf565b606091505b5050905080610dfa576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688600254604051602001610e6a93929190611b27565b604051602081830303815290604052604051610e869190611741565b60405180910390a26001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f610ec284611201565b90509392505050565b60015481565b60065f9054906101000a900460e01b81565b610eeb610feb565b63389a75e1600c52805f526020600c208054421115610f1157636f5e88185f526004601cfd5b5f815550610f1e8161113b565b50565b610f29610feb565b8060601b610f3e57637448fbae5f526004601cfd5b610f478161113b565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fd55750610fd482611263565b5b9050919050565b610fe782825f6112dc565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611020576382b429005f526004601cfd5b565b61102e828260016112dc565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61106d611334565b156110e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110a757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611138565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611143611334565b156111a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111fe565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125c5750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112d557506112d482611338565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112fe57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113e6816113b2565b81146113f0575f80fd5b50565b5f81359050611401816113dd565b92915050565b5f6020828403121561141c5761141b6113aa565b5b5f611429848285016113f3565b91505092915050565b5f8115159050919050565b61144681611432565b82525050565b5f60208201905061145f5f83018461143d565b92915050565b5f819050919050565b61147781611465565b82525050565b5f6020820190506114905f83018461146e565b92915050565b61149f81611465565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f602082840312156114d5576114d46113aa565b5b5f6114e2848285016114ac565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611514826114eb565b9050919050565b6115248161150a565b811461152e575f80fd5b50565b5f8135905061153f8161151b565b92915050565b5f806040838503121561155b5761155a6113aa565b5b5f61156885828601611531565b9250506020611579858286016114ac565b9150509250929050565b61158c816113b2565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f602082840312156115c0576115bf6113aa565b5b5f6115cd84828501611531565b91505092915050565b6115df8161150a565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261161f5761161e6115fe565b5b8235905067ffffffffffffffff81111561163c5761163b611602565b5b60208301915083600182028301111561165857611657611606565b5b9250929050565b5f8060208385031215611675576116746113aa565b5b5f83013567ffffffffffffffff811115611692576116916113ae565b5b61169e8582860161160a565b92509250509250929050565b5f6040820190506116bd5f83018561146e565b6116ca60208301846115d6565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611713826116d1565b61171d81856116db565b935061172d8185602086016116eb565b611736816116f9565b840191505092915050565b5f6020820190508181035f8301526117598184611709565b905092915050565b5f805f60408486031215611778576117776113aa565b5b5f61178586828701611531565b935050602084013567ffffffffffffffff8111156117a6576117a56113ae565b5b6117b28682870161160a565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117f8826116f9565b810181811067ffffffffffffffff82111715611817576118166117c2565b5b80604052505050565b5f6118296113a1565b905061183582826117ef565b919050565b5f6080828403121561184f5761184e6117be565b5b6118596080611820565b90505f61186884828501611531565b5f83015250602061187b848285016113f3565b602083015250604061188f848285016114ac565b60408301525060606118a3848285016114ac565b60608301525092915050565b5f608082840312156118c4576118c36113aa565b5b5f6118d18482850161183a565b91505092915050565b5f815190506118e88161151b565b92915050565b5f60208284031215611903576119026113aa565b5b5f611910848285016118da565b91505092915050565b5f819050919050565b5f819050919050565b5f61194561194061193b84611919565b611922565b611465565b9050919050565b6119558161192b565b82525050565b5f60408201905061196e5f8301856115d6565b61197b602083018461194c565b9392505050565b61198b81611432565b8114611995575f80fd5b50565b5f815190506119a681611982565b92915050565b5f602082840312156119c1576119c06113aa565b5b5f6119ce84828501611998565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0e82611465565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a4057611a3f6119d7565b5b600182019050919050565b5f604082019050611a5e5f8301856115d6565b611a6b602083018461146e565b9392505050565b5f81905092915050565b5f611a86826116d1565b611a908185611a72565b9350611aa08185602086016116eb565b80840191505092915050565b5f611ab78284611a7c565b915081905092915050565b5f8160601b9050919050565b5f611ad882611ac2565b9050919050565b5f611ae982611ace565b9050919050565b611b01611afc8261150a565b611adf565b82525050565b5f819050919050565b611b21611b1c82611465565b611b07565b82525050565b5f611b328286611af0565b601482019150611b428285611af0565b601482019150611b528284611b10565b60208201915081905094935050505056fea2646970667358221220e1ce7f1c57a6d62d7c8e566241c04213bed868c0967ce7c24b4cc5c5f5d63e4364736f6c634300081a0033",r5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db9190611407565b61065f565b6040516101ed919061144c565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061147d565b60405180910390f35b61023a600480360381019061023591906114c0565b6106e1565b005b61025660048036038101906102519190611545565b6106ee565b005b348015610263575f80fd5b5061027e60048036038101906102799190611545565b610704565b60405161028b919061144c565b60405180910390f35b34801561029f575f80fd5b506102a861071a565b6040516102b5919061147d565b60405180910390f35b6102c6610720565b005b3480156102d3575f80fd5b506102dc610771565b6040516102e99190611592565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115ab565b610798565b604051610325919061147d565b60405180910390f35b348015610339575f80fd5b506103426107b1565b60405161034f91906115e5565b60405180910390f35b348015610363575f80fd5b5061037e6004803603810190610379919061165f565b6107d4565b005b34801561038b575f80fd5b506103a660048036038101906103a1919061165f565b61092c565b6040516103b49291906116aa565b60405180910390f35b6103d760048036038101906103d29190611545565b610960565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061165f565b610976565b60405161040c9190611741565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611545565b6109cd565b604051610448919061144c565b60405180910390f35b6104596109e4565b005b610463610a1d565b005b348015610470575f80fd5b50610479610a30565b60405161048691906115e5565b60405180910390f35b34801561049a575f80fd5b506104a3610a58565b6040516104b091906115e5565b60405180910390f35b3480156104c4575f80fd5b506104cd610a7d565b6040516104da919061147d565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611761565b610a83565b604051610516919061144c565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115ab565b610e9b565b604051610552919061144c565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611761565b610eb8565b60405161058e919061144c565b60405180910390f35b3480156105a2575f80fd5b506105ab610ecb565b6040516105b8919061147d565b60405180910390f35b3480156105cc575f80fd5b506105d5610ed1565b6040516105e29190611592565b60405180910390f35b610605600480360381019061060091906115ab565b610ee3565b005b610621600480360381019061061c91906115ab565b610f21565b005b34801561062e575f80fd5b50610649600480360381019061064491906115ab565b610f4a565b604051610656919061147d565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f63565b5b9050919050565b5f600254905090565b6106eb3382610fdc565b50565b6106f6610feb565b6107008282611022565b5050565b5f818261071085610798565b1614905092915050565b60025481565b5f610729611032565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107dd61103c565b9050805460038255801561080f5760018160011c14303b106108065763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061082091906118af565b90505f8160400151148061083757505f8160600151145b1561086e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160065f6101000a81548163ffffffff021916908360e01c0217905550806040015160028190555080606001516005819055506108f133611065565b508015610927576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610968610feb565b6109728282610fdc565b5050565b60605f67ffffffffffffffff811115610992576109916117c2565b5b6040519080825280601f01601f1916602001820160405280156109c45781602001600182028036833780820191505090505b50905092915050565b5f80826109d985610798565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a25610feb565b610a2e5f61113b565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b5f610a8c610feb565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3591906118ee565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bd85750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b9492919061195b565b602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd391906119ac565b151514155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1885611201565b610c4e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f815480929190610c6090611a04565b9190505550600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900460e01b87600254604051602401610d17929190611a4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d819190611aac565b5f604051808303815f865af19150503d805f8114610dba576040519150601f19603f3d011682016040523d82523d5f602084013e610dbf565b606091505b5050905080610dfa576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688600254604051602001610e6a93929190611b27565b604051602081830303815290604052604051610e869190611741565b60405180910390a26001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f610ec284611201565b90509392505050565b60015481565b60065f9054906101000a900460e01b81565b610eeb610feb565b63389a75e1600c52805f526020600c208054421115610f1157636f5e88185f526004601cfd5b5f815550610f1e8161113b565b50565b610f29610feb565b8060601b610f3e57637448fbae5f526004601cfd5b610f478161113b565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fd55750610fd482611263565b5b9050919050565b610fe782825f6112dc565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611020576382b429005f526004601cfd5b565b61102e828260016112dc565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61106d611334565b156110e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110a757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611138565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611143611334565b156111a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111fe565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125c5750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112d557506112d482611338565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112fe57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113e6816113b2565b81146113f0575f80fd5b50565b5f81359050611401816113dd565b92915050565b5f6020828403121561141c5761141b6113aa565b5b5f611429848285016113f3565b91505092915050565b5f8115159050919050565b61144681611432565b82525050565b5f60208201905061145f5f83018461143d565b92915050565b5f819050919050565b61147781611465565b82525050565b5f6020820190506114905f83018461146e565b92915050565b61149f81611465565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f602082840312156114d5576114d46113aa565b5b5f6114e2848285016114ac565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611514826114eb565b9050919050565b6115248161150a565b811461152e575f80fd5b50565b5f8135905061153f8161151b565b92915050565b5f806040838503121561155b5761155a6113aa565b5b5f61156885828601611531565b9250506020611579858286016114ac565b9150509250929050565b61158c816113b2565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f602082840312156115c0576115bf6113aa565b5b5f6115cd84828501611531565b91505092915050565b6115df8161150a565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261161f5761161e6115fe565b5b8235905067ffffffffffffffff81111561163c5761163b611602565b5b60208301915083600182028301111561165857611657611606565b5b9250929050565b5f8060208385031215611675576116746113aa565b5b5f83013567ffffffffffffffff811115611692576116916113ae565b5b61169e8582860161160a565b92509250509250929050565b5f6040820190506116bd5f83018561146e565b6116ca60208301846115d6565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611713826116d1565b61171d81856116db565b935061172d8185602086016116eb565b611736816116f9565b840191505092915050565b5f6020820190508181035f8301526117598184611709565b905092915050565b5f805f60408486031215611778576117776113aa565b5b5f61178586828701611531565b935050602084013567ffffffffffffffff8111156117a6576117a56113ae565b5b6117b28682870161160a565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117f8826116f9565b810181811067ffffffffffffffff82111715611817576118166117c2565b5b80604052505050565b5f6118296113a1565b905061183582826117ef565b919050565b5f6080828403121561184f5761184e6117be565b5b6118596080611820565b90505f61186884828501611531565b5f83015250602061187b848285016113f3565b602083015250604061188f848285016114ac565b60408301525060606118a3848285016114ac565b60608301525092915050565b5f608082840312156118c4576118c36113aa565b5b5f6118d18482850161183a565b91505092915050565b5f815190506118e88161151b565b92915050565b5f60208284031215611903576119026113aa565b5b5f611910848285016118da565b91505092915050565b5f819050919050565b5f819050919050565b5f61194561194061193b84611919565b611922565b611465565b9050919050565b6119558161192b565b82525050565b5f60408201905061196e5f8301856115d6565b61197b602083018461194c565b9392505050565b61198b81611432565b8114611995575f80fd5b50565b5f815190506119a681611982565b92915050565b5f602082840312156119c1576119c06113aa565b5b5f6119ce84828501611998565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0e82611465565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a4057611a3f6119d7565b5b600182019050919050565b5f604082019050611a5e5f8301856115d6565b611a6b602083018461146e565b9392505050565b5f81905092915050565b5f611a86826116d1565b611a908185611a72565b9350611aa08185602086016116eb565b80840191505092915050565b5f611ab78284611a7c565b915081905092915050565b5f8160601b9050919050565b5f611ad882611ac2565b9050919050565b5f611ae982611ace565b9050919050565b611b01611afc8261150a565b611adf565b82525050565b5f819050919050565b611b21611b1c82611465565b611b07565b82525050565b5f611b328286611af0565b601482019150611b428285611af0565b601482019150611b528284611b10565b60208201915081905094935050505056fea2646970667358221220e1ce7f1c57a6d62d7c8e566241c04213bed868c0967ce7c24b4cc5c5f5d63e4364736f6c634300081a0033",u5={},o5={},X={_format:n5,contractName:i5,sourceName:s5,abi:p5,bytecode:y5,deployedBytecode:r5,linkReferences:u5,deployedLinkReferences:o5},l5="hh-sol-artifact-1",m5="LimitedSignerValidator",T5="contracts/validators/LimitedSignerValidator.sol",v5=[{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"}],w5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161236361028a5f395f610fe601525f61128d01525f61126a01525f6112fc01525f61132001526123635ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d21716710ff17af2ff6e0c564b67a69955b3b16d9106ab352ff6f552b749751f64736f6c634300081a0033",M5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d21716710ff17af2ff6e0c564b67a69955b3b16d9106ab352ff6f552b749751f64736f6c634300081a0033",I5={},h5={},f0={_format:l5,contractName:m5,sourceName:T5,abi:v5,bytecode:w5,deployedBytecode:M5,linkReferences:I5,deployedLinkReferences:h5},A5="hh-sol-artifact-1",O5="SignerValidator",R5="contracts/validators/SignerValidator.sol",g5=[{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"}],x5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611ecf61028a5f395f610f6401525f6110a301525f61108001525f61111201525f6111360152611ecf5ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122008717acf56bd2e77cae440af4190cdc25d338915254361f19975fc59eb3addf964736f6c634300081a0033",_5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122008717acf56bd2e77cae440af4190cdc25d338915254361f19975fc59eb3addf964736f6c634300081a0033",C5={},z5={},b0={_format:A5,contractName:O5,sourceName:R5,abi:g5,bytecode:x5,deployedBytecode:_5,linkReferences:C5,deployedLinkReferences:z5},N5=async function($5,v){var t,c,n,i,s,p,y,r,u,o,l,m;const A=v.privateKey,O=v.mnemonic,w=v.chain;if(!A&&!O)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!w||!S.Chains[w])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[T,e0]=S.getDeployableOptions({chain:w,privateKey:A,mnemonic:O}),{config:f,account:e}=T,d=e0.id,R=await new b.BoostRegistry({address:null,...T}).deploy(),h=class h extends b.BoostRegistry{};h.addresses={[d]:R.assertValidAddress()};let M=h;const I=new M({...T,address:R.assertValidAddress()}),a0=await new b.BoostCore({...T,registryAddress:I.assertValidAddress(),protocolFeeReceiver:e.address}).deploy(),d0=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:V.abi,bytecode:V.bytecode,account:e})),t0=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:q.abi,bytecode:q.bytecode,account:e})),g=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:F.abi,bytecode:F.bytecode,account:e})),x=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:G.abi,bytecode:G.bytecode,account:e})),_=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:P.abi,bytecode:P.bytecode,account:e})),c0=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),C=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:j.abi,bytecode:j.bytecode,account:e})),z=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:K.abi,bytecode:K.bytecode,account:e})),N=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),n0=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:J.abi,bytecode:J.bytecode,account:e})),E=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:U.abi,bytecode:U.bytecode,account:e})),$=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:X.abi,bytecode:X.bytecode,account:e})),L=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:W.abi,bytecode:W.bytecode,account:e})),H=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),D=await b.getDeployedContractAddress(f,a.deployContract(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),i0={EventAction:(t=class extends b.EventAction{},t.bases={[d]:E},t),SimpleAllowList:(c=class extends b.SimpleAllowList{},c.bases={[d]:g},c),SimpleDenyList:(n=class extends b.SimpleDenyList{},n.bases={[d]:x},n),ManagedBudget:(i=class extends b.ManagedBudget{},i.bases={[d]:_},i),AllowListIncentive:(s=class extends b.AllowListIncentive{},s.bases={[d]:C},s),CGDAIncentive:(p=class extends b.CGDAIncentive{},p.bases={[d]:z},p),ERC20Incentive:(y=class extends b.ERC20Incentive{},y.bases={[d]:N},y),ERC20VariableIncentive:(r=class extends b.ERC20VariableIncentive{},r.bases={[d]:L},r),ERC20VariableCriteriaIncentive:(u=class extends b.ERC20VariableCriteriaIncentive{},u.bases={[d]:k},u),PointsIncentive:(o=class extends b.PointsIncentive{},o.bases={[d]:$},o),SignerValidator:(l=class extends b.SignerValidator{},l.bases={[d]:H},l),LimitedSignerValidator:(m=class extends b.LimitedSignerValidator{},m.bases={[d]:D},m)};for(const[s0,B]of Object.entries(i0))await I.register(B.registryType,s0,B.bases[d]);return{BOOST_CORE_ADDRESS:a0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:I.assertValidAddress(),CONTRACT_ACTION_BASE:d0,EVENT_ACTION_BASE:E,ERC721_MINT_ACTION_BASE:t0,SIMPLE_ALLOWLIST_BASE:g,SIMPLE_DENYLIST_BASE:x,MANAGED_BUDGET_BASE:_,VESTING_BUDGET_BASE:c0,ALLOWLIST_INCENTIVE_BASE:C,CGDA_INCENTIVE_BASE:z,ERC20_INCENTIVE_BASE:N,ERC20_VARIABLE_INCENTIVE_BASE:L,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:k,ERC1155_INCENTIVE_BASE:n0,POINTS_INCENTIVE_BASE:$,SIGNER_VALIDATOR_BASE:H,LIMITED_SIGNER_VALIDATOR_BASE:D}};exports.deploy=N5;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),r=require("../utils-C7UotnrC.cjs"),y0="hh-sol-artifact-1",u0="ContractAction",o0="contracts/actions/ContractAction.sol",l0=[{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"}],m0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",T0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",w0={},v0={},F={_format:y0,contractName:u0,sourceName:o0,abi:l0,bytecode:m0,deployedBytecode:T0,linkReferences:w0,deployedLinkReferences:v0},M0="hh-sol-artifact-1",I0="ERC721MintAction",h0="contracts/actions/ERC721MintAction.sol",A0=[{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"}],g0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516116026100c85f395f61054001526116025ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220a0bff22b510bd0fc26a18717d2760e209111bd0d91afb7b1dc48433b91cc280a64736f6c634300081a0033",O0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220a0bff22b510bd0fc26a18717d2760e209111bd0d91afb7b1dc48433b91cc280a64736f6c634300081a0033",R0={},x0={},G={_format:M0,contractName:I0,sourceName:h0,abi:A0,bytecode:g0,deployedBytecode:O0,linkReferences:R0,deployedLinkReferences:x0},C0="hh-sol-artifact-1",_0="EventAction",z0="contracts/actions/EventAction.sol",N0=[{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"}],E0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805161231a6100c85f395f61034a015261231a5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200236c05ff7d71063a06c7ef5cea85ff52f299b5e243d3a9892764b871433e7f864736f6c634300081a0033",$0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611333565b610273565b6040516100c79190611378565b60405180910390f35b6100ea60048036038101906100e591906113f2565b6102ec565b6040516100f89291906114ad565b60405180910390f35b34801561010c575f80fd5b50610115610321565b60405161012291906114ea565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c919061157d565b60405180910390f35b348015610160575f80fd5b5061017b600480360381019061017691906113f2565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e91906118e9565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611933565b610648565b6040516101da91906119e4565b60405180910390f35b3480156101ee575f80fd5b50610209600480360381019061020491906113f2565b610875565b6040516102169190611a04565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611a8a565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611ab2565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190611fb0565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a576104696115d7565b5b600181111561047c5761047b6115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f6115d7565b5b6007811115610542576105416115d7565b5b81526020015f820160019054906101000a900460ff16600381111561056a576105696115d7565b5b600381111561057c5761057b6115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612024565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612024565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b6106506111c4565b6004828154811061066457610663612054565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a76115d7565b5b60018111156106ba576106b96115d7565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d6115d7565b5b60078111156107805761077f6115d7565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a76115d7565b5b60038111156107ba576107b96115d7565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612024565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612024565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b1611229565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df6115d7565b5b60018111156108f2576108f16115d7565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe826110be565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611137565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a636115d7565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b456115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed6115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612215565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d626115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d916115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612215565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f6115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed76115d7565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f066115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612215565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa46115d7565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c6115d7565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b6115d7565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612215565b505050505050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611130575061112f8261115b565b5b9050919050565b5f611140610a06565b905080546001166111585763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f60018111156111eb576111ea6115d7565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f8152602001611223611281565b81525090565b6040518060a001604052805f6001811115611247576112466115d7565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561129f5761129e6115d7565b5b81526020015f60038111156112b7576112b66115d7565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611312816112de565b811461131c575f80fd5b50565b5f8135905061132d81611309565b92915050565b5f60208284031215611348576113476112d6565b5b5f6113558482850161131f565b91505092915050565b5f8115159050919050565b6113728161135e565b82525050565b5f60208201905061138b5f830184611369565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113b2576113b1611391565b5b8235905067ffffffffffffffff8111156113cf576113ce611395565b5b6020830191508360018202830111156113eb576113ea611399565b5b9250929050565b5f8060208385031215611408576114076112d6565b5b5f83013567ffffffffffffffff811115611425576114246112da565b5b6114318582860161139d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61147f8261143d565b6114898185611447565b9350611499818560208601611457565b6114a281611465565b840191505092915050565b5f6040820190506114c05f830185611369565b81810360208301526114d28184611475565b90509392505050565b6114e4816112de565b82525050565b5f6020820190506114fd5f8301846114db565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61154561154061153b84611503565b611522565b611503565b9050919050565b5f6115568261152b565b9050919050565b5f6115678261154c565b9050919050565b6115778161155d565b82525050565b5f6020820190506115905f83018461156e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6115d1816115bf565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611615576116146115d7565b5b50565b5f81905061162582611604565b919050565b5f61163482611618565b9050919050565b6116448161162a565b82525050565b5f60ff82169050919050565b61165f8161164a565b82525050565b5f61166f82611503565b9050919050565b61167f81611665565b82525050565b5f819050919050565b61169781611685565b82525050565b600881106116ae576116ad6115d7565b5b50565b5f8190506116be8261169d565b919050565b5f6116cd826116b1565b9050919050565b6116dd816116c3565b82525050565b600481106116f4576116f36115d7565b5b50565b5f819050611704826116e3565b919050565b5f611713826116f7565b9050919050565b61172381611709565b82525050565b5f82825260208201905092915050565b5f6117438261143d565b61174d8185611729565b935061175d818560208601611457565b61176681611465565b840191505092915050565b5f608083015f8301516117865f8601826116d4565b506020830151611799602086018261171a565b5060408301516117ac6040860182611656565b50606083015184820360608601526117c48282611739565b9150508091505092915050565b5f60c083015f8301516117e65f8601826115c8565b5060208301516117f9602086018261163b565b50604083015161180c6040860182611656565b50606083015161181f6060860182611676565b506080830151611832608086018261168e565b5060a083015184820360a086015261184a8282611771565b9150508091505092915050565b5f61186283836117d1565b905092915050565b5f602082019050919050565b5f61188082611596565b61188a81856115a0565b93508360208202850161189c856115b0565b805f5b858110156118d757848403895281516118b88582611857565b94506118c38361186a565b925060208a0199505060018101905061189f565b50829750879550505050505092915050565b5f6020820190508181035f8301526119018184611876565b905092915050565b61191281611685565b811461191c575f80fd5b50565b5f8135905061192d81611909565b92915050565b5f60208284031215611948576119476112d6565b5b5f6119558482850161191f565b91505092915050565b5f60c083015f8301516119735f8601826115c8565b506020830151611986602086018261163b565b5060408301516119996040860182611656565b5060608301516119ac6060860182611676565b5060808301516119bf608086018261168e565b5060a083015184820360a08601526119d78282611771565b9150508091505092915050565b5f6020820190508181035f8301526119fc818461195e565b905092915050565b5f6020820190508181035f830152611a1c8184611475565b905092915050565b60a082015f820151611a385f85018261163b565b506020820151611a4b60208501826115c8565b506040820151611a5e6040850182611656565b506060820151611a716060850182611676565b506080820151611a84608085018261168e565b50505050565b5f60a082019050611a9d5f830184611a24565b92915050565b611aac81611685565b82525050565b5f602082019050611ac55f830184611aa3565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b0582611465565b810181811067ffffffffffffffff82111715611b2457611b23611acf565b5b80604052505050565b5f611b366112cd565b9050611b428282611afc565b919050565b5f80fd5b60028110611b57575f80fd5b50565b5f81359050611b6881611b4b565b92915050565b611b77816115bf565b8114611b81575f80fd5b50565b5f81359050611b9281611b6e565b92915050565b611ba18161164a565b8114611bab575f80fd5b50565b5f81359050611bbc81611b98565b92915050565b611bcb81611665565b8114611bd5575f80fd5b50565b5f81359050611be681611bc2565b92915050565b5f60a08284031215611c0157611c00611acb565b5b611c0b60a0611b2d565b90505f611c1a84828501611b5a565b5f830152506020611c2d84828501611b84565b6020830152506040611c4184828501611bae565b6040830152506060611c5584828501611bd8565b6060830152506080611c698482850161191f565b60808301525092915050565b60088110611c81575f80fd5b50565b5f81359050611c9281611c75565b92915050565b60048110611ca4575f80fd5b50565b5f81359050611cb581611c98565b92915050565b5f80fd5b5f67ffffffffffffffff821115611cd957611cd8611acf565b5b611ce282611465565b9050602081019050919050565b828183375f83830152505050565b5f611d0f611d0a84611cbf565b611b2d565b905082815260208101848484011115611d2b57611d2a611cbb565b5b611d36848285611cef565b509392505050565b5f82601f830112611d5257611d51611391565b5b8135611d62848260208601611cfd565b91505092915050565b5f60808284031215611d8057611d7f611acb565b5b611d8a6080611b2d565b90505f611d9984828501611c84565b5f830152506020611dac84828501611ca7565b6020830152506040611dc084828501611bae565b604083015250606082013567ffffffffffffffff811115611de457611de3611b47565b5b611df084828501611d3e565b60608301525092915050565b5f60c08284031215611e1157611e10611acb565b5b611e1b60c0611b2d565b90505f611e2a84828501611b84565b5f830152506020611e3d84828501611b5a565b6020830152506040611e5184828501611bae565b6040830152506060611e6584828501611bd8565b6060830152506080611e798482850161191f565b60808301525060a082013567ffffffffffffffff811115611e9d57611e9c611b47565b5b611ea984828501611d6b565b60a08301525092915050565b5f6101208284031215611ecb57611eca611acb565b5b611ed560a0611b2d565b90505f611ee484828501611bec565b5f8301525060a082013567ffffffffffffffff811115611f0757611f06611b47565b5b611f1384828501611dfc565b60208301525060c082013567ffffffffffffffff811115611f3757611f36611b47565b5b611f4384828501611dfc565b60408301525060e082013567ffffffffffffffff811115611f6757611f66611b47565b5b611f7384828501611dfc565b60608301525061010082013567ffffffffffffffff811115611f9857611f97611b47565b5b611fa484828501611dfc565b60808301525092915050565b5f60208284031215611fc557611fc46112d6565b5b5f82013567ffffffffffffffff811115611fe257611fe16112da565b5b611fee84828501611eb5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203b57607f821691505b60208210810361204e5761204d611ff7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120a2565b6120e786836120a2565b95508019841693508086168417925050509392505050565b5f61211961211461210f84611685565b611522565b611685565b9050919050565b5f819050919050565b612132836120ff565b61214661213e82612120565b8484546120ae565b825550505050565b5f90565b61215a61214e565b612165818484612129565b505050565b5b818110156121885761217d5f82612152565b60018101905061216b565b5050565b601f8211156121cd5761219e81612081565b6121a784612093565b810160208510156121b6578190505b6121ca6121c285612093565b83018261216a565b50505b505050565b5f82821c905092915050565b5f6121ed5f19846008026121d2565b1980831691505092915050565b5f61220583836121de565b9150826002028217905092915050565b61221e8261143d565b67ffffffffffffffff81111561223757612236611acf565b5b6122418254612024565b61224c82828561218c565b5f60209050601f83116001811461227d575f841561226b578287015190505b61227585826121fa565b8655506122dc565b601f19841661228b86612081565b5f5b828110156122b25784890151825560018201915060208501945060208101905061228d565b868310156122cf57848901516122cb601f8916826121de565b8355505b6001600288020188555050505b50505050505056fea26469706673582212200236c05ff7d71063a06c7ef5cea85ff52f299b5e243d3a9892764b871433e7f864736f6c634300081a0033",L0={},k0={},P={_format:C0,contractName:_0,sourceName:z0,abi:N0,bytecode:E0,deployedBytecode:$0,linkReferences:L0,deployedLinkReferences:k0},H0="hh-sol-artifact-1",D0="SimpleAllowList",B0="contracts/allowlists/SimpleAllowList.sol",S0=[{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"}],V0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea26469706673582212206b73e8198e9228139c9a79a2bdd5d9f229bdb7a1f590aa641136742ce255382f64736f6c634300081a0033",q0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea26469706673582212206b73e8198e9228139c9a79a2bdd5d9f229bdb7a1f590aa641136742ce255382f64736f6c634300081a0033",U0={},F0={},Z={_format:H0,contractName:D0,sourceName:B0,abi:S0,bytecode:V0,deployedBytecode:q0,linkReferences:U0,deployedLinkReferences:F0},G0="hh-sol-artifact-1",P0="SimpleDenyList",Z0="contracts/allowlists/SimpleDenyList.sol",j0=[{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"}],K0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea2646970667358221220116cbe1ffbc474fcaeb37297cb70b6ef5e5edc8a954bd32ea381049b2cd20ad664736f6c634300081a0033",Q0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea2646970667358221220116cbe1ffbc474fcaeb37297cb70b6ef5e5edc8a954bd32ea381049b2cd20ad664736f6c634300081a0033",W0={},Y0={},j={_format:G0,contractName:P0,sourceName:Z0,abi:j0,bytecode:K0,deployedBytecode:Q0,linkReferences:W0,deployedLinkReferences:Y0},J0="hh-sol-artifact-1",X0="ManagedBudget",ff="contracts/budgets/ManagedBudget.sol",bf=[{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"}],ef="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea2646970667358221220d33a2596e25edfdcc4e9c01c346e636d27f88842e8256c376a620765a437037a64736f6c634300081a0033",af="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea2646970667358221220d33a2596e25edfdcc4e9c01c346e636d27f88842e8256c376a620765a437037a64736f6c634300081a0033",df={},tf={},K={_format:J0,contractName:X0,sourceName:ff,abi:bf,bytecode:ef,deployedBytecode:af,linkReferences:df,deployedLinkReferences:tf},cf="hh-sol-artifact-1",nf="VestingBudget",sf="contracts/budgets/VestingBudget.sol",pf=[{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"}],rf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212203042a98b6f44d6bf5b3bb6c86e9629f17b6ec3105eebd1b8d17156f46a68750064736f6c634300081a0033",yf="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212203042a98b6f44d6bf5b3bb6c86e9629f17b6ec3105eebd1b8d17156f46a68750064736f6c634300081a0033",uf={},of={},Q={_format:cf,contractName:nf,sourceName:sf,abi:pf,bytecode:rf,deployedBytecode:yf,linkReferences:uf,deployedLinkReferences:of},lf="hh-sol-artifact-1",mf="AllowListIncentive",Tf="contracts/incentives/AllowListIncentive.sol",wf=[{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"}],vf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611815806101185f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190611006565b6104a0565b604051610160919061104b565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a919061107c565b60405180910390f35b34801561019e575f80fd5b506101a7610522565b6040516101b4919061107c565b60405180910390f35b6101c5610528565b005b3480156101d2575f80fd5b506101db610579565b6040516101e891906110a4565b60405180910390f35b3480156101fc575f80fd5b506102056105a0565b60405161021291906110fc565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611176565b6105c3565b005b34801561024e575f80fd5b5061026960048036038101906102649190611176565b6106a3565b6040516102779291906111c1565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611176565b6106d7565b6040516102b39190611258565b60405180910390f35b6102c461072e565b005b6102ce610767565b005b3480156102db575f80fd5b506102e461077a565b6040516102f191906112d3565b60405180910390f35b348015610305575f80fd5b5061030e61079f565b60405161031b91906110fc565b60405180910390f35b34801561032f575f80fd5b506103386107c7565b604051610345919061107c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190611316565b6107cd565b604051610381919061104b565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611373565b610973565b6040516103bd919061104b565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190611316565b610990565b6040516103f9919061104b565b60405180910390f35b34801561040d575f80fd5b50610416610a96565b604051610423919061107c565b60405180910390f35b61044660048036038101906104419190611373565b610a9c565b005b610462600480360381019061045d9190611373565b610ada565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611373565b610b03565b604051610497919061107c565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b1c565b5b9050919050565b5f600254905090565b60025481565b5f610531610b95565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6105cc610b9f565b905080546003825580156105fe5760018160011c14303b106105f55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060f91906114cc565b905061061a33610bc8565b805f015160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160048190555050801561069e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106f3576106f26113a2565b5b6040519080825280601f01601f1916602001820160405280156107255781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61076f610c9e565b6107785f610cd5565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f6107d6610c9e565b60045460015f8154809291906107eb90611524565b91905055101580610842575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610879576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108d986610d9b565b9150915060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b81526004016109399291906116d9565b5f604051808303815f87803b158015610950575f80fd5b505af1158015610962573d5f803e3d5ffd5b505050506001925050509392505050565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f6004546001541080156109eb575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a8d575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a4c9190611731565b602060405180830381865afa158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611787565b155b90509392505050565b60015481565b610aa4610c9e565b63389a75e1600c52805f526020600c208054421115610aca57636f5e88185f526004601cfd5b5f815550610ad781610cd5565b50565b610ae2610c9e565b8060601b610af757637448fbae5f526004601cfd5b610b0081610cd5565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b8e5750610b8d82610eba565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd0610f33565b15610c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cd3576382b429005f526004601cfd5b565b610cdd610f33565b15610d42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d98565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610dba57610db96113a2565b5b604051908082528060200260200182016040528015610de85781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610e0757610e066113a2565b5b604051908082528060200260200182016040528015610e355781602001602082028036833780820191505090505b50905084825f81518110610e4c57610e4b6117b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9b57610e9a6117b2565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f2c5750610f2b82610f37565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fe581610fb1565b8114610fef575f80fd5b50565b5f8135905061100081610fdc565b92915050565b5f6020828403121561101b5761101a610fa9565b5b5f61102884828501610ff2565b91505092915050565b5f8115159050919050565b61104581611031565b82525050565b5f60208201905061105e5f83018461103c565b92915050565b5f819050919050565b61107681611064565b82525050565b5f60208201905061108f5f83018461106d565b92915050565b61109e81610fb1565b82525050565b5f6020820190506110b75f830184611095565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110e6826110bd565b9050919050565b6110f6816110dc565b82525050565b5f60208201905061110f5f8301846110ed565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261113657611135611115565b5b8235905067ffffffffffffffff81111561115357611152611119565b5b60208301915083600182028301111561116f5761116e61111d565b5b9250929050565b5f806020838503121561118c5761118b610fa9565b5b5f83013567ffffffffffffffff8111156111a9576111a8610fad565b5b6111b585828601611121565b92509250509250929050565b5f6040820190506111d45f83018561106d565b6111e160208301846110ed565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61122a826111e8565b61123481856111f2565b9350611244818560208601611202565b61124d81611210565b840191505092915050565b5f6020820190508181035f8301526112708184611220565b905092915050565b5f819050919050565b5f61129b611296611291846110bd565b611278565b6110bd565b9050919050565b5f6112ac82611281565b9050919050565b5f6112bd826112a2565b9050919050565b6112cd816112b3565b82525050565b5f6020820190506112e65f8301846112c4565b92915050565b6112f5816110dc565b81146112ff575f80fd5b50565b5f81359050611310816112ec565b92915050565b5f805f6040848603121561132d5761132c610fa9565b5b5f61133a86828701611302565b935050602084013567ffffffffffffffff81111561135b5761135a610fad565b5b61136786828701611121565b92509250509250925092565b5f6020828403121561138857611387610fa9565b5b5f61139584828501611302565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113d882611210565b810181811067ffffffffffffffff821117156113f7576113f66113a2565b5b80604052505050565b5f611409610fa0565b905061141582826113cf565b919050565b5f611424826110dc565b9050919050565b6114348161141a565b811461143e575f80fd5b50565b5f8135905061144f8161142b565b92915050565b61145e81611064565b8114611468575f80fd5b50565b5f8135905061147981611455565b92915050565b5f604082840312156114945761149361139e565b5b61149e6040611400565b90505f6114ad84828501611441565b5f8301525060206114c08482850161146b565b60208301525092915050565b5f604082840312156114e1576114e0610fa9565b5b5f6114ee8482850161147f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61152e82611064565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115605761155f6114f7565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61159d816110dc565b82525050565b5f6115ae8383611594565b60208301905092915050565b5f602082019050919050565b5f6115d08261156b565b6115da8185611575565b93506115e583611585565b805f5b838110156116155781516115fc88826115a3565b9750611607836115ba565b9250506001810190506115e8565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61165481611031565b82525050565b5f611665838361164b565b60208301905092915050565b5f602082019050919050565b5f61168782611622565b611691818561162c565b935061169c8361163c565b805f5b838110156116cc5781516116b3888261165a565b97506116be83611671565b92505060018101905061169f565b5085935050505092915050565b5f6040820190508181035f8301526116f181856115c6565b90508181036020830152611705818461167d565b90509392505050565b50565b5f61171c5f836111f2565b91506117278261170e565b5f82019050919050565b5f6040820190506117445f8301846110ed565b818103602083015261175581611711565b905092915050565b61176681611031565b8114611770575f80fd5b50565b5f815190506117818161175d565b92915050565b5f6020828403121561179c5761179b610fa9565b5b5f6117a984828501611773565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212202f2805b0b43803fbc9dd3f411ae04b22f4b0334ed912f80ca9b152bb7696ae2b64736f6c634300081a0033",Mf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190611006565b6104a0565b604051610160919061104b565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a919061107c565b60405180910390f35b34801561019e575f80fd5b506101a7610522565b6040516101b4919061107c565b60405180910390f35b6101c5610528565b005b3480156101d2575f80fd5b506101db610579565b6040516101e891906110a4565b60405180910390f35b3480156101fc575f80fd5b506102056105a0565b60405161021291906110fc565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190611176565b6105c3565b005b34801561024e575f80fd5b5061026960048036038101906102649190611176565b6106a3565b6040516102779291906111c1565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611176565b6106d7565b6040516102b39190611258565b60405180910390f35b6102c461072e565b005b6102ce610767565b005b3480156102db575f80fd5b506102e461077a565b6040516102f191906112d3565b60405180910390f35b348015610305575f80fd5b5061030e61079f565b60405161031b91906110fc565b60405180910390f35b34801561032f575f80fd5b506103386107c7565b604051610345919061107c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190611316565b6107cd565b604051610381919061104b565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611373565b610973565b6040516103bd919061104b565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190611316565b610990565b6040516103f9919061104b565b60405180910390f35b34801561040d575f80fd5b50610416610a96565b604051610423919061107c565b60405180910390f35b61044660048036038101906104419190611373565b610a9c565b005b610462600480360381019061045d9190611373565b610ada565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611373565b610b03565b604051610497919061107c565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b1c565b5b9050919050565b5f600254905090565b60025481565b5f610531610b95565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6105cc610b9f565b905080546003825580156105fe5760018160011c14303b106105f55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060f91906114cc565b905061061a33610bc8565b805f015160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160048190555050801561069e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106f3576106f26113a2565b5b6040519080825280601f01601f1916602001820160405280156107255781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61076f610c9e565b6107785f610cd5565b565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f6107d6610c9e565b60045460015f8154809291906107eb90611524565b91905055101580610842575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610879576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108d986610d9b565b9150915060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b81526004016109399291906116d9565b5f604051808303815f87803b158015610950575f80fd5b505af1158015610962573d5f803e3d5ffd5b505050506001925050509392505050565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f6004546001541080156109eb575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a8d575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a4c9190611731565b602060405180830381865afa158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611787565b155b90509392505050565b60015481565b610aa4610c9e565b63389a75e1600c52805f526020600c208054421115610aca57636f5e88185f526004601cfd5b5f815550610ad781610cd5565b50565b610ae2610c9e565b8060601b610af757637448fbae5f526004601cfd5b610b0081610cd5565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b8e5750610b8d82610eba565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd0610f33565b15610c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0a57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cd3576382b429005f526004601cfd5b565b610cdd610f33565b15610d42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d98565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610dba57610db96113a2565b5b604051908082528060200260200182016040528015610de85781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610e0757610e066113a2565b5b604051908082528060200260200182016040528015610e355781602001602082028036833780820191505090505b50905084825f81518110610e4c57610e4b6117b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9b57610e9a6117b2565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f2c5750610f2b82610f37565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fe581610fb1565b8114610fef575f80fd5b50565b5f8135905061100081610fdc565b92915050565b5f6020828403121561101b5761101a610fa9565b5b5f61102884828501610ff2565b91505092915050565b5f8115159050919050565b61104581611031565b82525050565b5f60208201905061105e5f83018461103c565b92915050565b5f819050919050565b61107681611064565b82525050565b5f60208201905061108f5f83018461106d565b92915050565b61109e81610fb1565b82525050565b5f6020820190506110b75f830184611095565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110e6826110bd565b9050919050565b6110f6816110dc565b82525050565b5f60208201905061110f5f8301846110ed565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261113657611135611115565b5b8235905067ffffffffffffffff81111561115357611152611119565b5b60208301915083600182028301111561116f5761116e61111d565b5b9250929050565b5f806020838503121561118c5761118b610fa9565b5b5f83013567ffffffffffffffff8111156111a9576111a8610fad565b5b6111b585828601611121565b92509250509250929050565b5f6040820190506111d45f83018561106d565b6111e160208301846110ed565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61122a826111e8565b61123481856111f2565b9350611244818560208601611202565b61124d81611210565b840191505092915050565b5f6020820190508181035f8301526112708184611220565b905092915050565b5f819050919050565b5f61129b611296611291846110bd565b611278565b6110bd565b9050919050565b5f6112ac82611281565b9050919050565b5f6112bd826112a2565b9050919050565b6112cd816112b3565b82525050565b5f6020820190506112e65f8301846112c4565b92915050565b6112f5816110dc565b81146112ff575f80fd5b50565b5f81359050611310816112ec565b92915050565b5f805f6040848603121561132d5761132c610fa9565b5b5f61133a86828701611302565b935050602084013567ffffffffffffffff81111561135b5761135a610fad565b5b61136786828701611121565b92509250509250925092565b5f6020828403121561138857611387610fa9565b5b5f61139584828501611302565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113d882611210565b810181811067ffffffffffffffff821117156113f7576113f66113a2565b5b80604052505050565b5f611409610fa0565b905061141582826113cf565b919050565b5f611424826110dc565b9050919050565b6114348161141a565b811461143e575f80fd5b50565b5f8135905061144f8161142b565b92915050565b61145e81611064565b8114611468575f80fd5b50565b5f8135905061147981611455565b92915050565b5f604082840312156114945761149361139e565b5b61149e6040611400565b90505f6114ad84828501611441565b5f8301525060206114c08482850161146b565b60208301525092915050565b5f604082840312156114e1576114e0610fa9565b5b5f6114ee8482850161147f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61152e82611064565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115605761155f6114f7565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61159d816110dc565b82525050565b5f6115ae8383611594565b60208301905092915050565b5f602082019050919050565b5f6115d08261156b565b6115da8185611575565b93506115e583611585565b805f5b838110156116155781516115fc88826115a3565b9750611607836115ba565b9250506001810190506115e8565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61165481611031565b82525050565b5f611665838361164b565b60208301905092915050565b5f602082019050919050565b5f61168782611622565b611691818561162c565b935061169c8361163c565b805f5b838110156116cc5781516116b3888261165a565b97506116be83611671565b92505060018101905061169f565b5085935050505092915050565b5f6040820190508181035f8301526116f181856115c6565b90508181036020830152611705818461167d565b90509392505050565b50565b5f61171c5f836111f2565b91506117278261170e565b5f82019050919050565b5f6040820190506117445f8301846110ed565b818103602083015261175581611711565b905092915050565b61176681611031565b8114611770575f80fd5b50565b5f815190506117818161175d565b92915050565b5f6020828403121561179c5761179b610fa9565b5b5f6117a984828501611773565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212202f2805b0b43803fbc9dd3f411ae04b22f4b0334ed912f80ca9b152bb7696ae2b64736f6c634300081a0033",If={},hf={},W={_format:lf,contractName:mf,sourceName:Tf,abi:wf,bytecode:vf,deployedBytecode:Mf,linkReferences:If,deployedLinkReferences:hf},Af="hh-sol-artifact-1",gf="CGDAIncentive",Of="contracts/incentives/CGDAIncentive.sol",Rf=[{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"}],xf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6127d4806101185f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a2b565b610777565b6040516102249190611a70565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aa1565b60405180910390f35b610271600480360381019061026c9190611ae4565b610898565b005b61028d60048036038101906102889190611b69565b6108a5565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b69565b6108bb565b6040516102c29190611a70565b60405180910390f35b3480156102d6575f80fd5b506102df6108d1565b6040516102ec9190611aa1565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bb6565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bcf565b61094f565b60405161035c9190611aa1565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c09565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611cd8565b61098b565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dab565b610a99565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dab565b610ccb565b604051610413929190611df6565b60405180910390f35b61043660048036038101906104319190611b69565b610e17565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dab565b610e2d565b60405161046b9190611e8d565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b69565b610efd565b6040516104a79190611a70565b60405180910390f35b6104b8610f14565b005b6104c2610f4d565b005b3480156104cf575f80fd5b506104d8610f60565b6040516104e59190611aa1565b60405180910390f35b3480156104f9575f80fd5b50610502610f65565b6040516105129493929190611ead565b60405180910390f35b348015610526575f80fd5b5061052f610f82565b60405161053c9190611c09565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611ef0565b610faa565b6040516105789190611a70565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611fa2565b611193565b005b3480156105b4575f80fd5b506105bd611249565b6040516105ca9190611aa1565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bcf565b61124f565b6040516106069190611a70565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611ef0565b61126c565b6040516106429190611a70565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611fa2565b61127f565b005b34801561067e575f80fd5b50610687611335565b6040516106949190611aa1565b60405180910390f35b3480156106a8575f80fd5b506106b161133b565b6040516106be9190611aa1565b60405180910390f35b6106e160048036038101906106dc9190611bcf565b611340565b005b6106fd60048036038101906106f89190611bcf565b61137e565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bcf565b6113a7565b6040516107329190611a70565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bcf565b6113fa565b60405161076e9190611aa1565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611413565b5b9050919050565b5f8060046002015442610803919061204d565b90505f61084e305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90505f610e10600460010154846108659190612080565b61086f91906120ee565b60046003015461087f919061211e565b905081811161088e5780610890565b815b935050505090565b6108a233826114bf565b50565b6108ad6114ce565b6108b78282611505565b5050565b5f81826108c78561094f565b1614905092915050565b60025481565b5f6108e0611515565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109968161151f565b8282905085859050146109d5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a91575f8484838181106109f6576109f5612151565b5b9050602002016020810190610a0b91906121a8565b90506001151581151503610a5057610a4b878784818110610a2f57610a2e612151565b5b9050602002016020810190610a449190611bcf565b6001611505565b610a83565b610a82878784818110610a6657610a65612151565b5b9050602002016020810190610a7b9190611bcf565b60016114bf565b5b5080806001019150506109d7565b505050505050565b5f610aa2611554565b90508054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae591906122dc565b90505f610b1430835f015173ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90508160800151811015610b6a57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6193929190612307565b60405180910390fd5b5f82602001511480610b7f57505f8260400151145b80610b8d57505f8260600151145b80610b9f575081602001518260800151105b15610bd6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060045f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600881905550610c843361157d565b610c8f336001611653565b50508015610cc6576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cd881611694565b5f8585810190610ce89190612455565b90505f8160200151806020019051810190610d0391906124b0565b9050610d52825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dc493929190612540565b604051602081830303815290604052604051610de09190611e8d565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e1f6114ce565b610e2982826114bf565b5050565b60605f8383810190610e3f91906122dc565b9050604051806080016040528060016002811115610e6057610e5f61257c565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ec391906125d2565b604051602081830303815290604052815250604051602001610ee591906126e8565b60405160208183030381529060405291505092915050565b5f8082610f098561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f556114ce565b610f5e5f611704565b565b600281565b6004805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fb36114ce565b610fbc846117ca565b610ffd57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ff4919061272b565b60405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f81548092919061106490612757565b91905055505f6110726107f0565b90504260046002018190555060045f015481116110935760045f01546110a4565b60045f0154816110a3919061204d565b5b6004600301819055506110f785825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116393929190612540565b60405160208183030381529060405260405161117f9190611e8d565b60405180910390a260019150509392505050565b600261119e8161151f565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff612151565b5b90506020020160208101906112159190611bcf565b85858481811061122857611227612151565b5b90506020020135611505565b80806001019150506111df565b505050505050565b60085481565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f611276846117ca565b90509392505050565b600261128a8161151f565b8282905085859050146112c9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561132d576113208686838181106112ec576112eb612151565b5b90506020020160208101906113019190611bcf565b85858481811061131457611313612151565b5b905060200201356114bf565b80806001019150506112cb565b505050505050565b60015481565b600181565b6113486114ce565b63389a75e1600c52805f526020600c20805442111561136e57636f5e88185f526004601cfd5b5f81555061137b81611704565b50565b6113866114ce565b8060601b61139b57637448fbae5f526004601cfd5b6113a481611704565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113c7610f82565b73ffffffffffffffffffffffffffffffffffffffff1614806113f357506113f2826002600117610efd565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611485575061148482611887565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114ca82825f611900565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611503576382b429005f526004601cfd5b565b61151182826001611900565b5050565b5f6202a300905090565b638b78c6d81954331461155157638b78c6d8600c52335f52806020600c205416611550576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611585611958565b156115fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115bf57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611650565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116b8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166116fb576390b8ec185f526004601cfd5b5f603452505050565b61170c611958565b15611771577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117d46107f0565b90505f8111801561182c575080611829305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b10155b801561187f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f957506118f88261195c565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192257848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a0a816119d6565b8114611a14575f80fd5b50565b5f81359050611a2581611a01565b92915050565b5f60208284031215611a4057611a3f6119ce565b5b5f611a4d84828501611a17565b91505092915050565b5f8115159050919050565b611a6a81611a56565b82525050565b5f602082019050611a835f830184611a61565b92915050565b5f819050919050565b611a9b81611a89565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b611ac381611a89565b8114611acd575f80fd5b50565b5f81359050611ade81611aba565b92915050565b5f60208284031215611af957611af86119ce565b5b5f611b0684828501611ad0565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b3882611b0f565b9050919050565b611b4881611b2e565b8114611b52575f80fd5b50565b5f81359050611b6381611b3f565b92915050565b5f8060408385031215611b7f57611b7e6119ce565b5b5f611b8c85828601611b55565b9250506020611b9d85828601611ad0565b9150509250929050565b611bb0816119d6565b82525050565b5f602082019050611bc95f830184611ba7565b92915050565b5f60208284031215611be457611be36119ce565b5b5f611bf184828501611b55565b91505092915050565b611c0381611b2e565b82525050565b5f602082019050611c1c5f830184611bfa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c4357611c42611c22565b5b8235905067ffffffffffffffff811115611c6057611c5f611c26565b5b602083019150836020820283011115611c7c57611c7b611c2a565b5b9250929050565b5f8083601f840112611c9857611c97611c22565b5b8235905067ffffffffffffffff811115611cb557611cb4611c26565b5b602083019150836020820283011115611cd157611cd0611c2a565b5b9250929050565b5f805f8060408587031215611cf057611cef6119ce565b5b5f85013567ffffffffffffffff811115611d0d57611d0c6119d2565b5b611d1987828801611c2e565b9450945050602085013567ffffffffffffffff811115611d3c57611d3b6119d2565b5b611d4887828801611c83565b925092505092959194509250565b5f8083601f840112611d6b57611d6a611c22565b5b8235905067ffffffffffffffff811115611d8857611d87611c26565b5b602083019150836001820283011115611da457611da3611c2a565b5b9250929050565b5f8060208385031215611dc157611dc06119ce565b5b5f83013567ffffffffffffffff811115611dde57611ddd6119d2565b5b611dea85828601611d56565b92509250509250929050565b5f604082019050611e095f830185611a92565b611e166020830184611bfa565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5f82611e1d565b611e698185611e27565b9350611e79818560208601611e37565b611e8281611e45565b840191505092915050565b5f6020820190508181035f830152611ea58184611e55565b905092915050565b5f608082019050611ec05f830187611a92565b611ecd6020830186611a92565b611eda6040830185611a92565b611ee76060830184611a92565b95945050505050565b5f805f60408486031215611f0757611f066119ce565b5b5f611f1486828701611b55565b935050602084013567ffffffffffffffff811115611f3557611f346119d2565b5b611f4186828701611d56565b92509250509250925092565b5f8083601f840112611f6257611f61611c22565b5b8235905067ffffffffffffffff811115611f7f57611f7e611c26565b5b602083019150836020820283011115611f9b57611f9a611c2a565b5b9250929050565b5f805f8060408587031215611fba57611fb96119ce565b5b5f85013567ffffffffffffffff811115611fd757611fd66119d2565b5b611fe387828801611c2e565b9450945050602085013567ffffffffffffffff811115612006576120056119d2565b5b61201287828801611f4d565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61205782611a89565b915061206283611a89565b925082820390508181111561207a57612079612020565b5b92915050565b5f61208a82611a89565b915061209583611a89565b92508282026120a381611a89565b915082820484148315176120ba576120b9612020565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6120f882611a89565b915061210383611a89565b925082612113576121126120c1565b5b828204905092915050565b5f61212882611a89565b915061213383611a89565b925082820190508082111561214b5761214a612020565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61218781611a56565b8114612191575f80fd5b50565b5f813590506121a28161217e565b92915050565b5f602082840312156121bd576121bc6119ce565b5b5f6121ca84828501612194565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61220d82611e45565b810181811067ffffffffffffffff8211171561222c5761222b6121d7565b5b80604052505050565b5f61223e6119c5565b905061224a8282612204565b919050565b5f80fd5b5f60a08284031215612268576122676121d3565b5b61227260a0612235565b90505f61228184828501611b55565b5f83015250602061229484828501611ad0565b60208301525060406122a884828501611ad0565b60408301525060606122bc84828501611ad0565b60608301525060806122d084828501611ad0565b60808301525092915050565b5f60a082840312156122f1576122f06119ce565b5b5f6122fe84828501612253565b91505092915050565b5f60608201905061231a5f830186611bfa565b6123276020830185611a92565b6123346040830184611a92565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561235a576123596121d7565b5b61236382611e45565b9050602081019050919050565b828183375f83830152505050565b5f61239061238b84612340565b612235565b9050828152602081018484840111156123ac576123ab61233c565b5b6123b7848285612370565b509392505050565b5f82601f8301126123d3576123d2611c22565b5b81356123e384826020860161237e565b91505092915050565b5f60408284031215612401576124006121d3565b5b61240b6040612235565b90505f61241a84828501611b55565b5f83015250602082013567ffffffffffffffff81111561243d5761243c61224f565b5b612449848285016123bf565b60208301525092915050565b5f6020828403121561246a576124696119ce565b5b5f82013567ffffffffffffffff811115612487576124866119d2565b5b612493848285016123ec565b91505092915050565b5f815190506124aa81611aba565b92915050565b5f602082840312156124c5576124c46119ce565b5b5f6124d28482850161249c565b91505092915050565b5f8160601b9050919050565b5f6124f1826124db565b9050919050565b5f612502826124e7565b9050919050565b61251a61251582611b2e565b6124f8565b82525050565b5f819050919050565b61253a61253582611a89565b612520565b82525050565b5f61254b8286612509565b60148201915061255b8285612509565b60148201915061256b8284612529565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125b281611a89565b82525050565b602082015f8201516125cc5f8501826125a9565b50505050565b5f6020820190506125e55f8301846125b8565b92915050565b600381106125fc576125fb61257c565b5b50565b5f81905061260c826125eb565b919050565b5f61261b826125ff565b9050919050565b61262b81612611565b82525050565b61263a81611b2e565b82525050565b5f82825260208201905092915050565b5f61265a82611e1d565b6126648185612640565b9350612674818560208601611e37565b61267d81611e45565b840191505092915050565b5f608083015f83015161269d5f860182612622565b5060208301516126b06020860182612631565b5060408301516126c36040860182612631565b50606083015184820360608601526126db8282612650565b9150508091505092915050565b5f6020820190508181035f8301526127008184612688565b905092915050565b50565b5f6127165f83611e27565b915061272182612708565b5f82019050919050565b5f60408201905061273e5f830184611bfa565b818103602083015261274f8161270b565b905092915050565b5f61276182611a89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279357612792612020565b5b60018201905091905056fea2646970667358221220903fc9978a0aa916e717631ddb8ac946ec1dedc5c2a6df2f4428bf244478aeda64736f6c634300081a0033",Cf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a2b565b610777565b6040516102249190611a70565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611aa1565b60405180910390f35b610271600480360381019061026c9190611ae4565b610898565b005b61028d60048036038101906102889190611b69565b6108a5565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611b69565b6108bb565b6040516102c29190611a70565b60405180910390f35b3480156102d6575f80fd5b506102df6108d1565b6040516102ec9190611aa1565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611bb6565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611bcf565b61094f565b60405161035c9190611aa1565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c09565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611cd8565b61098b565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dab565b610a99565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dab565b610ccb565b604051610413929190611df6565b60405180910390f35b61043660048036038101906104319190611b69565b610e17565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dab565b610e2d565b60405161046b9190611e8d565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611b69565b610efd565b6040516104a79190611a70565b60405180910390f35b6104b8610f14565b005b6104c2610f4d565b005b3480156104cf575f80fd5b506104d8610f60565b6040516104e59190611aa1565b60405180910390f35b3480156104f9575f80fd5b50610502610f65565b6040516105129493929190611ead565b60405180910390f35b348015610526575f80fd5b5061052f610f82565b60405161053c9190611c09565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611ef0565b610faa565b6040516105789190611a70565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611fa2565b611193565b005b3480156105b4575f80fd5b506105bd611249565b6040516105ca9190611aa1565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611bcf565b61124f565b6040516106069190611a70565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611ef0565b61126c565b6040516106429190611a70565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611fa2565b61127f565b005b34801561067e575f80fd5b50610687611335565b6040516106949190611aa1565b60405180910390f35b3480156106a8575f80fd5b506106b161133b565b6040516106be9190611aa1565b60405180910390f35b6106e160048036038101906106dc9190611bcf565b611340565b005b6106fd60048036038101906106f89190611bcf565b61137e565b005b34801561070a575f80fd5b5061072560048036038101906107209190611bcf565b6113a7565b6040516107329190611a70565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611bcf565b6113fa565b60405161076e9190611aa1565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611413565b5b9050919050565b5f8060046002015442610803919061204d565b90505f61084e305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90505f610e10600460010154846108659190612080565b61086f91906120ee565b60046003015461087f919061211e565b905081811161088e5780610890565b815b935050505090565b6108a233826114bf565b50565b6108ad6114ce565b6108b78282611505565b5050565b5f81826108c78561094f565b1614905092915050565b60025481565b5f6108e0611515565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109968161151f565b8282905085859050146109d5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a91575f8484838181106109f6576109f5612151565b5b9050602002016020810190610a0b91906121a8565b90506001151581151503610a5057610a4b878784818110610a2f57610a2e612151565b5b9050602002016020810190610a449190611bcf565b6001611505565b610a83565b610a82878784818110610a6657610a65612151565b5b9050602002016020810190610a7b9190611bcf565b60016114bf565b5b5080806001019150506109d7565b505050505050565b5f610aa2611554565b90508054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae591906122dc565b90505f610b1430835f015173ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b90508160800151811015610b6a57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b6193929190612307565b60405180910390fd5b5f82602001511480610b7f57505f8260400151145b80610b8d57505f8260600151145b80610b9f575081602001518260800151105b15610bd6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060045f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600881905550610c843361157d565b610c8f336001611653565b50508015610cc6576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cd881611694565b5f8585810190610ce89190612455565b90505f8160200151806020019051810190610d0391906124b0565b9050610d52825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610dc493929190612540565b604051602081830303815290604052604051610de09190611e8d565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e1f6114ce565b610e2982826114bf565b5050565b60605f8383810190610e3f91906122dc565b9050604051806080016040528060016002811115610e6057610e5f61257c565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610ec391906125d2565b604051602081830303815290604052815250604051602001610ee591906126e8565b60405160208183030381529060405291505092915050565b5f8082610f098561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f556114ce565b610f5e5f611704565b565b600281565b6004805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f610fb36114ce565b610fbc846117ca565b610ffd57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610ff4919061272b565b60405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f81548092919061106490612757565b91905055505f6110726107f0565b90504260046002018190555060045f015481116110935760045f01546110a4565b60045f0154816110a3919061204d565b5b6004600301819055506110f785825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116bb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878460405160200161116393929190612540565b60405160208183030381529060405260405161117f9190611e8d565b60405180910390a260019150509392505050565b600261119e8161151f565b8282905085859050146111dd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561124157611234868683818110611200576111ff612151565b5b90506020020160208101906112159190611bcf565b85858481811061122857611227612151565b5b90506020020135611505565b80806001019150506111df565b505050505050565b60085481565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f611276846117ca565b90509392505050565b600261128a8161151f565b8282905085859050146112c9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561132d576113208686838181106112ec576112eb612151565b5b90506020020160208101906113019190611bcf565b85858481811061131457611313612151565b5b905060200201356114bf565b80806001019150506112cb565b505050505050565b60015481565b600181565b6113486114ce565b63389a75e1600c52805f526020600c20805442111561136e57636f5e88185f526004601cfd5b5f81555061137b81611704565b50565b6113866114ce565b8060601b61139b57637448fbae5f526004601cfd5b6113a481611704565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166113c7610f82565b73ffffffffffffffffffffffffffffffffffffffff1614806113f357506113f2826002600117610efd565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611485575061148482611887565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114ca82825f611900565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611503576382b429005f526004601cfd5b565b61151182826001611900565b5050565b5f6202a300905090565b638b78c6d81954331461155157638b78c6d8600c52335f52806020600c205416611550576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611585611958565b156115fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156115bf57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611650565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166116b8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166116fb576390b8ec185f526004601cfd5b5f603452505050565b61170c611958565b15611771577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506117c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806117d46107f0565b90505f8111801561182c575080611829305f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661148c90919063ffffffff16565b10155b801561187f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f957506118f88261195c565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361192257848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a0a816119d6565b8114611a14575f80fd5b50565b5f81359050611a2581611a01565b92915050565b5f60208284031215611a4057611a3f6119ce565b5b5f611a4d84828501611a17565b91505092915050565b5f8115159050919050565b611a6a81611a56565b82525050565b5f602082019050611a835f830184611a61565b92915050565b5f819050919050565b611a9b81611a89565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b611ac381611a89565b8114611acd575f80fd5b50565b5f81359050611ade81611aba565b92915050565b5f60208284031215611af957611af86119ce565b5b5f611b0684828501611ad0565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b3882611b0f565b9050919050565b611b4881611b2e565b8114611b52575f80fd5b50565b5f81359050611b6381611b3f565b92915050565b5f8060408385031215611b7f57611b7e6119ce565b5b5f611b8c85828601611b55565b9250506020611b9d85828601611ad0565b9150509250929050565b611bb0816119d6565b82525050565b5f602082019050611bc95f830184611ba7565b92915050565b5f60208284031215611be457611be36119ce565b5b5f611bf184828501611b55565b91505092915050565b611c0381611b2e565b82525050565b5f602082019050611c1c5f830184611bfa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c4357611c42611c22565b5b8235905067ffffffffffffffff811115611c6057611c5f611c26565b5b602083019150836020820283011115611c7c57611c7b611c2a565b5b9250929050565b5f8083601f840112611c9857611c97611c22565b5b8235905067ffffffffffffffff811115611cb557611cb4611c26565b5b602083019150836020820283011115611cd157611cd0611c2a565b5b9250929050565b5f805f8060408587031215611cf057611cef6119ce565b5b5f85013567ffffffffffffffff811115611d0d57611d0c6119d2565b5b611d1987828801611c2e565b9450945050602085013567ffffffffffffffff811115611d3c57611d3b6119d2565b5b611d4887828801611c83565b925092505092959194509250565b5f8083601f840112611d6b57611d6a611c22565b5b8235905067ffffffffffffffff811115611d8857611d87611c26565b5b602083019150836001820283011115611da457611da3611c2a565b5b9250929050565b5f8060208385031215611dc157611dc06119ce565b5b5f83013567ffffffffffffffff811115611dde57611ddd6119d2565b5b611dea85828601611d56565b92509250509250929050565b5f604082019050611e095f830185611a92565b611e166020830184611bfa565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5f82611e1d565b611e698185611e27565b9350611e79818560208601611e37565b611e8281611e45565b840191505092915050565b5f6020820190508181035f830152611ea58184611e55565b905092915050565b5f608082019050611ec05f830187611a92565b611ecd6020830186611a92565b611eda6040830185611a92565b611ee76060830184611a92565b95945050505050565b5f805f60408486031215611f0757611f066119ce565b5b5f611f1486828701611b55565b935050602084013567ffffffffffffffff811115611f3557611f346119d2565b5b611f4186828701611d56565b92509250509250925092565b5f8083601f840112611f6257611f61611c22565b5b8235905067ffffffffffffffff811115611f7f57611f7e611c26565b5b602083019150836020820283011115611f9b57611f9a611c2a565b5b9250929050565b5f805f8060408587031215611fba57611fb96119ce565b5b5f85013567ffffffffffffffff811115611fd757611fd66119d2565b5b611fe387828801611c2e565b9450945050602085013567ffffffffffffffff811115612006576120056119d2565b5b61201287828801611f4d565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61205782611a89565b915061206283611a89565b925082820390508181111561207a57612079612020565b5b92915050565b5f61208a82611a89565b915061209583611a89565b92508282026120a381611a89565b915082820484148315176120ba576120b9612020565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6120f882611a89565b915061210383611a89565b925082612113576121126120c1565b5b828204905092915050565b5f61212882611a89565b915061213383611a89565b925082820190508082111561214b5761214a612020565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61218781611a56565b8114612191575f80fd5b50565b5f813590506121a28161217e565b92915050565b5f602082840312156121bd576121bc6119ce565b5b5f6121ca84828501612194565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61220d82611e45565b810181811067ffffffffffffffff8211171561222c5761222b6121d7565b5b80604052505050565b5f61223e6119c5565b905061224a8282612204565b919050565b5f80fd5b5f60a08284031215612268576122676121d3565b5b61227260a0612235565b90505f61228184828501611b55565b5f83015250602061229484828501611ad0565b60208301525060406122a884828501611ad0565b60408301525060606122bc84828501611ad0565b60608301525060806122d084828501611ad0565b60808301525092915050565b5f60a082840312156122f1576122f06119ce565b5b5f6122fe84828501612253565b91505092915050565b5f60608201905061231a5f830186611bfa565b6123276020830185611a92565b6123346040830184611a92565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561235a576123596121d7565b5b61236382611e45565b9050602081019050919050565b828183375f83830152505050565b5f61239061238b84612340565b612235565b9050828152602081018484840111156123ac576123ab61233c565b5b6123b7848285612370565b509392505050565b5f82601f8301126123d3576123d2611c22565b5b81356123e384826020860161237e565b91505092915050565b5f60408284031215612401576124006121d3565b5b61240b6040612235565b90505f61241a84828501611b55565b5f83015250602082013567ffffffffffffffff81111561243d5761243c61224f565b5b612449848285016123bf565b60208301525092915050565b5f6020828403121561246a576124696119ce565b5b5f82013567ffffffffffffffff811115612487576124866119d2565b5b612493848285016123ec565b91505092915050565b5f815190506124aa81611aba565b92915050565b5f602082840312156124c5576124c46119ce565b5b5f6124d28482850161249c565b91505092915050565b5f8160601b9050919050565b5f6124f1826124db565b9050919050565b5f612502826124e7565b9050919050565b61251a61251582611b2e565b6124f8565b82525050565b5f819050919050565b61253a61253582611a89565b612520565b82525050565b5f61254b8286612509565b60148201915061255b8285612509565b60148201915061256b8284612529565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6125b281611a89565b82525050565b602082015f8201516125cc5f8501826125a9565b50505050565b5f6020820190506125e55f8301846125b8565b92915050565b600381106125fc576125fb61257c565b5b50565b5f81905061260c826125eb565b919050565b5f61261b826125ff565b9050919050565b61262b81612611565b82525050565b61263a81611b2e565b82525050565b5f82825260208201905092915050565b5f61265a82611e1d565b6126648185612640565b9350612674818560208601611e37565b61267d81611e45565b840191505092915050565b5f608083015f83015161269d5f860182612622565b5060208301516126b06020860182612631565b5060408301516126c36040860182612631565b50606083015184820360608601526126db8282612650565b9150508091505092915050565b5f6020820190508181035f8301526127008184612688565b905092915050565b50565b5f6127165f83611e27565b915061272182612708565b5f82019050919050565b5f60408201905061273e5f830184611bfa565b818103602083015261274f8161270b565b905092915050565b5f61276182611a89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361279357612792612020565b5b60018201905091905056fea2646970667358221220903fc9978a0aa916e717631ddb8ac946ec1dedc5c2a6df2f4428bf244478aeda64736f6c634300081a0033",_f={},zf={},Y={_format:Af,contractName:gf,sourceName:Of,abi:Rf,bytecode:xf,deployedBytecode:Cf,linkReferences:_f,deployedLinkReferences:zf},Nf="hh-sol-artifact-1",Ef="ERC20Incentive",$f="contracts/incentives/ERC20Incentive.sol",Lf=[{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"}],kf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612ca2806101185f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e51565b6107dc565b60405161023a9190611e96565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ec7565b60405180910390f35b61028760048036038101906102829190611f0a565b61085e565b005b6102a3600480360381019061029e9190611f8f565b61086b565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f8f565b610881565b6040516102d89190611e96565b60405180910390f35b3480156102ec575f80fd5b506102f5610897565b005b348015610302575f80fd5b5061030b610a63565b6040516103189190611ec7565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fdc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ff5565b610ae1565b6040516103889190611ec7565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061202f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc91906120fe565b610b1d565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d1565b610c2b565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d1565b610e6b565b60405161043f92919061221c565b60405180910390f35b610462600480360381019061045d9190611f8f565b611105565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d1565b61111b565b60405161049791906122b3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f8f565b611239565b6040516104d39190611e96565b60405180910390f35b6104e4611250565b005b6104ee611289565b005b3480156104fb575f80fd5b5061050461129c565b6040516105119190611ec7565b60405180910390f35b348015610525575f80fd5b5061052e6112a1565b60405161053b919061202f565b60405180910390f35b34801561054f575f80fd5b506105586112c9565b6040516105659190611ec7565b60405180910390f35b348015610579575f80fd5b506105826112cf565b60405161058f9190612346565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0a565b6112e1565b6040516105cb919061202f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f5919061235f565b61131c565b6040516106079190611e96565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612411565b61160b565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ff5565b6116c1565b60405161066b9190611e96565b60405180910390f35b34801561067f575f80fd5b5061069a6004803603810190610695919061235f565b6116de565b6040516106a79190611e96565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612411565b6116f1565b005b3480156106e3575f80fd5b506106ec6117a7565b6040516106f99190611ec7565b60405180910390f35b34801561070d575f80fd5b506107166117ad565b6040516107239190611ec7565b60405180910390f35b61074660048036038101906107419190611ff5565b6117b2565b005b610762600480360381019061075d9190611ff5565b6117f0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ff5565b611819565b6040516107979190611e96565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ff5565b61186c565b6040516107d39190611ec7565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d82611885565b5b9050919050565b5f600254905090565b61086833826118fe565b50565b61087361190d565b61087d8282611944565b5050565b5f818261088d85610ae1565b1614905092915050565b60016108a281611954565b6001808111156108b5576108b46122d3565b5b60045f9054906101000a900460ff1660018111156108d6576108d56122d3565b5b1461090d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092591906124bc565b81525090505f6006808054905061093b8461197b565b610945919061251c565b815481106109565761095561254c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc816002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600254604051602001610a3a939291906125de565b604051602081830303815290604052604051610a5691906122b3565b60405180910390a2505050565b60025481565b5f610a726119d3565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b28816119dd565b828290508585905014610b67576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c23575f848483818110610b8857610b8761254c565b5b9050602002016020810190610b9d9190612644565b90506001151581151503610be257610bdd878784818110610bc157610bc061254c565b5b9050602002016020810190610bd69190611ff5565b6001611944565b610c15565b610c14878784818110610bf857610bf761254c565b5b9050602002016020810190610c0d9190611ff5565b60016118fe565b5b508080600101915050610b69565b505050505050565b5f610c34611a12565b90508054600382558015610c665760018160011c14303b10610c5d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c77919061279b565b90505f81604001511480610c8e57505f8160600151145b15610cc5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cd957610cd86122d3565b5b82602001516001811115610cf057610cef6122d3565b5b03610cff578160400151610d14565b81606001518260400151610d1391906127c6565b5b90505f610d4330845f015173ffffffffffffffffffffffffffffffffffffffff16611a3b90919063ffffffff16565b905081811015610d9157825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8893929190612807565b60405180910390fd5b825f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160045f6101000a81548160ff02191690836001811115610dfb57610dfa6122d3565b5b021790555082604001516002819055508260600151600581905550610e1f33611a6e565b610e2e83608001516001611b44565b5050508015610e66576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e7561190d565b5f8484810190610e859190612955565b90505f8160200151806020019051810190610ea091906129b0565b9050600180811115610eb557610eb46122d3565b5b60045f9054906101000a900460ff166001811115610ed657610ed56122d3565b5b03610f5c5760025481141580610eed57505f600154115b15610f50573382604051602001610f049190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f47929190612a8c565b60405180910390fd5b5f600581905550610ff4565b5f60025482610f6b919061251c565b14610fce573382604051602001610f829190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a8c565b60405180910390fd5b60025481610fdc9190612aba565b60055f828254610fec9190612aea565b925050819055505b611041825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b3939291906125de565b6040516020818303038152906040526040516110cf91906122b3565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b61110d61190d565b61111782826118fe565b5050565b60605f838381019061112d919061279b565b90505f600180811115611143576111426122d3565b5b8260200151600181111561115a576111596122d3565b5b0361116957816040015161117e565b8160600151826040015161117d91906127c6565b5b905060405180608001604052806001600281111561119f5761119e6122d3565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016111fe9190612b46565b6040516020818303038152906040528152506040516020016112209190612c05565b6040516020818303038152906040529250505092915050565b5f808261124585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61129161190d565b61129a5f611b85565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b600681815481106112f0575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132561190d565b61132e84611c4b565b611364576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001811115611377576113766122d3565b5b60045f9054906101000a900460ff166001811115611398576113976122d3565b5b036114f05760015f8154809291906113af90612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611455846002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002546040516020016114c3939291906125de565b6040516020818303038152906040526040516114df91906122b3565b60405180910390a260019050611604565b60015f81548092919061150290612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600684908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b6002611616816119dd565b828290508585905014611655576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116b9576116ac8686838181106116785761167761254c565b5b905060200201602081019061168d9190611ff5565b8585848181106116a05761169f61254c565b5b90506020020135611944565b8080600101915050611657565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6116e884611c4b565b90509392505050565b60026116fc816119dd565b82829050858590501461173b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561179f5761179286868381811061175e5761175d61254c565b5b90506020020160208101906117739190611ff5565b8585848181106117865761178561254c565b5b905060200201356118fe565b808060010191505061173d565b505050505050565b60015481565b600181565b6117ba61190d565b63389a75e1600c52805f526020600c2080544211156117e057636f5e88185f526004601cfd5b5f8155506117ed81611b85565b50565b6117f861190d565b8060601b61180d57637448fbae5f526004601cfd5b61181681611b85565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118396112a1565b73ffffffffffffffffffffffffffffffffffffffff1614806118655750611864826002600117611239565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f757506118f682611cad565b5b9050919050565b61190982825f611d26565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611942576382b429005f526004601cfd5b565b61195082826001611d26565b5050565b638b78c6d8600c52335f52806020600c205416611978576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119ca576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a0f57638b78c6d8600c52335f52806020600c205416611a0e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a76611d7e565b15611aee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b41565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b8d611d7e565b15611bf2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c48565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca65750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d1f5750611d1e82611d82565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3081611dfc565b8114611e3a575f80fd5b50565b5f81359050611e4b81611e27565b92915050565b5f60208284031215611e6657611e65611df4565b5b5f611e7384828501611e3d565b91505092915050565b5f8115159050919050565b611e9081611e7c565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f819050919050565b611ec181611eaf565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b611ee981611eaf565b8114611ef3575f80fd5b50565b5f81359050611f0481611ee0565b92915050565b5f60208284031215611f1f57611f1e611df4565b5b5f611f2c84828501611ef6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5e82611f35565b9050919050565b611f6e81611f54565b8114611f78575f80fd5b50565b5f81359050611f8981611f65565b92915050565b5f8060408385031215611fa557611fa4611df4565b5b5f611fb285828601611f7b565b9250506020611fc385828601611ef6565b9150509250929050565b611fd681611dfc565b82525050565b5f602082019050611fef5f830184611fcd565b92915050565b5f6020828403121561200a57612009611df4565b5b5f61201784828501611f7b565b91505092915050565b61202981611f54565b82525050565b5f6020820190506120425f830184612020565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206957612068612048565b5b8235905067ffffffffffffffff8111156120865761208561204c565b5b6020830191508360208202830111156120a2576120a1612050565b5b9250929050565b5f8083601f8401126120be576120bd612048565b5b8235905067ffffffffffffffff8111156120db576120da61204c565b5b6020830191508360208202830111156120f7576120f6612050565b5b9250929050565b5f805f806040858703121561211657612115611df4565b5b5f85013567ffffffffffffffff81111561213357612132611df8565b5b61213f87828801612054565b9450945050602085013567ffffffffffffffff81111561216257612161611df8565b5b61216e878288016120a9565b925092505092959194509250565b5f8083601f84011261219157612190612048565b5b8235905067ffffffffffffffff8111156121ae576121ad61204c565b5b6020830191508360018202830111156121ca576121c9612050565b5b9250929050565b5f80602083850312156121e7576121e6611df4565b5b5f83013567ffffffffffffffff81111561220457612203611df8565b5b6122108582860161217c565b92509250509250929050565b5f60408201905061222f5f830185611eb8565b61223c6020830184612020565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228582612243565b61228f818561224d565b935061229f81856020860161225d565b6122a88161226b565b840191505092915050565b5f6020820190508181035f8301526122cb818461227b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612311576123106122d3565b5b50565b5f81905061232182612300565b919050565b5f61233082612314565b9050919050565b61234081612326565b82525050565b5f6020820190506123595f830184612337565b92915050565b5f805f6040848603121561237657612375611df4565b5b5f61238386828701611f7b565b935050602084013567ffffffffffffffff8111156123a4576123a3611df8565b5b6123b08682870161217c565b92509250509250925092565b5f8083601f8401126123d1576123d0612048565b5b8235905067ffffffffffffffff8111156123ee576123ed61204c565b5b60208301915083602082028301111561240a57612409612050565b5b9250929050565b5f805f806040858703121561242957612428611df4565b5b5f85013567ffffffffffffffff81111561244657612445611df8565b5b61245287828801612054565b9450945050602085013567ffffffffffffffff81111561247557612474611df8565b5b612481878288016123bc565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124c682611eaf565b91506124d183611eaf565b92508282019050808211156124e9576124e861248f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252682611eaf565b915061253183611eaf565b925082612541576125406124ef565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f61258f82612579565b9050919050565b5f6125a082612585565b9050919050565b6125b86125b382611f54565b612596565b82525050565b5f819050919050565b6125d86125d382611eaf565b6125be565b82525050565b5f6125e982866125a7565b6014820191506125f982856125a7565b60148201915061260982846125c7565b602082019150819050949350505050565b61262381611e7c565b811461262d575f80fd5b50565b5f8135905061263e8161261a565b92915050565b5f6020828403121561265957612658611df4565b5b5f61266684828501612630565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126a98261226b565b810181811067ffffffffffffffff821117156126c8576126c7612673565b5b80604052505050565b5f6126da611deb565b90506126e682826126a0565b919050565b5f80fd5b600281106126fb575f80fd5b50565b5f8135905061270c816126ef565b92915050565b5f60a082840312156127275761272661266f565b5b61273160a06126d1565b90505f61274084828501611f7b565b5f830152506020612753848285016126fe565b602083015250604061276784828501611ef6565b604083015250606061277b84828501611ef6565b606083015250608061278f84828501611f7b565b60808301525092915050565b5f60a082840312156127b0576127af611df4565b5b5f6127bd84828501612712565b91505092915050565b5f6127d082611eaf565b91506127db83611eaf565b92508282026127e981611eaf565b91508282048414831517612800576127ff61248f565b5b5092915050565b5f60608201905061281a5f830186612020565b6128276020830185611eb8565b6128346040830184611eb8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285a57612859612673565b5b6128638261226b565b9050602081019050919050565b828183375f83830152505050565b5f61289061288b84612840565b6126d1565b9050828152602081018484840111156128ac576128ab61283c565b5b6128b7848285612870565b509392505050565b5f82601f8301126128d3576128d2612048565b5b81356128e384826020860161287e565b91505092915050565b5f604082840312156129015761290061266f565b5b61290b60406126d1565b90505f61291a84828501611f7b565b5f83015250602082013567ffffffffffffffff81111561293d5761293c6126eb565b5b612949848285016128bf565b60208301525092915050565b5f6020828403121561296a57612969611df4565b5b5f82013567ffffffffffffffff81111561298757612986611df8565b5b612993848285016128ec565b91505092915050565b5f815190506129aa81611ee0565b92915050565b5f602082840312156129c5576129c4611df4565b5b5f6129d28482850161299c565b91505092915050565b6129e481611f54565b82525050565b5f82825260208201905092915050565b5f612a0482612243565b612a0e81856129ea565b9350612a1e81856020860161225d565b612a278161226b565b840191505092915050565b5f604083015f830151612a475f8601826129db565b5060208301518482036020860152612a5f82826129fa565b9150508091505092915050565b5f6020820190508181035f830152612a848184612a32565b905092915050565b5f604082019050612a9f5f830185612020565b8181036020830152612ab1818461227b565b90509392505050565b5f612ac482611eaf565b9150612acf83611eaf565b925082612adf57612ade6124ef565b5b828204905092915050565b5f612af482611eaf565b9150612aff83611eaf565b9250828203905081811115612b1757612b1661248f565b5b92915050565b612b2681611eaf565b82525050565b602082015f820151612b405f850182612b1d565b50505050565b5f602082019050612b595f830184612b2c565b92915050565b60038110612b7057612b6f6122d3565b5b50565b5f819050612b8082612b5f565b919050565b5f612b8f82612b73565b9050919050565b612b9f81612b85565b82525050565b5f608083015f830151612bba5f860182612b96565b506020830151612bcd60208601826129db565b506040830151612be060408601826129db565b5060608301518482036060860152612bf882826129fa565b9150508091505092915050565b5f6020820190508181035f830152612c1d8184612ba5565b905092915050565b5f612c2f82611eaf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6157612c6061248f565b5b60018201905091905056fea2646970667358221220410c1d04820fa5550ff3aa75a902850d36cca567632e555158b82f613e89f94864736f6c634300081a0033",Hf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611e51565b6107dc565b60405161023a9190611e96565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611ec7565b60405180910390f35b61028760048036038101906102829190611f0a565b61085e565b005b6102a3600480360381019061029e9190611f8f565b61086b565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611f8f565b610881565b6040516102d89190611e96565b60405180910390f35b3480156102ec575f80fd5b506102f5610897565b005b348015610302575f80fd5b5061030b610a63565b6040516103189190611ec7565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190611fdc565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ff5565b610ae1565b6040516103889190611ec7565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061202f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc91906120fe565b610b1d565b005b3480156103ee575f80fd5b50610409600480360381019061040491906121d1565b610c2b565b005b348015610416575f80fd5b50610431600480360381019061042c91906121d1565b610e6b565b60405161043f92919061221c565b60405180910390f35b610462600480360381019061045d9190611f8f565b611105565b005b34801561046f575f80fd5b5061048a600480360381019061048591906121d1565b61111b565b60405161049791906122b3565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611f8f565b611239565b6040516104d39190611e96565b60405180910390f35b6104e4611250565b005b6104ee611289565b005b3480156104fb575f80fd5b5061050461129c565b6040516105119190611ec7565b60405180910390f35b348015610525575f80fd5b5061052e6112a1565b60405161053b919061202f565b60405180910390f35b34801561054f575f80fd5b506105586112c9565b6040516105659190611ec7565b60405180910390f35b348015610579575f80fd5b506105826112cf565b60405161058f9190612346565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f0a565b6112e1565b6040516105cb919061202f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f5919061235f565b61131c565b6040516106079190611e96565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612411565b61160b565b005b348015610643575f80fd5b5061065e60048036038101906106599190611ff5565b6116c1565b60405161066b9190611e96565b60405180910390f35b34801561067f575f80fd5b5061069a6004803603810190610695919061235f565b6116de565b6040516106a79190611e96565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612411565b6116f1565b005b3480156106e3575f80fd5b506106ec6117a7565b6040516106f99190611ec7565b60405180910390f35b34801561070d575f80fd5b506107166117ad565b6040516107239190611ec7565b60405180910390f35b61074660048036038101906107419190611ff5565b6117b2565b005b610762600480360381019061075d9190611ff5565b6117f0565b005b34801561076f575f80fd5b5061078a60048036038101906107859190611ff5565b611819565b6040516107979190611e96565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190611ff5565b61186c565b6040516107d39190611ec7565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d82611885565b5b9050919050565b5f600254905090565b61086833826118fe565b50565b61087361190d565b61087d8282611944565b5050565b5f818261088d85610ae1565b1614905092915050565b60016108a281611954565b6001808111156108b5576108b46122d3565b5b60045f9054906101000a900460ff1660018111156108d6576108d56122d3565b5b1461090d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060200160405280424461092591906124bc565b81525090505f6006808054905061093b8461197b565b610945919061251c565b815481106109565761095561254c565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc816002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600254604051602001610a3a939291906125de565b604051602081830303815290604052604051610a5691906122b3565b60405180910390a2505050565b60025481565b5f610a726119d3565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b28816119dd565b828290508585905014610b67576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c23575f848483818110610b8857610b8761254c565b5b9050602002016020810190610b9d9190612644565b90506001151581151503610be257610bdd878784818110610bc157610bc061254c565b5b9050602002016020810190610bd69190611ff5565b6001611944565b610c15565b610c14878784818110610bf857610bf761254c565b5b9050602002016020810190610c0d9190611ff5565b60016118fe565b5b508080600101915050610b69565b505050505050565b5f610c34611a12565b90508054600382558015610c665760018160011c14303b10610c5d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c77919061279b565b90505f81604001511480610c8e57505f8160600151145b15610cc5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cd957610cd86122d3565b5b82602001516001811115610cf057610cef6122d3565b5b03610cff578160400151610d14565b81606001518260400151610d1391906127c6565b5b90505f610d4330845f015173ffffffffffffffffffffffffffffffffffffffff16611a3b90919063ffffffff16565b905081811015610d9157825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8893929190612807565b60405180910390fd5b825f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160045f6101000a81548160ff02191690836001811115610dfb57610dfa6122d3565b5b021790555082604001516002819055508260600151600581905550610e1f33611a6e565b610e2e83608001516001611b44565b5050508015610e66576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610e7561190d565b5f8484810190610e859190612955565b90505f8160200151806020019051810190610ea091906129b0565b9050600180811115610eb557610eb46122d3565b5b60045f9054906101000a900460ff166001811115610ed657610ed56122d3565b5b03610f5c5760025481141580610eed57505f600154115b15610f50573382604051602001610f049190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f47929190612a8c565b60405180910390fd5b5f600581905550610ff4565b5f60025482610f6b919061251c565b14610fce573382604051602001610f829190612a6c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fc5929190612a8c565b60405180910390fd5b60025481610fdc9190612aba565b60055f828254610fec9190612aea565b925050819055505b611041825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016110b3939291906125de565b6040516020818303038152906040526040516110cf91906122b3565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b61110d61190d565b61111782826118fe565b5050565b60605f838381019061112d919061279b565b90505f600180811115611143576111426122d3565b5b8260200151600181111561115a576111596122d3565b5b0361116957816040015161117e565b8160600151826040015161117d91906127c6565b5b905060405180608001604052806001600281111561119f5761119e6122d3565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280848152506040516020016111fe9190612b46565b6040516020818303038152906040528152506040516020016112209190612c05565b6040516020818303038152906040529250505092915050565b5f808261124585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61129161190d565b61129a5f611b85565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b600681815481106112f0575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61132561190d565b61132e84611c4b565b611364576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001811115611377576113766122d3565b5b60045f9054906101000a900460ff166001811115611398576113976122d3565b5b036114f05760015f8154809291906113af90612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611455846002545f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661198a9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866002546040516020016114c3939291906125de565b6040516020818303038152906040526040516114df91906122b3565b60405180910390a260019050611604565b60015f81548092919061150290612c25565b9190505550600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600684908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b6002611616816119dd565b828290508585905014611655576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116b9576116ac8686838181106116785761167761254c565b5b905060200201602081019061168d9190611ff5565b8585848181106116a05761169f61254c565b5b90506020020135611944565b8080600101915050611657565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6116e884611c4b565b90509392505050565b60026116fc816119dd565b82829050858590501461173b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561179f5761179286868381811061175e5761175d61254c565b5b90506020020160208101906117739190611ff5565b8585848181106117865761178561254c565b5b905060200201356118fe565b808060010191505061173d565b505050505050565b60015481565b600181565b6117ba61190d565b63389a75e1600c52805f526020600c2080544211156117e057636f5e88185f526004601cfd5b5f8155506117ed81611b85565b50565b6117f861190d565b8060601b61180d57637448fbae5f526004601cfd5b61181681611b85565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118396112a1565b73ffffffffffffffffffffffffffffffffffffffff1614806118655750611864826002600117611239565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118f757506118f682611cad565b5b9050919050565b61190982825f611d26565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611942576382b429005f526004601cfd5b565b61195082826001611d26565b5050565b638b78c6d8600c52335f52806020600c205416611978576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166119ca576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a0f57638b78c6d8600c52335f52806020600c205416611a0e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611a76611d7e565b15611aee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611ab057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611b41565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611b8d611d7e565b15611bf2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611c48565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ca65750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d1f5750611d1e82611d82565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611d4857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e3081611dfc565b8114611e3a575f80fd5b50565b5f81359050611e4b81611e27565b92915050565b5f60208284031215611e6657611e65611df4565b5b5f611e7384828501611e3d565b91505092915050565b5f8115159050919050565b611e9081611e7c565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f819050919050565b611ec181611eaf565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b611ee981611eaf565b8114611ef3575f80fd5b50565b5f81359050611f0481611ee0565b92915050565b5f60208284031215611f1f57611f1e611df4565b5b5f611f2c84828501611ef6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5e82611f35565b9050919050565b611f6e81611f54565b8114611f78575f80fd5b50565b5f81359050611f8981611f65565b92915050565b5f8060408385031215611fa557611fa4611df4565b5b5f611fb285828601611f7b565b9250506020611fc385828601611ef6565b9150509250929050565b611fd681611dfc565b82525050565b5f602082019050611fef5f830184611fcd565b92915050565b5f6020828403121561200a57612009611df4565b5b5f61201784828501611f7b565b91505092915050565b61202981611f54565b82525050565b5f6020820190506120425f830184612020565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261206957612068612048565b5b8235905067ffffffffffffffff8111156120865761208561204c565b5b6020830191508360208202830111156120a2576120a1612050565b5b9250929050565b5f8083601f8401126120be576120bd612048565b5b8235905067ffffffffffffffff8111156120db576120da61204c565b5b6020830191508360208202830111156120f7576120f6612050565b5b9250929050565b5f805f806040858703121561211657612115611df4565b5b5f85013567ffffffffffffffff81111561213357612132611df8565b5b61213f87828801612054565b9450945050602085013567ffffffffffffffff81111561216257612161611df8565b5b61216e878288016120a9565b925092505092959194509250565b5f8083601f84011261219157612190612048565b5b8235905067ffffffffffffffff8111156121ae576121ad61204c565b5b6020830191508360018202830111156121ca576121c9612050565b5b9250929050565b5f80602083850312156121e7576121e6611df4565b5b5f83013567ffffffffffffffff81111561220457612203611df8565b5b6122108582860161217c565b92509250509250929050565b5f60408201905061222f5f830185611eb8565b61223c6020830184612020565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61228582612243565b61228f818561224d565b935061229f81856020860161225d565b6122a88161226b565b840191505092915050565b5f6020820190508181035f8301526122cb818461227b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612311576123106122d3565b5b50565b5f81905061232182612300565b919050565b5f61233082612314565b9050919050565b61234081612326565b82525050565b5f6020820190506123595f830184612337565b92915050565b5f805f6040848603121561237657612375611df4565b5b5f61238386828701611f7b565b935050602084013567ffffffffffffffff8111156123a4576123a3611df8565b5b6123b08682870161217c565b92509250509250925092565b5f8083601f8401126123d1576123d0612048565b5b8235905067ffffffffffffffff8111156123ee576123ed61204c565b5b60208301915083602082028301111561240a57612409612050565b5b9250929050565b5f805f806040858703121561242957612428611df4565b5b5f85013567ffffffffffffffff81111561244657612445611df8565b5b61245287828801612054565b9450945050602085013567ffffffffffffffff81111561247557612474611df8565b5b612481878288016123bc565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6124c682611eaf565b91506124d183611eaf565b92508282019050808211156124e9576124e861248f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61252682611eaf565b915061253183611eaf565b925082612541576125406124ef565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f61258f82612579565b9050919050565b5f6125a082612585565b9050919050565b6125b86125b382611f54565b612596565b82525050565b5f819050919050565b6125d86125d382611eaf565b6125be565b82525050565b5f6125e982866125a7565b6014820191506125f982856125a7565b60148201915061260982846125c7565b602082019150819050949350505050565b61262381611e7c565b811461262d575f80fd5b50565b5f8135905061263e8161261a565b92915050565b5f6020828403121561265957612658611df4565b5b5f61266684828501612630565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126a98261226b565b810181811067ffffffffffffffff821117156126c8576126c7612673565b5b80604052505050565b5f6126da611deb565b90506126e682826126a0565b919050565b5f80fd5b600281106126fb575f80fd5b50565b5f8135905061270c816126ef565b92915050565b5f60a082840312156127275761272661266f565b5b61273160a06126d1565b90505f61274084828501611f7b565b5f830152506020612753848285016126fe565b602083015250604061276784828501611ef6565b604083015250606061277b84828501611ef6565b606083015250608061278f84828501611f7b565b60808301525092915050565b5f60a082840312156127b0576127af611df4565b5b5f6127bd84828501612712565b91505092915050565b5f6127d082611eaf565b91506127db83611eaf565b92508282026127e981611eaf565b91508282048414831517612800576127ff61248f565b5b5092915050565b5f60608201905061281a5f830186612020565b6128276020830185611eb8565b6128346040830184611eb8565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561285a57612859612673565b5b6128638261226b565b9050602081019050919050565b828183375f83830152505050565b5f61289061288b84612840565b6126d1565b9050828152602081018484840111156128ac576128ab61283c565b5b6128b7848285612870565b509392505050565b5f82601f8301126128d3576128d2612048565b5b81356128e384826020860161287e565b91505092915050565b5f604082840312156129015761290061266f565b5b61290b60406126d1565b90505f61291a84828501611f7b565b5f83015250602082013567ffffffffffffffff81111561293d5761293c6126eb565b5b612949848285016128bf565b60208301525092915050565b5f6020828403121561296a57612969611df4565b5b5f82013567ffffffffffffffff81111561298757612986611df8565b5b612993848285016128ec565b91505092915050565b5f815190506129aa81611ee0565b92915050565b5f602082840312156129c5576129c4611df4565b5b5f6129d28482850161299c565b91505092915050565b6129e481611f54565b82525050565b5f82825260208201905092915050565b5f612a0482612243565b612a0e81856129ea565b9350612a1e81856020860161225d565b612a278161226b565b840191505092915050565b5f604083015f830151612a475f8601826129db565b5060208301518482036020860152612a5f82826129fa565b9150508091505092915050565b5f6020820190508181035f830152612a848184612a32565b905092915050565b5f604082019050612a9f5f830185612020565b8181036020830152612ab1818461227b565b90509392505050565b5f612ac482611eaf565b9150612acf83611eaf565b925082612adf57612ade6124ef565b5b828204905092915050565b5f612af482611eaf565b9150612aff83611eaf565b9250828203905081811115612b1757612b1661248f565b5b92915050565b612b2681611eaf565b82525050565b602082015f820151612b405f850182612b1d565b50505050565b5f602082019050612b595f830184612b2c565b92915050565b60038110612b7057612b6f6122d3565b5b50565b5f819050612b8082612b5f565b919050565b5f612b8f82612b73565b9050919050565b612b9f81612b85565b82525050565b5f608083015f830151612bba5f860182612b96565b506020830151612bcd60208601826129db565b506040830151612be060408601826129db565b5060608301518482036060860152612bf882826129fa565b9150508091505092915050565b5f6020820190508181035f830152612c1d8184612ba5565b905092915050565b5f612c2f82611eaf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6157612c6061248f565b5b60018201905091905056fea2646970667358221220410c1d04820fa5550ff3aa75a902850d36cca567632e555158b82f613e89f94864736f6c634300081a0033",Df={},Bf={},J={_format:Nf,contractName:Ef,sourceName:$f,abi:Lf,bytecode:kf,deployedBytecode:Hf,linkReferences:Df,deployedLinkReferences:Bf},Sf="hh-sol-artifact-1",Vf="ERC20VariableCriteriaIncentive",qf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Uf=[{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"}],Ff="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612ca2806101185f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c38565b61084b565b6040516102509190611c7d565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cae565b60405180910390f35b61029d60048036038101906102989190611cf1565b6108cd565b005b6102b960048036038101906102b49190611d76565b6108da565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d76565b6108f0565b6040516102ee9190611c7d565b60405180910390f35b348015610302575f80fd5b5061030b610906565b6040516103189190611cae565b60405180910390f35b61032961090c565b005b348015610336575f80fd5b5061033f61095d565b60405161034c9190611dc3565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ddc565b610984565b6040516103889190611cae565b60405180910390f35b34801561039c575f80fd5b506103a561099d565b6040516103b29190611e16565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611ee5565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fb8565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fb8565b610d48565b60405161043f929190612003565b60405180910390f35b610462600480360381019061045d9190611d76565b610eac565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fb8565b610ec2565b604051610497919061209a565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d76565b610f90565b6040516104d39190611c7d565b60405180910390f35b6104e4610fa7565b005b3480156104f1575f80fd5b506104fa610fe0565b6040516105079190611cae565b60405180910390f35b610518610fe6565b005b348015610525575f80fd5b5061052e610ff9565b60405161053b9190611cae565b60405180910390f35b34801561054f575f80fd5b50610558610ffe565b6040516105689493929190612160565b60405180910390f35b34801561057c575f80fd5b50610585611053565b6040516105929190611e16565b60405180910390f35b3480156105a6575f80fd5b506105af61107b565b6040516105bc9190611cae565b60405180910390f35b3480156105d0575f80fd5b506105d9611081565b6040516105e69190612232565b60405180910390f35b3480156105fa575f80fd5b506106156004803603810190610610919061224b565b611150565b6040516106229190611c7d565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906122fd565b61137a565b005b34801561065e575f80fd5b50610667611430565b6040516106749190611cae565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611ddc565b611439565b6040516106b09190611c7d565b60405180910390f35b3480156106c4575f80fd5b506106cd611456565b6040516106da9190611cae565b60405180910390f35b3480156106ee575f80fd5b506107096004803603810190610704919061224b565b61145c565b6040516107169190611c7d565b60405180910390f35b34801561072a575f80fd5b50610745600480360381019061074091906122fd565b61146f565b005b348015610752575f80fd5b5061075b611525565b6040516107689190611cae565b60405180910390f35b34801561077c575f80fd5b5061078561152b565b6040516107929190611cae565b60405180910390f35b6107b560048036038101906107b09190611ddc565b611530565b005b6107d160048036038101906107cc9190611ddc565b61156e565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611ddc565b611597565b6040516108069190611c7d565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611ddc565b6115ea565b6040516108429190611cae565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611603565b5b9050919050565b5f600254905090565b6108d7338261167c565b50565b6108e261168b565b6108ec82826116c2565b5050565b5f81826108fc85610984565b1614905092915050565b60025481565b5f6109156116d2565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116dc565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a61237b565b5b9050602002016020810190610a4091906123d2565b90506001151581151503610a8557610a80878784818110610a6457610a6361237b565b5b9050602002016020810190610a799190611ddc565b60016116c2565b610ab8565b610ab7878784818110610a9b57610a9a61237b565b5b9050602002016020810190610ab09190611ddc565b600161167c565b5b508080600101915050610a0c565b505050505050565b5f610ad7611711565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125f3565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661173a90919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061261f565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460028190555083600481905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120ba565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc3361176d565b610d07336001611843565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d5581611884565b5f8585810190610d65919061276d565b90505f8160200151806020019051810190610d8091906127c8565b90508060045f828254610d939190612820565b92505081905550610de7825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e59939291906128b8565b604051602081830303815290604052604051610e75919061209a565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eb461168b565b610ebe828261167c565b5050565b60605f808484810190610ed5919061292f565b9250509150604051806080016040528060016002811115610ef957610ef86120ba565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5591906129a8565b604051602081830303815290604052815250604051602001610f779190612aaf565b6040516020818303038152906040529250505092915050565b5f8082610f9c85610984565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610fee61168b565b610ff75f6118f4565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b611089611b80565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110b9576110b86120ba565b5b60018111156110cb576110ca6120ba565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115961168b565b5f83838101906111699190612b54565b90505f816020015180602001905181019061118491906127c8565b90505f611190876119ba565b6111c6576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600254036111d7578190506111fb565b670de0b6b3a7640000826002546111ee9190612b9b565b6111f89190612c09565b90505b5f6006541415801561120e575060065481115b156112195760065490505b6004548160055461122a9190612c39565b1115611262576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112739190612c39565b925050819055506001805f82825461128b9190612c39565b925050819055506112dc87825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611348939291906128b8565b604051602081830303815290604052604051611364919061209a565b60405180910390a2600193505050509392505050565b6002611385816116dc565b8282905085859050146113c4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156114285761141b8686838181106113e7576113e661237b565b5b90506020020160208101906113fc9190611ddc565b85858481811061140f5761140e61237b565b5b905060200201356116c2565b80806001019150506113c6565b505050505050565b5f600654905090565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611466846119ba565b90509392505050565b600261147a816116dc565b8282905085859050146114b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561151d576115108686838181106114dc576114db61237b565b5b90506020020160208101906114f19190611ddc565b8585848181106115045761150361237b565b5b9050602002013561167c565b80806001019150506114bb565b505050505050565b60015481565b600181565b61153861168b565b63389a75e1600c52805f526020600c20805442111561155e57636f5e88185f526004601cfd5b5f81555061156b816118f4565b50565b61157661168b565b8060601b61158b57637448fbae5f526004601cfd5b611594816118f4565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115b7611053565b73ffffffffffffffffffffffffffffffffffffffff1614806115e357506115e2826002600117610f90565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116755750611674826119c9565b5b9050919050565b61168782825f611a42565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c0576382b429005f526004601cfd5b565b6116ce82826001611a42565b5050565b5f6202a300905090565b638b78c6d81954331461170e57638b78c6d8600c52335f52806020600c20541661170d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611775611a9a565b156117ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611840565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118a8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118eb576390b8ec185f526004601cfd5b5f603452505050565b6118fc611a9a565b15611961577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3b5750611a3a82611a9e565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b105750611b0f82611b17565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611b9e57611b9d6120ba565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c1781611be3565b8114611c21575f80fd5b50565b5f81359050611c3281611c0e565b92915050565b5f60208284031215611c4d57611c4c611bdb565b5b5f611c5a84828501611c24565b91505092915050565b5f8115159050919050565b611c7781611c63565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f819050919050565b611ca881611c96565b82525050565b5f602082019050611cc15f830184611c9f565b92915050565b611cd081611c96565b8114611cda575f80fd5b50565b5f81359050611ceb81611cc7565b92915050565b5f60208284031215611d0657611d05611bdb565b5b5f611d1384828501611cdd565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4582611d1c565b9050919050565b611d5581611d3b565b8114611d5f575f80fd5b50565b5f81359050611d7081611d4c565b92915050565b5f8060408385031215611d8c57611d8b611bdb565b5b5f611d9985828601611d62565b9250506020611daa85828601611cdd565b9150509250929050565b611dbd81611be3565b82525050565b5f602082019050611dd65f830184611db4565b92915050565b5f60208284031215611df157611df0611bdb565b5b5f611dfe84828501611d62565b91505092915050565b611e1081611d3b565b82525050565b5f602082019050611e295f830184611e07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5057611e4f611e2f565b5b8235905067ffffffffffffffff811115611e6d57611e6c611e33565b5b602083019150836020820283011115611e8957611e88611e37565b5b9250929050565b5f8083601f840112611ea557611ea4611e2f565b5b8235905067ffffffffffffffff811115611ec257611ec1611e33565b5b602083019150836020820283011115611ede57611edd611e37565b5b9250929050565b5f805f8060408587031215611efd57611efc611bdb565b5b5f85013567ffffffffffffffff811115611f1a57611f19611bdf565b5b611f2687828801611e3b565b9450945050602085013567ffffffffffffffff811115611f4957611f48611bdf565b5b611f5587828801611e90565b925092505092959194509250565b5f8083601f840112611f7857611f77611e2f565b5b8235905067ffffffffffffffff811115611f9557611f94611e33565b5b602083019150836001820283011115611fb157611fb0611e37565b5b9250929050565b5f8060208385031215611fce57611fcd611bdb565b5b5f83013567ffffffffffffffff811115611feb57611fea611bdf565b5b611ff785828601611f63565b92509250509250929050565b5f6040820190506120165f830185611c9f565b6120236020830184611e07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206c8261202a565b6120768185612034565b9350612086818560208601612044565b61208f81612052565b840191505092915050565b5f6020820190508181035f8301526120b28184612062565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106120f8576120f76120ba565b5b50565b5f819050612108826120e7565b919050565b5f612117826120fb565b9050919050565b6121278161210d565b82525050565b5f819050919050565b61213f8161212d565b82525050565b5f60ff82169050919050565b61215a81612145565b82525050565b5f6080820190506121735f83018761211e565b6121806020830186612136565b61218d6040830185612151565b61219a6060830184611e07565b95945050505050565b6121ac8161210d565b82525050565b6121bb8161212d565b82525050565b6121ca81612145565b82525050565b6121d981611d3b565b82525050565b608082015f8201516121f35f8501826121a3565b50602082015161220660208501826121b2565b50604082015161221960408501826121c1565b50606082015161222c60608501826121d0565b50505050565b5f6080820190506122455f8301846121df565b92915050565b5f805f6040848603121561226257612261611bdb565b5b5f61226f86828701611d62565b935050602084013567ffffffffffffffff8111156122905761228f611bdf565b5b61229c86828701611f63565b92509250509250925092565b5f8083601f8401126122bd576122bc611e2f565b5b8235905067ffffffffffffffff8111156122da576122d9611e33565b5b6020830191508360208202830111156122f6576122f5611e37565b5b9250929050565b5f805f806040858703121561231557612314611bdb565b5b5f85013567ffffffffffffffff81111561233257612331611bdf565b5b61233e87828801611e3b565b9450945050602085013567ffffffffffffffff81111561236157612360611bdf565b5b61236d878288016122a8565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123b181611c63565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f602082840312156123e7576123e6611bdb565b5b5f6123f4848285016123be565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61243782612052565b810181811067ffffffffffffffff8211171561245657612455612401565b5b80604052505050565b5f612468611bd2565b9050612474828261242e565b919050565b5f80fd5b60028110612489575f80fd5b50565b5f8135905061249a8161247d565b92915050565b6124a98161212d565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b6124d381612145565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f60808284031215612509576125086123fd565b5b612513608061245f565b90505f6125228482850161248c565b5f830152506020612535848285016124b6565b6020830152506040612549848285016124e0565b604083015250606061255d84828501611d62565b60608301525092915050565b5f610100828403121561257f5761257e6123fd565b5b61258960a061245f565b90505f61259884828501611d62565b5f8301525060206125ab84828501611cdd565b60208301525060406125bf84828501611cdd565b60408301525060606125d384828501611cdd565b60608301525060806125e7848285016124f4565b60808301525092915050565b5f610100828403121561260957612608611bdb565b5b5f61261684828501612569565b91505092915050565b5f6060820190506126325f830186611e07565b61263f6020830185611c9f565b61264c6040830184611c9f565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267257612671612401565b5b61267b82612052565b9050602081019050919050565b828183375f83830152505050565b5f6126a86126a384612658565b61245f565b9050828152602081018484840111156126c4576126c3612654565b5b6126cf848285612688565b509392505050565b5f82601f8301126126eb576126ea611e2f565b5b81356126fb848260208601612696565b91505092915050565b5f60408284031215612719576127186123fd565b5b612723604061245f565b90505f61273284828501611d62565b5f83015250602082013567ffffffffffffffff81111561275557612754612479565b5b612761848285016126d7565b60208301525092915050565b5f6020828403121561278257612781611bdb565b5b5f82013567ffffffffffffffff81111561279f5761279e611bdf565b5b6127ab84828501612704565b91505092915050565b5f815190506127c281611cc7565b92915050565b5f602082840312156127dd576127dc611bdb565b5b5f6127ea848285016127b4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61282a82611c96565b915061283583611c96565b925082820390508181111561284d5761284c6127f3565b5b92915050565b5f8160601b9050919050565b5f61286982612853565b9050919050565b5f61287a8261285f565b9050919050565b61289261288d82611d3b565b612870565b82525050565b5f819050919050565b6128b26128ad82611c96565b612898565b82525050565b5f6128c38286612881565b6014820191506128d38285612881565b6014820191506128e382846128a1565b602082019150819050949350505050565b5f6128fe82611d1c565b9050919050565b61290e816128f4565b8114612918575f80fd5b50565b5f8135905061292981612905565b92915050565b5f805f6060848603121561294657612945611bdb565b5b5f6129538682870161291b565b935050602061296486828701611cdd565b925050604061297586828701611cdd565b9150509250925092565b61298881611c96565b82525050565b602082015f8201516129a25f85018261297f565b50505050565b5f6020820190506129bb5f83018461298e565b92915050565b600381106129d2576129d16120ba565b5b50565b5f8190506129e2826129c1565b919050565b5f6129f1826129d5565b9050919050565b612a01816129e7565b82525050565b5f82825260208201905092915050565b5f612a218261202a565b612a2b8185612a07565b9350612a3b818560208601612044565b612a4481612052565b840191505092915050565b5f608083015f830151612a645f8601826129f8565b506020830151612a7760208601826121d0565b506040830151612a8a60408601826121d0565b5060608301518482036060860152612aa28282612a17565b9150508091505092915050565b5f6020820190508181035f830152612ac78184612a4f565b905092915050565b5f60408284031215612ae457612ae36123fd565b5b612aee604061245f565b90505f82013567ffffffffffffffff811115612b0d57612b0c612479565b5b612b19848285016126d7565b5f83015250602082013567ffffffffffffffff811115612b3c57612b3b612479565b5b612b48848285016126d7565b60208301525092915050565b5f60208284031215612b6957612b68611bdb565b5b5f82013567ffffffffffffffff811115612b8657612b85611bdf565b5b612b9284828501612acf565b91505092915050565b5f612ba582611c96565b9150612bb083611c96565b9250828202612bbe81611c96565b91508282048414831517612bd557612bd46127f3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1382611c96565b9150612c1e83611c96565b925082612c2e57612c2d612bdc565b5b828204905092915050565b5f612c4382611c96565b9150612c4e83611c96565b9250828201905080821115612c6657612c656127f3565b5b9291505056fea26469706673582212209c47e7904d457f54d04df161fc92cb1b6758da1c7f38c6f8ac60698daab25b7264736f6c634300081a0033",Gf="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c38565b61084b565b6040516102509190611c7d565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611cae565b60405180910390f35b61029d60048036038101906102989190611cf1565b6108cd565b005b6102b960048036038101906102b49190611d76565b6108da565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611d76565b6108f0565b6040516102ee9190611c7d565b60405180910390f35b348015610302575f80fd5b5061030b610906565b6040516103189190611cae565b60405180910390f35b61032961090c565b005b348015610336575f80fd5b5061033f61095d565b60405161034c9190611dc3565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611ddc565b610984565b6040516103889190611cae565b60405180910390f35b34801561039c575f80fd5b506103a561099d565b6040516103b29190611e16565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611ee5565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fb8565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fb8565b610d48565b60405161043f929190612003565b60405180910390f35b610462600480360381019061045d9190611d76565b610eac565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fb8565b610ec2565b604051610497919061209a565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611d76565b610f90565b6040516104d39190611c7d565b60405180910390f35b6104e4610fa7565b005b3480156104f1575f80fd5b506104fa610fe0565b6040516105079190611cae565b60405180910390f35b610518610fe6565b005b348015610525575f80fd5b5061052e610ff9565b60405161053b9190611cae565b60405180910390f35b34801561054f575f80fd5b50610558610ffe565b6040516105689493929190612160565b60405180910390f35b34801561057c575f80fd5b50610585611053565b6040516105929190611e16565b60405180910390f35b3480156105a6575f80fd5b506105af61107b565b6040516105bc9190611cae565b60405180910390f35b3480156105d0575f80fd5b506105d9611081565b6040516105e69190612232565b60405180910390f35b3480156105fa575f80fd5b506106156004803603810190610610919061224b565b611150565b6040516106229190611c7d565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906122fd565b61137a565b005b34801561065e575f80fd5b50610667611430565b6040516106749190611cae565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611ddc565b611439565b6040516106b09190611c7d565b60405180910390f35b3480156106c4575f80fd5b506106cd611456565b6040516106da9190611cae565b60405180910390f35b3480156106ee575f80fd5b506107096004803603810190610704919061224b565b61145c565b6040516107169190611c7d565b60405180910390f35b34801561072a575f80fd5b50610745600480360381019061074091906122fd565b61146f565b005b348015610752575f80fd5b5061075b611525565b6040516107689190611cae565b60405180910390f35b34801561077c575f80fd5b5061078561152b565b6040516107929190611cae565b60405180910390f35b6107b560048036038101906107b09190611ddc565b611530565b005b6107d160048036038101906107cc9190611ddc565b61156e565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611ddc565b611597565b6040516108069190611c7d565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611ddc565b6115ea565b6040516108429190611cae565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611603565b5b9050919050565b5f600254905090565b6108d7338261167c565b50565b6108e261168b565b6108ec82826116c2565b5050565b5f81826108fc85610984565b1614905092915050565b60025481565b5f6109156116d2565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb816116dc565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a61237b565b5b9050602002016020810190610a4091906123d2565b90506001151581151503610a8557610a80878784818110610a6457610a6361237b565b5b9050602002016020810190610a799190611ddc565b60016116c2565b610ab8565b610ab7878784818110610a9b57610a9a61237b565b5b9050602002016020810190610ab09190611ddc565b600161167c565b5b508080600101915050610a0c565b505050505050565b5f610ad7611711565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a91906125f3565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661173a90919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061261f565b60405180910390fd5b855f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460028190555083600481905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120ba565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc3361176d565b610d07336001611843565b505050505050508015610d43576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d5581611884565b5f8585810190610d65919061276d565b90505f8160200151806020019051810190610d8091906127c8565b90508060045f828254610d939190612820565b92505081905550610de7825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e59939291906128b8565b604051602081830303815290604052604051610e75919061209a565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610eb461168b565b610ebe828261167c565b5050565b60605f808484810190610ed5919061292f565b9250509150604051806080016040528060016002811115610ef957610ef86120ba565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f5591906129a8565b604051602081830303815290604052815250604051602001610f779190612aaf565b6040516020818303038152906040529250505092915050565b5f8082610f9c85610984565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b610fee61168b565b610ff75f6118f4565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b611089611b80565b60076040518060800160405290815f82015f9054906101000a900460ff1660018111156110b9576110b86120ba565b5b60018111156110cb576110ca6120ba565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f61115961168b565b5f83838101906111699190612b54565b90505f816020015180602001905181019061118491906127c8565b90505f611190876119ba565b6111c6576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600254036111d7578190506111fb565b670de0b6b3a7640000826002546111ee9190612b9b565b6111f89190612c09565b90505b5f6006541415801561120e575060065481115b156112195760065490505b6004548160055461122a9190612c39565b1115611262576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112739190612c39565b925050819055506001805f82825461128b9190612c39565b925050819055506112dc87825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118ab9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168984604051602001611348939291906128b8565b604051602081830303815290604052604051611364919061209a565b60405180910390a2600193505050509392505050565b6002611385816116dc565b8282905085859050146113c4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156114285761141b8686838181106113e7576113e661237b565b5b90506020020160208101906113fc9190611ddc565b85858481811061140f5761140e61237b565b5b905060200201356116c2565b80806001019150506113c6565b505050505050565b5f600654905090565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611466846119ba565b90509392505050565b600261147a816116dc565b8282905085859050146114b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561151d576115108686838181106114dc576114db61237b565b5b90506020020160208101906114f19190611ddc565b8585848181106115045761150361237b565b5b9050602002013561167c565b80806001019150506114bb565b505050505050565b60015481565b600181565b61153861168b565b63389a75e1600c52805f526020600c20805442111561155e57636f5e88185f526004601cfd5b5f81555061156b816118f4565b50565b61157661168b565b8060601b61158b57637448fbae5f526004601cfd5b611594816118f4565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166115b7611053565b73ffffffffffffffffffffffffffffffffffffffff1614806115e357506115e2826002600117610f90565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116755750611674826119c9565b5b9050919050565b61168782825f611a42565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146116c0576382b429005f526004601cfd5b565b6116ce82826001611a42565b5050565b5f6202a300905090565b638b78c6d81954331461170e57638b78c6d8600c52335f52806020600c20541661170d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611775611a9a565b156117ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156117af57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611840565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166118a8576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166118eb576390b8ec185f526004601cfd5b5f603452505050565b6118fc611a9a565b15611961577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3b5750611a3a82611a9e565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a6457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b105750611b0f82611b17565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611b9e57611b9d6120ba565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c1781611be3565b8114611c21575f80fd5b50565b5f81359050611c3281611c0e565b92915050565b5f60208284031215611c4d57611c4c611bdb565b5b5f611c5a84828501611c24565b91505092915050565b5f8115159050919050565b611c7781611c63565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f819050919050565b611ca881611c96565b82525050565b5f602082019050611cc15f830184611c9f565b92915050565b611cd081611c96565b8114611cda575f80fd5b50565b5f81359050611ceb81611cc7565b92915050565b5f60208284031215611d0657611d05611bdb565b5b5f611d1384828501611cdd565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d4582611d1c565b9050919050565b611d5581611d3b565b8114611d5f575f80fd5b50565b5f81359050611d7081611d4c565b92915050565b5f8060408385031215611d8c57611d8b611bdb565b5b5f611d9985828601611d62565b9250506020611daa85828601611cdd565b9150509250929050565b611dbd81611be3565b82525050565b5f602082019050611dd65f830184611db4565b92915050565b5f60208284031215611df157611df0611bdb565b5b5f611dfe84828501611d62565b91505092915050565b611e1081611d3b565b82525050565b5f602082019050611e295f830184611e07565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e5057611e4f611e2f565b5b8235905067ffffffffffffffff811115611e6d57611e6c611e33565b5b602083019150836020820283011115611e8957611e88611e37565b5b9250929050565b5f8083601f840112611ea557611ea4611e2f565b5b8235905067ffffffffffffffff811115611ec257611ec1611e33565b5b602083019150836020820283011115611ede57611edd611e37565b5b9250929050565b5f805f8060408587031215611efd57611efc611bdb565b5b5f85013567ffffffffffffffff811115611f1a57611f19611bdf565b5b611f2687828801611e3b565b9450945050602085013567ffffffffffffffff811115611f4957611f48611bdf565b5b611f5587828801611e90565b925092505092959194509250565b5f8083601f840112611f7857611f77611e2f565b5b8235905067ffffffffffffffff811115611f9557611f94611e33565b5b602083019150836001820283011115611fb157611fb0611e37565b5b9250929050565b5f8060208385031215611fce57611fcd611bdb565b5b5f83013567ffffffffffffffff811115611feb57611fea611bdf565b5b611ff785828601611f63565b92509250509250929050565b5f6040820190506120165f830185611c9f565b6120236020830184611e07565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206c8261202a565b6120768185612034565b9350612086818560208601612044565b61208f81612052565b840191505092915050565b5f6020820190508181035f8301526120b28184612062565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106120f8576120f76120ba565b5b50565b5f819050612108826120e7565b919050565b5f612117826120fb565b9050919050565b6121278161210d565b82525050565b5f819050919050565b61213f8161212d565b82525050565b5f60ff82169050919050565b61215a81612145565b82525050565b5f6080820190506121735f83018761211e565b6121806020830186612136565b61218d6040830185612151565b61219a6060830184611e07565b95945050505050565b6121ac8161210d565b82525050565b6121bb8161212d565b82525050565b6121ca81612145565b82525050565b6121d981611d3b565b82525050565b608082015f8201516121f35f8501826121a3565b50602082015161220660208501826121b2565b50604082015161221960408501826121c1565b50606082015161222c60608501826121d0565b50505050565b5f6080820190506122455f8301846121df565b92915050565b5f805f6040848603121561226257612261611bdb565b5b5f61226f86828701611d62565b935050602084013567ffffffffffffffff8111156122905761228f611bdf565b5b61229c86828701611f63565b92509250509250925092565b5f8083601f8401126122bd576122bc611e2f565b5b8235905067ffffffffffffffff8111156122da576122d9611e33565b5b6020830191508360208202830111156122f6576122f5611e37565b5b9250929050565b5f805f806040858703121561231557612314611bdb565b5b5f85013567ffffffffffffffff81111561233257612331611bdf565b5b61233e87828801611e3b565b9450945050602085013567ffffffffffffffff81111561236157612360611bdf565b5b61236d878288016122a8565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123b181611c63565b81146123bb575f80fd5b50565b5f813590506123cc816123a8565b92915050565b5f602082840312156123e7576123e6611bdb565b5b5f6123f4848285016123be565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61243782612052565b810181811067ffffffffffffffff8211171561245657612455612401565b5b80604052505050565b5f612468611bd2565b9050612474828261242e565b919050565b5f80fd5b60028110612489575f80fd5b50565b5f8135905061249a8161247d565b92915050565b6124a98161212d565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b6124d381612145565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f60808284031215612509576125086123fd565b5b612513608061245f565b90505f6125228482850161248c565b5f830152506020612535848285016124b6565b6020830152506040612549848285016124e0565b604083015250606061255d84828501611d62565b60608301525092915050565b5f610100828403121561257f5761257e6123fd565b5b61258960a061245f565b90505f61259884828501611d62565b5f8301525060206125ab84828501611cdd565b60208301525060406125bf84828501611cdd565b60408301525060606125d384828501611cdd565b60608301525060806125e7848285016124f4565b60808301525092915050565b5f610100828403121561260957612608611bdb565b5b5f61261684828501612569565b91505092915050565b5f6060820190506126325f830186611e07565b61263f6020830185611c9f565b61264c6040830184611c9f565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561267257612671612401565b5b61267b82612052565b9050602081019050919050565b828183375f83830152505050565b5f6126a86126a384612658565b61245f565b9050828152602081018484840111156126c4576126c3612654565b5b6126cf848285612688565b509392505050565b5f82601f8301126126eb576126ea611e2f565b5b81356126fb848260208601612696565b91505092915050565b5f60408284031215612719576127186123fd565b5b612723604061245f565b90505f61273284828501611d62565b5f83015250602082013567ffffffffffffffff81111561275557612754612479565b5b612761848285016126d7565b60208301525092915050565b5f6020828403121561278257612781611bdb565b5b5f82013567ffffffffffffffff81111561279f5761279e611bdf565b5b6127ab84828501612704565b91505092915050565b5f815190506127c281611cc7565b92915050565b5f602082840312156127dd576127dc611bdb565b5b5f6127ea848285016127b4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61282a82611c96565b915061283583611c96565b925082820390508181111561284d5761284c6127f3565b5b92915050565b5f8160601b9050919050565b5f61286982612853565b9050919050565b5f61287a8261285f565b9050919050565b61289261288d82611d3b565b612870565b82525050565b5f819050919050565b6128b26128ad82611c96565b612898565b82525050565b5f6128c38286612881565b6014820191506128d38285612881565b6014820191506128e382846128a1565b602082019150819050949350505050565b5f6128fe82611d1c565b9050919050565b61290e816128f4565b8114612918575f80fd5b50565b5f8135905061292981612905565b92915050565b5f805f6060848603121561294657612945611bdb565b5b5f6129538682870161291b565b935050602061296486828701611cdd565b925050604061297586828701611cdd565b9150509250925092565b61298881611c96565b82525050565b602082015f8201516129a25f85018261297f565b50505050565b5f6020820190506129bb5f83018461298e565b92915050565b600381106129d2576129d16120ba565b5b50565b5f8190506129e2826129c1565b919050565b5f6129f1826129d5565b9050919050565b612a01816129e7565b82525050565b5f82825260208201905092915050565b5f612a218261202a565b612a2b8185612a07565b9350612a3b818560208601612044565b612a4481612052565b840191505092915050565b5f608083015f830151612a645f8601826129f8565b506020830151612a7760208601826121d0565b506040830151612a8a60408601826121d0565b5060608301518482036060860152612aa28282612a17565b9150508091505092915050565b5f6020820190508181035f830152612ac78184612a4f565b905092915050565b5f60408284031215612ae457612ae36123fd565b5b612aee604061245f565b90505f82013567ffffffffffffffff811115612b0d57612b0c612479565b5b612b19848285016126d7565b5f83015250602082013567ffffffffffffffff811115612b3c57612b3b612479565b5b612b48848285016126d7565b60208301525092915050565b5f60208284031215612b6957612b68611bdb565b5b5f82013567ffffffffffffffff811115612b8657612b85611bdf565b5b612b9284828501612acf565b91505092915050565b5f612ba582611c96565b9150612bb083611c96565b9250828202612bbe81611c96565b91508282048414831517612bd557612bd46127f3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c1382611c96565b9150612c1e83611c96565b925082612c2e57612c2d612bdc565b5b828204905092915050565b5f612c4382611c96565b9150612c4e83611c96565b9250828201905080821115612c6657612c656127f3565b5b9291505056fea26469706673582212209c47e7904d457f54d04df161fc92cb1b6758da1c7f38c6f8ac60698daab25b7264736f6c634300081a0033",Pf={},Zf={},X={_format:Sf,contractName:Vf,sourceName:qf,abi:Uf,bytecode:Ff,deployedBytecode:Gf,linkReferences:Pf,deployedLinkReferences:Zf},jf="hh-sol-artifact-1",Kf="ERC20VariableIncentive",Qf="contracts/incentives/ERC20VariableIncentive.sol",Wf=[{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"}],Yf="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612687806101185f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611888565b610774565b60405161022491906118cd565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e91906118fe565b60405180910390f35b610271600480360381019061026c9190611941565b6107f6565b005b61028d600480360381019061028891906119c6565b610803565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119c6565b610819565b6040516102c291906118cd565b60405180910390f35b3480156102d6575f80fd5b506102df61082f565b6040516102ec91906118fe565b60405180910390f35b6102fd610835565b005b34801561030a575f80fd5b50610313610886565b6040516103209190611a13565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a2c565b6108ad565b60405161035c91906118fe565b60405180910390f35b348015610370575f80fd5b506103796108c6565b6040516103869190611a66565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b35565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c08565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c08565b610bb4565b604051610413929190611c53565b60405180910390f35b610436600480360381019061043191906119c6565b610d18565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c08565b610d2e565b60405161046b9190611cea565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119c6565b610dfc565b6040516104a791906118cd565b60405180910390f35b6104b8610e13565b005b6104c2610e4c565b005b3480156104cf575f80fd5b506104d8610e5f565b6040516104e591906118fe565b60405180910390f35b3480156104f9575f80fd5b50610502610e64565b60405161050f9190611a66565b60405180910390f35b348015610523575f80fd5b5061052c610e8c565b60405161053991906118fe565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d0a565b610e92565b60405161057591906118cd565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dbc565b61109e565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a2c565b611154565b6040516105d991906118cd565b60405180910390f35b3480156105ed575f80fd5b506105f6611171565b60405161060391906118fe565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d0a565b611177565b60405161063f91906118cd565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dbc565b61118a565b005b34801561067b575f80fd5b50610684611240565b60405161069191906118fe565b60405180910390f35b3480156106a5575f80fd5b506106ae611246565b6040516106bb91906118fe565b60405180910390f35b6106de60048036038101906106d99190611a2c565b61124b565b005b6106fa60048036038101906106f59190611a2c565b611289565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a2c565b6112b2565b60405161072f91906118cd565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a2c565b611305565b60405161076b91906118fe565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e58261131e565b5b9050919050565b5f600254905090565b6108003382611397565b50565b61080b6113a6565b61081582826113dd565b5050565b5f8182610825856108ad565b1614905092915050565b60025481565b5f61083e6113ed565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f4816113f7565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e3a565b5b90506020020160208101906109699190611e91565b905060011515811515036109ae576109a987878481811061098d5761098c611e3a565b5b90506020020160208101906109a29190611a2c565b60016113dd565b6109e1565b6109e08787848181106109c4576109c3611e3a565b5b90506020020160208101906109d99190611a2c565b6001611397565b5b508080600101915050610935565b505050505050565b5f610a0061142c565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611f9d565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145590919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fc8565b60405180910390fd5b835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600281905550816004819055505f600581905550610b6a33611488565b610b7533600161155e565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc18161159f565b5f8585810190610bd19190612116565b90505f8160200151806020019051810190610bec9190612171565b90508060045f828254610bff91906121c9565b92505081905550610c53825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc593929190612261565b604051602081830303815290604052604051610ce19190611cea565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d206113a6565b610d2a8282611397565b5050565b60605f808484810190610d4191906122d8565b9250509150604051806080016040528060016002811115610d6557610d64612328565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc1919061237e565b604051602081830303815290604052815250604051602001610de39190612494565b6040516020818303038152906040529250505092915050565b5f8082610e08856108ad565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e546113a6565b610e5d5f61160f565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f610e9b6113a6565b5f8383810190610eab9190612539565b90505f8160200151806020019051810190610ec69190612171565b90505f610ed2876116d5565b610f08576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025403610f1957819050610f3d565b670de0b6b3a764000082600254610f309190612580565b610f3a91906125ee565b90505b60045481600554610f4e919061261e565b1115610f86576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f97919061261e565b925050819055506001805f828254610faf919061261e565b9250508190555061100087825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898460405160200161106c93929190612261565b6040516020818303038152906040526040516110889190611cea565b60405180910390a2600193505050509392505050565b60026110a9816113f7565b8282905085859050146110e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561114c5761113f86868381811061110b5761110a611e3a565b5b90506020020160208101906111209190611a2c565b85858481811061113357611132611e3a565b5b905060200201356113dd565b80806001019150506110ea565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611181846116d5565b90509392505050565b6002611195816113f7565b8282905085859050146111d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112385761122b8686838181106111f7576111f6611e3a565b5b905060200201602081019061120c9190611a2c565b85858481811061121f5761121e611e3a565b5b90506020020135611397565b80806001019150506111d6565b505050505050565b60015481565b600181565b6112536113a6565b63389a75e1600c52805f526020600c20805442111561127957636f5e88185f526004601cfd5b5f8155506112868161160f565b50565b6112916113a6565b8060601b6112a657637448fbae5f526004601cfd5b6112af8161160f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112d2610e64565b73ffffffffffffffffffffffffffffffffffffffff1614806112fe57506112fd826002600117610dfc565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611390575061138f826116e4565b5b9050919050565b6113a282825f61175d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113db576382b429005f526004601cfd5b565b6113e98282600161175d565b5050565b5f6202a300905090565b638b78c6d81954331461142957638b78c6d8600c52335f52806020600c205416611428576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114906117b5565b15611508577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061155b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611606576390b8ec185f526004601cfd5b5f603452505050565b6116176117b5565b1561167c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117565750611755826117b9565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361177f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61186781611833565b8114611871575f80fd5b50565b5f813590506118828161185e565b92915050565b5f6020828403121561189d5761189c61182b565b5b5f6118aa84828501611874565b91505092915050565b5f8115159050919050565b6118c7816118b3565b82525050565b5f6020820190506118e05f8301846118be565b92915050565b5f819050919050565b6118f8816118e6565b82525050565b5f6020820190506119115f8301846118ef565b92915050565b611920816118e6565b811461192a575f80fd5b50565b5f8135905061193b81611917565b92915050565b5f602082840312156119565761195561182b565b5b5f6119638482850161192d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119958261196c565b9050919050565b6119a58161198b565b81146119af575f80fd5b50565b5f813590506119c08161199c565b92915050565b5f80604083850312156119dc576119db61182b565b5b5f6119e9858286016119b2565b92505060206119fa8582860161192d565b9150509250929050565b611a0d81611833565b82525050565b5f602082019050611a265f830184611a04565b92915050565b5f60208284031215611a4157611a4061182b565b5b5f611a4e848285016119b2565b91505092915050565b611a608161198b565b82525050565b5f602082019050611a795f830184611a57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa057611a9f611a7f565b5b8235905067ffffffffffffffff811115611abd57611abc611a83565b5b602083019150836020820283011115611ad957611ad8611a87565b5b9250929050565b5f8083601f840112611af557611af4611a7f565b5b8235905067ffffffffffffffff811115611b1257611b11611a83565b5b602083019150836020820283011115611b2e57611b2d611a87565b5b9250929050565b5f805f8060408587031215611b4d57611b4c61182b565b5b5f85013567ffffffffffffffff811115611b6a57611b6961182f565b5b611b7687828801611a8b565b9450945050602085013567ffffffffffffffff811115611b9957611b9861182f565b5b611ba587828801611ae0565b925092505092959194509250565b5f8083601f840112611bc857611bc7611a7f565b5b8235905067ffffffffffffffff811115611be557611be4611a83565b5b602083019150836001820283011115611c0157611c00611a87565b5b9250929050565b5f8060208385031215611c1e57611c1d61182b565b5b5f83013567ffffffffffffffff811115611c3b57611c3a61182f565b5b611c4785828601611bb3565b92509250509250929050565b5f604082019050611c665f8301856118ef565b611c736020830184611a57565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cbc82611c7a565b611cc68185611c84565b9350611cd6818560208601611c94565b611cdf81611ca2565b840191505092915050565b5f6020820190508181035f830152611d028184611cb2565b905092915050565b5f805f60408486031215611d2157611d2061182b565b5b5f611d2e868287016119b2565b935050602084013567ffffffffffffffff811115611d4f57611d4e61182f565b5b611d5b86828701611bb3565b92509250509250925092565b5f8083601f840112611d7c57611d7b611a7f565b5b8235905067ffffffffffffffff811115611d9957611d98611a83565b5b602083019150836020820283011115611db557611db4611a87565b5b9250929050565b5f805f8060408587031215611dd457611dd361182b565b5b5f85013567ffffffffffffffff811115611df157611df061182f565b5b611dfd87828801611a8b565b9450945050602085013567ffffffffffffffff811115611e2057611e1f61182f565b5b611e2c87828801611d67565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e70816118b3565b8114611e7a575f80fd5b50565b5f81359050611e8b81611e67565b92915050565b5f60208284031215611ea657611ea561182b565b5b5f611eb384828501611e7d565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ef682611ca2565b810181811067ffffffffffffffff82111715611f1557611f14611ec0565b5b80604052505050565b5f611f27611822565b9050611f338282611eed565b919050565b5f80fd5b5f60608284031215611f5157611f50611ebc565b5b611f5b6060611f1e565b90505f611f6a848285016119b2565b5f830152506020611f7d8482850161192d565b6020830152506040611f918482850161192d565b60408301525092915050565b5f60608284031215611fb257611fb161182b565b5b5f611fbf84828501611f3c565b91505092915050565b5f606082019050611fdb5f830186611a57565b611fe860208301856118ef565b611ff560408301846118ef565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561201b5761201a611ec0565b5b61202482611ca2565b9050602081019050919050565b828183375f83830152505050565b5f61205161204c84612001565b611f1e565b90508281526020810184848401111561206d5761206c611ffd565b5b612078848285612031565b509392505050565b5f82601f83011261209457612093611a7f565b5b81356120a484826020860161203f565b91505092915050565b5f604082840312156120c2576120c1611ebc565b5b6120cc6040611f1e565b90505f6120db848285016119b2565b5f83015250602082013567ffffffffffffffff8111156120fe576120fd611f38565b5b61210a84828501612080565b60208301525092915050565b5f6020828403121561212b5761212a61182b565b5b5f82013567ffffffffffffffff8111156121485761214761182f565b5b612154848285016120ad565b91505092915050565b5f8151905061216b81611917565b92915050565b5f602082840312156121865761218561182b565b5b5f6121938482850161215d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d3826118e6565b91506121de836118e6565b92508282039050818111156121f6576121f561219c565b5b92915050565b5f8160601b9050919050565b5f612212826121fc565b9050919050565b5f61222382612208565b9050919050565b61223b6122368261198b565b612219565b82525050565b5f819050919050565b61225b612256826118e6565b612241565b82525050565b5f61226c828661222a565b60148201915061227c828561222a565b60148201915061228c828461224a565b602082019150819050949350505050565b5f6122a78261196c565b9050919050565b6122b78161229d565b81146122c1575f80fd5b50565b5f813590506122d2816122ae565b92915050565b5f805f606084860312156122ef576122ee61182b565b5b5f6122fc868287016122c4565b935050602061230d8682870161192d565b925050604061231e8682870161192d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61235e816118e6565b82525050565b602082015f8201516123785f850182612355565b50505050565b5f6020820190506123915f830184612364565b92915050565b600381106123a8576123a7612328565b5b50565b5f8190506123b882612397565b919050565b5f6123c7826123ab565b9050919050565b6123d7816123bd565b82525050565b6123e68161198b565b82525050565b5f82825260208201905092915050565b5f61240682611c7a565b61241081856123ec565b9350612420818560208601611c94565b61242981611ca2565b840191505092915050565b5f608083015f8301516124495f8601826123ce565b50602083015161245c60208601826123dd565b50604083015161246f60408601826123dd565b506060830151848203606086015261248782826123fc565b9150508091505092915050565b5f6020820190508181035f8301526124ac8184612434565b905092915050565b5f604082840312156124c9576124c8611ebc565b5b6124d36040611f1e565b90505f82013567ffffffffffffffff8111156124f2576124f1611f38565b5b6124fe84828501612080565b5f83015250602082013567ffffffffffffffff81111561252157612520611f38565b5b61252d84828501612080565b60208301525092915050565b5f6020828403121561254e5761254d61182b565b5b5f82013567ffffffffffffffff81111561256b5761256a61182f565b5b612577848285016124b4565b91505092915050565b5f61258a826118e6565b9150612595836118e6565b92508282026125a3816118e6565b915082820484148315176125ba576125b961219c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125f8826118e6565b9150612603836118e6565b925082612613576126126125c1565b5b828204905092915050565b5f612628826118e6565b9150612633836118e6565b925082820190508082111561264b5761264a61219c565b5b9291505056fea264697066735822122009cb726c4381a097b229659e760f31c3e30f527494c6a6cc77256a569c67e7e164736f6c634300081a0033",Jf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611888565b610774565b60405161022491906118cd565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e91906118fe565b60405180910390f35b610271600480360381019061026c9190611941565b6107f6565b005b61028d600480360381019061028891906119c6565b610803565b005b34801561029a575f80fd5b506102b560048036038101906102b091906119c6565b610819565b6040516102c291906118cd565b60405180910390f35b3480156102d6575f80fd5b506102df61082f565b6040516102ec91906118fe565b60405180910390f35b6102fd610835565b005b34801561030a575f80fd5b50610313610886565b6040516103209190611a13565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a2c565b6108ad565b60405161035c91906118fe565b60405180910390f35b348015610370575f80fd5b506103796108c6565b6040516103869190611a66565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b35565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c08565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c08565b610bb4565b604051610413929190611c53565b60405180910390f35b610436600480360381019061043191906119c6565b610d18565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c08565b610d2e565b60405161046b9190611cea565b60405180910390f35b34801561047f575f80fd5b5061049a600480360381019061049591906119c6565b610dfc565b6040516104a791906118cd565b60405180910390f35b6104b8610e13565b005b6104c2610e4c565b005b3480156104cf575f80fd5b506104d8610e5f565b6040516104e591906118fe565b60405180910390f35b3480156104f9575f80fd5b50610502610e64565b60405161050f9190611a66565b60405180910390f35b348015610523575f80fd5b5061052c610e8c565b60405161053991906118fe565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d0a565b610e92565b60405161057591906118cd565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611dbc565b61109e565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a2c565b611154565b6040516105d991906118cd565b60405180910390f35b3480156105ed575f80fd5b506105f6611171565b60405161060391906118fe565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d0a565b611177565b60405161063f91906118cd565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611dbc565b61118a565b005b34801561067b575f80fd5b50610684611240565b60405161069191906118fe565b60405180910390f35b3480156106a5575f80fd5b506106ae611246565b6040516106bb91906118fe565b60405180910390f35b6106de60048036038101906106d99190611a2c565b61124b565b005b6106fa60048036038101906106f59190611a2c565b611289565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a2c565b6112b2565b60405161072f91906118cd565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a2c565b611305565b60405161076b91906118fe565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e58261131e565b5b9050919050565b5f600254905090565b6108003382611397565b50565b61080b6113a6565b61081582826113dd565b5050565b5f8182610825856108ad565b1614905092915050565b60025481565b5f61083e6113ed565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f4816113f7565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e3a565b5b90506020020160208101906109699190611e91565b905060011515811515036109ae576109a987878481811061098d5761098c611e3a565b5b90506020020160208101906109a29190611a2c565b60016113dd565b6109e1565b6109e08787848181106109c4576109c3611e3a565b5b90506020020160208101906109d99190611a2c565b6001611397565b5b508080600101915050610935565b505050505050565b5f610a0061142c565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611f9d565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff1661145590919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190611fc8565b60405180910390fd5b835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600281905550816004819055505f600581905550610b6a33611488565b610b7533600161155e565b50505050508015610baf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610bc18161159f565b5f8585810190610bd19190612116565b90505f8160200151806020019051810190610bec9190612171565b90508060045f828254610bff91906121c9565b92505081905550610c53825f0151825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610cc593929190612261565b604051602081830303815290604052604051610ce19190611cea565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d206113a6565b610d2a8282611397565b5050565b60605f808484810190610d4191906122d8565b9250509150604051806080016040528060016002811115610d6557610d64612328565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610dc1919061237e565b604051602081830303815290604052815250604051602001610de39190612494565b6040516020818303038152906040529250505092915050565b5f8082610e08856108ad565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610e546113a6565b610e5d5f61160f565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045481565b5f610e9b6113a6565b5f8383810190610eab9190612539565b90505f8160200151806020019051810190610ec69190612171565b90505f610ed2876116d5565b610f08576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025403610f1957819050610f3d565b670de0b6b3a764000082600254610f309190612580565b610f3a91906125ee565b90505b60045481600554610f4e919061261e565b1115610f86576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610f97919061261e565b925050819055506001805f828254610faf919061261e565b9250508190555061100087825f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115c69092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16898460405160200161106c93929190612261565b6040516020818303038152906040526040516110889190611cea565b60405180910390a2600193505050509392505050565b60026110a9816113f7565b8282905085859050146110e8576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561114c5761113f86868381811061110b5761110a611e3a565b5b90506020020160208101906111209190611a2c565b85858481811061113357611132611e3a565b5b905060200201356113dd565b80806001019150506110ea565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f611181846116d5565b90509392505050565b6002611195816113f7565b8282905085859050146111d4576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112385761122b8686838181106111f7576111f6611e3a565b5b905060200201602081019061120c9190611a2c565b85858481811061121f5761121e611e3a565b5b90506020020135611397565b80806001019150506111d6565b505050505050565b60015481565b600181565b6112536113a6565b63389a75e1600c52805f526020600c20805442111561127957636f5e88185f526004601cfd5b5f8155506112868161160f565b50565b6112916113a6565b8060601b6112a657637448fbae5f526004601cfd5b6112af8161160f565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166112d2610e64565b73ffffffffffffffffffffffffffffffffffffffff1614806112fe57506112fd826002600117610dfc565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611390575061138f826116e4565b5b9050919050565b6113a282825f61175d565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146113db576382b429005f526004601cfd5b565b6113e98282600161175d565b5050565b5f6202a300905090565b638b78c6d81954331461142957638b78c6d8600c52335f52806020600c205416611428576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114906117b5565b15611508577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156114ca57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061155b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c2054166115c3576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611606576390b8ec185f526004601cfd5b5f603452505050565b6116176117b5565b1561167c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506116d2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600454600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117565750611755826117b9565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361177f57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61186781611833565b8114611871575f80fd5b50565b5f813590506118828161185e565b92915050565b5f6020828403121561189d5761189c61182b565b5b5f6118aa84828501611874565b91505092915050565b5f8115159050919050565b6118c7816118b3565b82525050565b5f6020820190506118e05f8301846118be565b92915050565b5f819050919050565b6118f8816118e6565b82525050565b5f6020820190506119115f8301846118ef565b92915050565b611920816118e6565b811461192a575f80fd5b50565b5f8135905061193b81611917565b92915050565b5f602082840312156119565761195561182b565b5b5f6119638482850161192d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119958261196c565b9050919050565b6119a58161198b565b81146119af575f80fd5b50565b5f813590506119c08161199c565b92915050565b5f80604083850312156119dc576119db61182b565b5b5f6119e9858286016119b2565b92505060206119fa8582860161192d565b9150509250929050565b611a0d81611833565b82525050565b5f602082019050611a265f830184611a04565b92915050565b5f60208284031215611a4157611a4061182b565b5b5f611a4e848285016119b2565b91505092915050565b611a608161198b565b82525050565b5f602082019050611a795f830184611a57565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611aa057611a9f611a7f565b5b8235905067ffffffffffffffff811115611abd57611abc611a83565b5b602083019150836020820283011115611ad957611ad8611a87565b5b9250929050565b5f8083601f840112611af557611af4611a7f565b5b8235905067ffffffffffffffff811115611b1257611b11611a83565b5b602083019150836020820283011115611b2e57611b2d611a87565b5b9250929050565b5f805f8060408587031215611b4d57611b4c61182b565b5b5f85013567ffffffffffffffff811115611b6a57611b6961182f565b5b611b7687828801611a8b565b9450945050602085013567ffffffffffffffff811115611b9957611b9861182f565b5b611ba587828801611ae0565b925092505092959194509250565b5f8083601f840112611bc857611bc7611a7f565b5b8235905067ffffffffffffffff811115611be557611be4611a83565b5b602083019150836001820283011115611c0157611c00611a87565b5b9250929050565b5f8060208385031215611c1e57611c1d61182b565b5b5f83013567ffffffffffffffff811115611c3b57611c3a61182f565b5b611c4785828601611bb3565b92509250509250929050565b5f604082019050611c665f8301856118ef565b611c736020830184611a57565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cbc82611c7a565b611cc68185611c84565b9350611cd6818560208601611c94565b611cdf81611ca2565b840191505092915050565b5f6020820190508181035f830152611d028184611cb2565b905092915050565b5f805f60408486031215611d2157611d2061182b565b5b5f611d2e868287016119b2565b935050602084013567ffffffffffffffff811115611d4f57611d4e61182f565b5b611d5b86828701611bb3565b92509250509250925092565b5f8083601f840112611d7c57611d7b611a7f565b5b8235905067ffffffffffffffff811115611d9957611d98611a83565b5b602083019150836020820283011115611db557611db4611a87565b5b9250929050565b5f805f8060408587031215611dd457611dd361182b565b5b5f85013567ffffffffffffffff811115611df157611df061182f565b5b611dfd87828801611a8b565b9450945050602085013567ffffffffffffffff811115611e2057611e1f61182f565b5b611e2c87828801611d67565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e70816118b3565b8114611e7a575f80fd5b50565b5f81359050611e8b81611e67565b92915050565b5f60208284031215611ea657611ea561182b565b5b5f611eb384828501611e7d565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ef682611ca2565b810181811067ffffffffffffffff82111715611f1557611f14611ec0565b5b80604052505050565b5f611f27611822565b9050611f338282611eed565b919050565b5f80fd5b5f60608284031215611f5157611f50611ebc565b5b611f5b6060611f1e565b90505f611f6a848285016119b2565b5f830152506020611f7d8482850161192d565b6020830152506040611f918482850161192d565b60408301525092915050565b5f60608284031215611fb257611fb161182b565b5b5f611fbf84828501611f3c565b91505092915050565b5f606082019050611fdb5f830186611a57565b611fe860208301856118ef565b611ff560408301846118ef565b949350505050565b5f80fd5b5f67ffffffffffffffff82111561201b5761201a611ec0565b5b61202482611ca2565b9050602081019050919050565b828183375f83830152505050565b5f61205161204c84612001565b611f1e565b90508281526020810184848401111561206d5761206c611ffd565b5b612078848285612031565b509392505050565b5f82601f83011261209457612093611a7f565b5b81356120a484826020860161203f565b91505092915050565b5f604082840312156120c2576120c1611ebc565b5b6120cc6040611f1e565b90505f6120db848285016119b2565b5f83015250602082013567ffffffffffffffff8111156120fe576120fd611f38565b5b61210a84828501612080565b60208301525092915050565b5f6020828403121561212b5761212a61182b565b5b5f82013567ffffffffffffffff8111156121485761214761182f565b5b612154848285016120ad565b91505092915050565b5f8151905061216b81611917565b92915050565b5f602082840312156121865761218561182b565b5b5f6121938482850161215d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d3826118e6565b91506121de836118e6565b92508282039050818111156121f6576121f561219c565b5b92915050565b5f8160601b9050919050565b5f612212826121fc565b9050919050565b5f61222382612208565b9050919050565b61223b6122368261198b565b612219565b82525050565b5f819050919050565b61225b612256826118e6565b612241565b82525050565b5f61226c828661222a565b60148201915061227c828561222a565b60148201915061228c828461224a565b602082019150819050949350505050565b5f6122a78261196c565b9050919050565b6122b78161229d565b81146122c1575f80fd5b50565b5f813590506122d2816122ae565b92915050565b5f805f606084860312156122ef576122ee61182b565b5b5f6122fc868287016122c4565b935050602061230d8682870161192d565b925050604061231e8682870161192d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61235e816118e6565b82525050565b602082015f8201516123785f850182612355565b50505050565b5f6020820190506123915f830184612364565b92915050565b600381106123a8576123a7612328565b5b50565b5f8190506123b882612397565b919050565b5f6123c7826123ab565b9050919050565b6123d7816123bd565b82525050565b6123e68161198b565b82525050565b5f82825260208201905092915050565b5f61240682611c7a565b61241081856123ec565b9350612420818560208601611c94565b61242981611ca2565b840191505092915050565b5f608083015f8301516124495f8601826123ce565b50602083015161245c60208601826123dd565b50604083015161246f60408601826123dd565b506060830151848203606086015261248782826123fc565b9150508091505092915050565b5f6020820190508181035f8301526124ac8184612434565b905092915050565b5f604082840312156124c9576124c8611ebc565b5b6124d36040611f1e565b90505f82013567ffffffffffffffff8111156124f2576124f1611f38565b5b6124fe84828501612080565b5f83015250602082013567ffffffffffffffff81111561252157612520611f38565b5b61252d84828501612080565b60208301525092915050565b5f6020828403121561254e5761254d61182b565b5b5f82013567ffffffffffffffff81111561256b5761256a61182f565b5b612577848285016124b4565b91505092915050565b5f61258a826118e6565b9150612595836118e6565b92508282026125a3816118e6565b915082820484148315176125ba576125b961219c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125f8826118e6565b9150612603836118e6565b925082612613576126126125c1565b5b828204905092915050565b5f612628826118e6565b9150612633836118e6565b925082820190508082111561264b5761264a61219c565b5b9291505056fea264697066735822122009cb726c4381a097b229659e760f31c3e30f527494c6a6cc77256a569c67e7e164736f6c634300081a0033",Xf={},f5={},f0={_format:jf,contractName:Kf,sourceName:Qf,abi:Wf,bytecode:Yf,deployedBytecode:Jf,linkReferences:Xf,deployedLinkReferences:f5},b5="hh-sol-artifact-1",e5="ERC1155Incentive",a5="contracts/incentives/ERC1155Incentive.sol",d5=[{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"}],t5="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613269806101185f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c7e565b61086c565b6040516102509190611cc3565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cf4565b60405180910390f35b34801561028e575f80fd5b50610297610956565b6040516102a49190611cf4565b60405180910390f35b6102c760048036038101906102c29190611d37565b61095c565b005b6102e360048036038101906102de9190611dbc565b610969565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dbc565b61097f565b6040516103189190611cc3565b60405180910390f35b34801561032c575f80fd5b50610335610995565b6040516103429190611cf4565b60405180910390f35b61035361099b565b005b348015610360575f80fd5b506103696109ec565b6040516103769190611e09565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e22565b610a13565b6040516103b29190611cf4565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2c565b6040516103dc9190611e5c565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f2b565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190611ffe565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190611ffe565b610e11565b604051610469929190612049565b60405180910390f35b61048c60048036038101906104879190611dbc565b61103d565b005b348015610499575f80fd5b506104b460048036038101906104af9190611ffe565b611053565b6040516104c191906120e0565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dbc565b611136565b6040516104fd9190611cc3565b60405180910390f35b61050e61114d565b005b34801561051b575f80fd5b50610524611186565b60405161053191906120e0565b60405180910390f35b610542611212565b005b34801561054f575f80fd5b50610558611225565b6040516105659190611cf4565b60405180910390f35b348015610579575f80fd5b5061058261122a565b60405161058f9190611e5c565b60405180910390f35b3480156105a3575f80fd5b506105ac611252565b6040516105b99190611cf4565b60405180910390f35b3480156105cd575f80fd5b506105d6611258565b6040516105e39190612173565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061218c565b61126a565b60405161061f9190611cc3565b60405180910390f35b348015610633575f80fd5b5061064e6004803603810190610649919061223e565b611479565b60405161065b9190611e09565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612315565b611490565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123c6565b611546565b6040516106bf9190611cc3565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061218c565b611563565b6040516106fb9190611cc3565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612315565b611584565b005b348015610737575f80fd5b5061074061163a565b60405161074d9190611cf4565b60405180910390f35b348015610761575f80fd5b5061076a611640565b6040516107779190611cf4565b60405180910390f35b61079a60048036038101906107959190611e22565b611645565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123f1565b611683565b6040516107cf9190611e09565b60405180910390f35b6107f260048036038101906107ed9190611e22565b611698565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e22565b6116c1565b6040516108279190611cc3565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e22565b611714565b6040516108639190611cf4565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094657506109458261172d565b5b9050919050565b5f600254905090565b60065481565b61096633826117a6565b50565b6109716117b5565b61097b82826117ec565b5050565b5f818261098b85610a13565b1614905092915050565b60025481565b5f6109a46117fc565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611806565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612487565b5b9050602002016020810190610acf91906124de565b90506001151581151503610b1457610b0f878784818110610af357610af2612487565b5b9050602002016020810190610b089190611e22565b60016117ec565b610b47565b610b46878784818110610b2a57610b29612487565b5b9050602002016020810190610b3f9190611e22565b60016117a6565b5b508080600101915050610a9b565b505050505050565b5f610b6661183b565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba9919061273c565b90506001600281905550600180811115610bc657610bc5612100565b5b81602001516001811115610bdd57610bdc612100565b5b03610c14576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c51576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c93929190612783565b602060405180830381865afa158015610cae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd291906127be565b90508160600151811015610d2857815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1f939291906127e9565b60405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160045f6101000a81548160ff02191690836001811115610d9257610d91612100565b5b021790555081604001516006819055508160600151600581905550816080015160079081610dc09190612a18565b50610dca33611864565b610dd533600161193a565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e8161197b565b5f8585810190610e2e9190612b50565b90505f8160200151806020019051810190610e4991906127be565b9050600154600554610e5b9190612bc4565b811115610ec0573382604051602001610e749190612c88565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612ca8565b60405180910390fd5b8060055f828254610ed19190612bc4565b925050819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516006548587602001516040518663ffffffff1660e01b8152600401610f41959493929190612cd6565b5f604051808303815f87803b158015610f58575f80fd5b505af1158015610f6a573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600654858760200151604051602001610fea959493929190612dcd565b60405160208183030381529060405260405161100691906120e0565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110456117b5565b61104f82826117a6565b5050565b60605f8383810190611065919061273c565b9050604051806080016040528060028081111561108557611084612100565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016110fc9190612e83565b60405160208183030381529060405281525060405160200161111e9190612f49565b60405160208183030381529060405291505092915050565b5f808261114285610a13565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b600780546111939061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bf9061284b565b801561120a5780601f106111e15761010080835404028352916020019161120a565b820191905f5260205f20905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b61121a6117b5565b6112235f6119a2565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b5f6112736117b5565b5f61127e8484611a68565b90505f600181111561129357611292612100565b5b60045f9054906101000a900460ff1660018111156112b4576112b3612100565b5b0361146d576112c281611aa4565b6112f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81548092919061130a90612f69565b9190505550600160035f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600654600189896040518763ffffffff1660e01b815260040161139d96959493929190613015565b5f604051808303815f87803b1580156113b4575f80fd5b505af11580156113c6573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876006546001898960405160200161143f96959493929190613093565b60405160208183030381529060405260405161145b91906120e0565b60405180910390a26001915050611472565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261149b81611806565b8282905085859050146114da576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561153e576115318686838181106114fd576114fc612487565b5b90506020020160208101906115129190611e22565b85858481811061152557611524612487565b5b905060200201356117ec565b80806001019150506114dc565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f8061156f8484611a68565b905061157a81611aa4565b9150509392505050565b600261158f81611806565b8282905085859050146115ce576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611632576116258686838181106115f1576115f0612487565b5b90506020020160208101906116069190611e22565b85858481811061161957611618612487565b5b905060200201356117a6565b80806001019150506115d0565b505050505050565b60015481565b600181565b61164d6117b5565b63389a75e1600c52805f526020600c20805442111561167357636f5e88185f526004601cfd5b5f815550611680816119a2565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a06117b5565b8060601b6116b557637448fbae5f526004601cfd5b6116be816119a2565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116e161122a565b73ffffffffffffffffffffffffffffffffffffffff16148061170d575061170c826002600117611136565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179f575061179e82611ada565b5b9050919050565b6117b182825f611b53565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117ea576382b429005f526004601cfd5b565b6117f882826001611b53565b5050565b5f6202a300905090565b638b78c6d81954331461183857638b78c6d8600c52335f52806020600c205416611837576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61186c611bab565b156118e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118a657630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611937565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661199f576382b429005f526004601cfd5b50565b6119aa611bab565b15611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a65565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a799190613174565b90505f8160200151806020019051810190611a949190613208565b9050805f01519250505092915050565b5f60035f8381526020019081526020015f205f9054906101000a900460ff16158015611ad35750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b4c5750611b4b82611baf565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c5d81611c29565b8114611c67575f80fd5b50565b5f81359050611c7881611c54565b92915050565b5f60208284031215611c9357611c92611c21565b5b5f611ca084828501611c6a565b91505092915050565b5f8115159050919050565b611cbd81611ca9565b82525050565b5f602082019050611cd65f830184611cb4565b92915050565b5f819050919050565b611cee81611cdc565b82525050565b5f602082019050611d075f830184611ce5565b92915050565b611d1681611cdc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f60208284031215611d4c57611d4b611c21565b5b5f611d5984828501611d23565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d8b82611d62565b9050919050565b611d9b81611d81565b8114611da5575f80fd5b50565b5f81359050611db681611d92565b92915050565b5f8060408385031215611dd257611dd1611c21565b5b5f611ddf85828601611da8565b9250506020611df085828601611d23565b9150509250929050565b611e0381611c29565b82525050565b5f602082019050611e1c5f830184611dfa565b92915050565b5f60208284031215611e3757611e36611c21565b5b5f611e4484828501611da8565b91505092915050565b611e5681611d81565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9657611e95611e75565b5b8235905067ffffffffffffffff811115611eb357611eb2611e79565b5b602083019150836020820283011115611ecf57611ece611e7d565b5b9250929050565b5f8083601f840112611eeb57611eea611e75565b5b8235905067ffffffffffffffff811115611f0857611f07611e79565b5b602083019150836020820283011115611f2457611f23611e7d565b5b9250929050565b5f805f8060408587031215611f4357611f42611c21565b5b5f85013567ffffffffffffffff811115611f6057611f5f611c25565b5b611f6c87828801611e81565b9450945050602085013567ffffffffffffffff811115611f8f57611f8e611c25565b5b611f9b87828801611ed6565b925092505092959194509250565b5f8083601f840112611fbe57611fbd611e75565b5b8235905067ffffffffffffffff811115611fdb57611fda611e79565b5b602083019150836001820283011115611ff757611ff6611e7d565b5b9250929050565b5f806020838503121561201457612013611c21565b5b5f83013567ffffffffffffffff81111561203157612030611c25565b5b61203d85828601611fa9565b92509250509250929050565b5f60408201905061205c5f830185611ce5565b6120696020830184611e4d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b282612070565b6120bc818561207a565b93506120cc81856020860161208a565b6120d581612098565b840191505092915050565b5f6020820190508181035f8301526120f881846120a8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061213e5761213d612100565b5b50565b5f81905061214e8261212d565b919050565b5f61215d82612141565b9050919050565b61216d81612153565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f805f604084860312156121a3576121a2611c21565b5b5f6121b086828701611da8565b935050602084013567ffffffffffffffff8111156121d1576121d0611c25565b5b6121dd86828701611fa9565b92509250509250925092565b5f8083601f8401126121fe576121fd611e75565b5b8235905067ffffffffffffffff81111561221b5761221a611e79565b5b60208301915083602082028301111561223757612236611e7d565b5b9250929050565b5f805f805f805f8060a0898b03121561225a57612259611c21565b5b5f6122678b828c01611da8565b98505060206122788b828c01611da8565b975050604089013567ffffffffffffffff81111561229957612298611c25565b5b6122a58b828c016121e9565b9650965050606089013567ffffffffffffffff8111156122c8576122c7611c25565b5b6122d48b828c016121e9565b9450945050608089013567ffffffffffffffff8111156122f7576122f6611c25565b5b6123038b828c01611fa9565b92509250509295985092959890939650565b5f805f806040858703121561232d5761232c611c21565b5b5f85013567ffffffffffffffff81111561234a57612349611c25565b5b61235687828801611e81565b9450945050602085013567ffffffffffffffff81111561237957612378611c25565b5b612385878288016121e9565b925092505092959194509250565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f602082840312156123db576123da611c21565b5b5f6123e8848285016123b2565b91505092915050565b5f805f805f8060a0878903121561240b5761240a611c21565b5b5f61241889828a01611da8565b965050602061242989828a01611da8565b955050604061243a89828a01611d23565b945050606061244b89828a01611d23565b935050608087013567ffffffffffffffff81111561246c5761246b611c25565b5b61247889828a01611fa9565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124bd81611ca9565b81146124c7575f80fd5b50565b5f813590506124d8816124b4565b92915050565b5f602082840312156124f3576124f2611c21565b5b5f612500848285016124ca565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254382612098565b810181811067ffffffffffffffff821117156125625761256161250d565b5b80604052505050565b5f612574611c18565b9050612580828261253a565b919050565b5f80fd5b5f61259382611d81565b9050919050565b6125a381612589565b81146125ad575f80fd5b50565b5f813590506125be8161259a565b92915050565b600281106125d0575f80fd5b50565b5f813590506125e1816125c4565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126055761260461250d565b5b61260e82612098565b9050602081019050919050565b828183375f83830152505050565b5f61263b612636846125eb565b61256b565b905082815260208101848484011115612657576126566125e7565b5b61266284828561261b565b509392505050565b5f82601f83011261267e5761267d611e75565b5b813561268e848260208601612629565b91505092915050565b5f60a082840312156126ac576126ab612509565b5b6126b660a061256b565b90505f6126c5848285016125b0565b5f8301525060206126d8848285016125d3565b60208301525060406126ec84828501611d23565b604083015250606061270084828501611d23565b606083015250608082013567ffffffffffffffff81111561272457612723612585565b5b6127308482850161266a565b60808301525092915050565b5f6020828403121561275157612750611c21565b5b5f82013567ffffffffffffffff81111561276e5761276d611c25565b5b61277a84828501612697565b91505092915050565b5f6040820190506127965f830185611e4d565b6127a36020830184611ce5565b9392505050565b5f815190506127b881611d0d565b92915050565b5f602082840312156127d3576127d2611c21565b5b5f6127e0848285016127aa565b91505092915050565b5f6060820190506127fc5f830186611e4d565b6128096020830185611ce5565b6128166040830184611ce5565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286257607f821691505b6020821081036128755761287461281e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261289c565b6128e1868361289c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61291c61291761291284611cdc565b6128f9565b611cdc565b9050919050565b5f819050919050565b61293583612902565b61294961294182612923565b8484546128a8565b825550505050565b5f90565b61295d612951565b61296881848461292c565b505050565b5b8181101561298b576129805f82612955565b60018101905061296e565b5050565b601f8211156129d0576129a18161287b565b6129aa8461288d565b810160208510156129b9578190505b6129cd6129c58561288d565b83018261296d565b50505b505050565b5f82821c905092915050565b5f6129f05f19846008026129d5565b1980831691505092915050565b5f612a0883836129e1565b9150826002028217905092915050565b612a2182612070565b67ffffffffffffffff811115612a3a57612a3961250d565b5b612a44825461284b565b612a4f82828561298f565b5f60209050601f831160018114612a80575f8415612a6e578287015190505b612a7885826129fd565b865550612adf565b601f198416612a8e8661287b565b5f5b82811015612ab557848901518255600182019150602085019450602081019050612a90565b86831015612ad25784890151612ace601f8916826129e1565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612afc57612afb612509565b5b612b06604061256b565b90505f612b1584828501611da8565b5f83015250602082013567ffffffffffffffff811115612b3857612b37612585565b5b612b448482850161266a565b60208301525092915050565b5f60208284031215612b6557612b64611c21565b5b5f82013567ffffffffffffffff811115612b8257612b81611c25565b5b612b8e84828501612ae7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bce82611cdc565b9150612bd983611cdc565b9250828203905081811115612bf157612bf0612b97565b5b92915050565b612c0081611d81565b82525050565b5f82825260208201905092915050565b5f612c2082612070565b612c2a8185612c06565b9350612c3a81856020860161208a565b612c4381612098565b840191505092915050565b5f604083015f830151612c635f860182612bf7565b5060208301518482036020860152612c7b8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612ca08184612c4e565b905092915050565b5f604082019050612cbb5f830185611e4d565b8181036020830152612ccd81846120a8565b90509392505050565b5f60a082019050612ce95f830188611e4d565b612cf66020830187611e4d565b612d036040830186611ce5565b612d106060830185611ce5565b8181036080830152612d2281846120a8565b90509695505050505050565b5f8160601b9050919050565b5f612d4482612d2e565b9050919050565b5f612d5582612d3a565b9050919050565b612d6d612d6882611d81565b612d4b565b82525050565b5f819050919050565b612d8d612d8882611cdc565b612d73565b82525050565b5f81905092915050565b5f612da782612070565b612db18185612d93565b9350612dc181856020860161208a565b80840191505092915050565b5f612dd88288612d5c565b601482019150612de88287612d5c565b601482019150612df88286612d7c565b602082019150612e088285612d7c565b602082019150612e188284612d9d565b91508190509695505050505050565b612e3081611cdc565b82525050565b5f606083015f830151612e4b5f860182612e27565b506020830151612e5e6020860182612e27565b5060408301518482036040860152612e768282612c16565b9150508091505092915050565b5f6020820190508181035f830152612e9b8184612e36565b905092915050565b60038110612eb457612eb3612100565b5b50565b5f819050612ec482612ea3565b919050565b5f612ed382612eb7565b9050919050565b612ee381612ec9565b82525050565b5f608083015f830151612efe5f860182612eda565b506020830151612f116020860182612bf7565b506040830151612f246040860182612bf7565b5060608301518482036060860152612f3c8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612f618184612ee9565b905092915050565b5f612f7382611cdc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa557612fa4612b97565b5b600182019050919050565b5f819050919050565b5f612fd3612fce612fc984612fb0565b6128f9565b611cdc565b9050919050565b612fe381612fb9565b82525050565b5f612ff4838561207a565b935061300183858461261b565b61300a83612098565b840190509392505050565b5f60a0820190506130285f830189611e4d565b6130356020830188611e4d565b6130426040830187611ce5565b61304f6060830186612fda565b8181036080830152613062818486612fe9565b9050979650505050505050565b5f61307a8385612d93565b935061308783858461261b565b82840190509392505050565b5f61309e8289612d5c565b6014820191506130ae8288612d5c565b6014820191506130be8287612d7c565b6020820191506130ce8286612d7c565b6020820191506130df82848661306f565b9150819050979650505050505050565b5f6040828403121561310457613103612509565b5b61310e604061256b565b90505f82013567ffffffffffffffff81111561312d5761312c612585565b5b6131398482850161266a565b5f83015250602082013567ffffffffffffffff81111561315c5761315b612585565b5b6131688482850161266a565b60208301525092915050565b5f6020828403121561318957613188611c21565b5b5f82013567ffffffffffffffff8111156131a6576131a5611c25565b5b6131b2848285016130ef565b91505092915050565b5f815190506131c98161239c565b92915050565b5f602082840312156131e4576131e3612509565b5b6131ee602061256b565b90505f6131fd848285016131bb565b5f8301525092915050565b5f6020828403121561321d5761321c611c21565b5b5f61322a848285016131cf565b9150509291505056fea2646970667358221220cce3a3e77bfd8b7cefb45a4e41677ac42c3764b0ca35254db63a11cffcdc1b5e64736f6c634300081a0033",c5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c7e565b61086c565b6040516102509190611cc3565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611cf4565b60405180910390f35b34801561028e575f80fd5b50610297610956565b6040516102a49190611cf4565b60405180910390f35b6102c760048036038101906102c29190611d37565b61095c565b005b6102e360048036038101906102de9190611dbc565b610969565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611dbc565b61097f565b6040516103189190611cc3565b60405180910390f35b34801561032c575f80fd5b50610335610995565b6040516103429190611cf4565b60405180910390f35b61035361099b565b005b348015610360575f80fd5b506103696109ec565b6040516103769190611e09565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e22565b610a13565b6040516103b29190611cf4565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2c565b6040516103dc9190611e5c565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f2b565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190611ffe565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190611ffe565b610e11565b604051610469929190612049565b60405180910390f35b61048c60048036038101906104879190611dbc565b61103d565b005b348015610499575f80fd5b506104b460048036038101906104af9190611ffe565b611053565b6040516104c191906120e0565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611dbc565b611136565b6040516104fd9190611cc3565b60405180910390f35b61050e61114d565b005b34801561051b575f80fd5b50610524611186565b60405161053191906120e0565b60405180910390f35b610542611212565b005b34801561054f575f80fd5b50610558611225565b6040516105659190611cf4565b60405180910390f35b348015610579575f80fd5b5061058261122a565b60405161058f9190611e5c565b60405180910390f35b3480156105a3575f80fd5b506105ac611252565b6040516105b99190611cf4565b60405180910390f35b3480156105cd575f80fd5b506105d6611258565b6040516105e39190612173565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061218c565b61126a565b60405161061f9190611cc3565b60405180910390f35b348015610633575f80fd5b5061064e6004803603810190610649919061223e565b611479565b60405161065b9190611e09565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612315565b611490565b005b348015610697575f80fd5b506106b260048036038101906106ad91906123c6565b611546565b6040516106bf9190611cc3565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061218c565b611563565b6040516106fb9190611cc3565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612315565b611584565b005b348015610737575f80fd5b5061074061163a565b60405161074d9190611cf4565b60405180910390f35b348015610761575f80fd5b5061076a611640565b6040516107779190611cf4565b60405180910390f35b61079a60048036038101906107959190611e22565b611645565b005b3480156107a7575f80fd5b506107c260048036038101906107bd91906123f1565b611683565b6040516107cf9190611e09565b60405180910390f35b6107f260048036038101906107ed9190611e22565b611698565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e22565b6116c1565b6040516108279190611cc3565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e22565b611714565b6040516108639190611cf4565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094657506109458261172d565b5b9050919050565b5f600254905090565b60065481565b61096633826117a6565b50565b6109716117b5565b61097b82826117ec565b5050565b5f818261098b85610a13565b1614905092915050565b60025481565b5f6109a46117fc565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611806565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612487565b5b9050602002016020810190610acf91906124de565b90506001151581151503610b1457610b0f878784818110610af357610af2612487565b5b9050602002016020810190610b089190611e22565b60016117ec565b610b47565b610b46878784818110610b2a57610b29612487565b5b9050602002016020810190610b3f9190611e22565b60016117a6565b5b508080600101915050610a9b565b505050505050565b5f610b6661183b565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba9919061273c565b90506001600281905550600180811115610bc657610bc5612100565b5b81602001516001811115610bdd57610bdc612100565b5b03610c14576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c51576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c93929190612783565b602060405180830381865afa158015610cae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd291906127be565b90508160600151811015610d2857815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1f939291906127e9565b60405180910390fd5b815f01515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160045f6101000a81548160ff02191690836001811115610d9257610d91612100565b5b021790555081604001516006819055508160600151600581905550816080015160079081610dc09190612a18565b50610dca33611864565b610dd533600161193a565b50508015610e0c576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e1e8161197b565b5f8585810190610e2e9190612b50565b90505f8160200151806020019051810190610e4991906127be565b9050600154600554610e5b9190612bc4565b811115610ec0573382604051602001610e749190612c88565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610eb7929190612ca8565b60405180910390fd5b8060055f828254610ed19190612bc4565b925050819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516006548587602001516040518663ffffffff1660e01b8152600401610f41959493929190612cd6565b5f604051808303815f87803b158015610f58575f80fd5b505af1158015610f6a573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600654858760200151604051602001610fea959493929190612dcd565b60405160208183030381529060405260405161100691906120e0565b60405180910390a2805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110456117b5565b61104f82826117a6565b5050565b60605f8383810190611065919061273c565b9050604051806080016040528060028081111561108557611084612100565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016110fc9190612e83565b60405160208183030381529060405281525060405160200161111e9190612f49565b60405160208183030381529060405291505092915050565b5f808261114285610a13565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b600780546111939061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546111bf9061284b565b801561120a5780601f106111e15761010080835404028352916020019161120a565b820191905f5260205f20905b8154815290600101906020018083116111ed57829003601f168201915b505050505081565b61121a6117b5565b6112235f6119a2565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60055481565b60045f9054906101000a900460ff1681565b5f6112736117b5565b5f61127e8484611a68565b90505f600181111561129357611292612100565b5b60045f9054906101000a900460ff1660018111156112b4576112b3612100565b5b0361146d576112c281611aa4565b6112f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81548092919061130a90612f69565b9190505550600160035f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600654600189896040518763ffffffff1660e01b815260040161139d96959493929190613015565b5f604051808303815f87803b1580156113b4575f80fd5b505af11580156113c6573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d35f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876006546001898960405160200161143f96959493929190613093565b60405160208183030381529060405260405161145b91906120e0565b60405180910390a26001915050611472565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261149b81611806565b8282905085859050146114da576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561153e576115318686838181106114fd576114fc612487565b5b90506020020160208101906115129190611e22565b85858481811061152557611524612487565b5b905060200201356117ec565b80806001019150506114dc565b505050505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f8061156f8484611a68565b905061157a81611aa4565b9150509392505050565b600261158f81611806565b8282905085859050146115ce576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611632576116258686838181106115f1576115f0612487565b5b90506020020160208101906116069190611e22565b85858481811061161957611618612487565b5b905060200201356117a6565b80806001019150506115d0565b505050505050565b60015481565b600181565b61164d6117b5565b63389a75e1600c52805f526020600c20805442111561167357636f5e88185f526004601cfd5b5f815550611680816119a2565b50565b5f63f23a6e6160e01b90509695505050505050565b6116a06117b5565b8060601b6116b557637448fbae5f526004601cfd5b6116be816119a2565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116e161122a565b73ffffffffffffffffffffffffffffffffffffffff16148061170d575061170c826002600117611136565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061179f575061179e82611ada565b5b9050919050565b6117b182825f611b53565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117ea576382b429005f526004601cfd5b565b6117f882826001611b53565b5050565b5f6202a300905090565b638b78c6d81954331461183857638b78c6d8600c52335f52806020600c205416611837576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61186c611bab565b156118e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156118a657630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611937565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661199f576382b429005f526004601cfd5b50565b6119aa611bab565b15611a0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a65565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611a799190613174565b90505f8160200151806020019051810190611a949190613208565b9050805f01519250505092915050565b5f60035f8381526020019081526020015f205f9054906101000a900460ff16158015611ad35750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b4c5750611b4b82611baf565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611b7557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c5d81611c29565b8114611c67575f80fd5b50565b5f81359050611c7881611c54565b92915050565b5f60208284031215611c9357611c92611c21565b5b5f611ca084828501611c6a565b91505092915050565b5f8115159050919050565b611cbd81611ca9565b82525050565b5f602082019050611cd65f830184611cb4565b92915050565b5f819050919050565b611cee81611cdc565b82525050565b5f602082019050611d075f830184611ce5565b92915050565b611d1681611cdc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f60208284031215611d4c57611d4b611c21565b5b5f611d5984828501611d23565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d8b82611d62565b9050919050565b611d9b81611d81565b8114611da5575f80fd5b50565b5f81359050611db681611d92565b92915050565b5f8060408385031215611dd257611dd1611c21565b5b5f611ddf85828601611da8565b9250506020611df085828601611d23565b9150509250929050565b611e0381611c29565b82525050565b5f602082019050611e1c5f830184611dfa565b92915050565b5f60208284031215611e3757611e36611c21565b5b5f611e4484828501611da8565b91505092915050565b611e5681611d81565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e9657611e95611e75565b5b8235905067ffffffffffffffff811115611eb357611eb2611e79565b5b602083019150836020820283011115611ecf57611ece611e7d565b5b9250929050565b5f8083601f840112611eeb57611eea611e75565b5b8235905067ffffffffffffffff811115611f0857611f07611e79565b5b602083019150836020820283011115611f2457611f23611e7d565b5b9250929050565b5f805f8060408587031215611f4357611f42611c21565b5b5f85013567ffffffffffffffff811115611f6057611f5f611c25565b5b611f6c87828801611e81565b9450945050602085013567ffffffffffffffff811115611f8f57611f8e611c25565b5b611f9b87828801611ed6565b925092505092959194509250565b5f8083601f840112611fbe57611fbd611e75565b5b8235905067ffffffffffffffff811115611fdb57611fda611e79565b5b602083019150836001820283011115611ff757611ff6611e7d565b5b9250929050565b5f806020838503121561201457612013611c21565b5b5f83013567ffffffffffffffff81111561203157612030611c25565b5b61203d85828601611fa9565b92509250509250929050565b5f60408201905061205c5f830185611ce5565b6120696020830184611e4d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b282612070565b6120bc818561207a565b93506120cc81856020860161208a565b6120d581612098565b840191505092915050565b5f6020820190508181035f8301526120f881846120a8565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061213e5761213d612100565b5b50565b5f81905061214e8261212d565b919050565b5f61215d82612141565b9050919050565b61216d81612153565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f805f604084860312156121a3576121a2611c21565b5b5f6121b086828701611da8565b935050602084013567ffffffffffffffff8111156121d1576121d0611c25565b5b6121dd86828701611fa9565b92509250509250925092565b5f8083601f8401126121fe576121fd611e75565b5b8235905067ffffffffffffffff81111561221b5761221a611e79565b5b60208301915083602082028301111561223757612236611e7d565b5b9250929050565b5f805f805f805f8060a0898b03121561225a57612259611c21565b5b5f6122678b828c01611da8565b98505060206122788b828c01611da8565b975050604089013567ffffffffffffffff81111561229957612298611c25565b5b6122a58b828c016121e9565b9650965050606089013567ffffffffffffffff8111156122c8576122c7611c25565b5b6122d48b828c016121e9565b9450945050608089013567ffffffffffffffff8111156122f7576122f6611c25565b5b6123038b828c01611fa9565b92509250509295985092959890939650565b5f805f806040858703121561232d5761232c611c21565b5b5f85013567ffffffffffffffff81111561234a57612349611c25565b5b61235687828801611e81565b9450945050602085013567ffffffffffffffff81111561237957612378611c25565b5b612385878288016121e9565b925092505092959194509250565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f602082840312156123db576123da611c21565b5b5f6123e8848285016123b2565b91505092915050565b5f805f805f8060a0878903121561240b5761240a611c21565b5b5f61241889828a01611da8565b965050602061242989828a01611da8565b955050604061243a89828a01611d23565b945050606061244b89828a01611d23565b935050608087013567ffffffffffffffff81111561246c5761246b611c25565b5b61247889828a01611fa9565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6124bd81611ca9565b81146124c7575f80fd5b50565b5f813590506124d8816124b4565b92915050565b5f602082840312156124f3576124f2611c21565b5b5f612500848285016124ca565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61254382612098565b810181811067ffffffffffffffff821117156125625761256161250d565b5b80604052505050565b5f612574611c18565b9050612580828261253a565b919050565b5f80fd5b5f61259382611d81565b9050919050565b6125a381612589565b81146125ad575f80fd5b50565b5f813590506125be8161259a565b92915050565b600281106125d0575f80fd5b50565b5f813590506125e1816125c4565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126055761260461250d565b5b61260e82612098565b9050602081019050919050565b828183375f83830152505050565b5f61263b612636846125eb565b61256b565b905082815260208101848484011115612657576126566125e7565b5b61266284828561261b565b509392505050565b5f82601f83011261267e5761267d611e75565b5b813561268e848260208601612629565b91505092915050565b5f60a082840312156126ac576126ab612509565b5b6126b660a061256b565b90505f6126c5848285016125b0565b5f8301525060206126d8848285016125d3565b60208301525060406126ec84828501611d23565b604083015250606061270084828501611d23565b606083015250608082013567ffffffffffffffff81111561272457612723612585565b5b6127308482850161266a565b60808301525092915050565b5f6020828403121561275157612750611c21565b5b5f82013567ffffffffffffffff81111561276e5761276d611c25565b5b61277a84828501612697565b91505092915050565b5f6040820190506127965f830185611e4d565b6127a36020830184611ce5565b9392505050565b5f815190506127b881611d0d565b92915050565b5f602082840312156127d3576127d2611c21565b5b5f6127e0848285016127aa565b91505092915050565b5f6060820190506127fc5f830186611e4d565b6128096020830185611ce5565b6128166040830184611ce5565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061286257607f821691505b6020821081036128755761287461281e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261289c565b6128e1868361289c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61291c61291761291284611cdc565b6128f9565b611cdc565b9050919050565b5f819050919050565b61293583612902565b61294961294182612923565b8484546128a8565b825550505050565b5f90565b61295d612951565b61296881848461292c565b505050565b5b8181101561298b576129805f82612955565b60018101905061296e565b5050565b601f8211156129d0576129a18161287b565b6129aa8461288d565b810160208510156129b9578190505b6129cd6129c58561288d565b83018261296d565b50505b505050565b5f82821c905092915050565b5f6129f05f19846008026129d5565b1980831691505092915050565b5f612a0883836129e1565b9150826002028217905092915050565b612a2182612070565b67ffffffffffffffff811115612a3a57612a3961250d565b5b612a44825461284b565b612a4f82828561298f565b5f60209050601f831160018114612a80575f8415612a6e578287015190505b612a7885826129fd565b865550612adf565b601f198416612a8e8661287b565b5f5b82811015612ab557848901518255600182019150602085019450602081019050612a90565b86831015612ad25784890151612ace601f8916826129e1565b8355505b6001600288020188555050505b505050505050565b5f60408284031215612afc57612afb612509565b5b612b06604061256b565b90505f612b1584828501611da8565b5f83015250602082013567ffffffffffffffff811115612b3857612b37612585565b5b612b448482850161266a565b60208301525092915050565b5f60208284031215612b6557612b64611c21565b5b5f82013567ffffffffffffffff811115612b8257612b81611c25565b5b612b8e84828501612ae7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bce82611cdc565b9150612bd983611cdc565b9250828203905081811115612bf157612bf0612b97565b5b92915050565b612c0081611d81565b82525050565b5f82825260208201905092915050565b5f612c2082612070565b612c2a8185612c06565b9350612c3a81856020860161208a565b612c4381612098565b840191505092915050565b5f604083015f830151612c635f860182612bf7565b5060208301518482036020860152612c7b8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612ca08184612c4e565b905092915050565b5f604082019050612cbb5f830185611e4d565b8181036020830152612ccd81846120a8565b90509392505050565b5f60a082019050612ce95f830188611e4d565b612cf66020830187611e4d565b612d036040830186611ce5565b612d106060830185611ce5565b8181036080830152612d2281846120a8565b90509695505050505050565b5f8160601b9050919050565b5f612d4482612d2e565b9050919050565b5f612d5582612d3a565b9050919050565b612d6d612d6882611d81565b612d4b565b82525050565b5f819050919050565b612d8d612d8882611cdc565b612d73565b82525050565b5f81905092915050565b5f612da782612070565b612db18185612d93565b9350612dc181856020860161208a565b80840191505092915050565b5f612dd88288612d5c565b601482019150612de88287612d5c565b601482019150612df88286612d7c565b602082019150612e088285612d7c565b602082019150612e188284612d9d565b91508190509695505050505050565b612e3081611cdc565b82525050565b5f606083015f830151612e4b5f860182612e27565b506020830151612e5e6020860182612e27565b5060408301518482036040860152612e768282612c16565b9150508091505092915050565b5f6020820190508181035f830152612e9b8184612e36565b905092915050565b60038110612eb457612eb3612100565b5b50565b5f819050612ec482612ea3565b919050565b5f612ed382612eb7565b9050919050565b612ee381612ec9565b82525050565b5f608083015f830151612efe5f860182612eda565b506020830151612f116020860182612bf7565b506040830151612f246040860182612bf7565b5060608301518482036060860152612f3c8282612c16565b9150508091505092915050565b5f6020820190508181035f830152612f618184612ee9565b905092915050565b5f612f7382611cdc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa557612fa4612b97565b5b600182019050919050565b5f819050919050565b5f612fd3612fce612fc984612fb0565b6128f9565b611cdc565b9050919050565b612fe381612fb9565b82525050565b5f612ff4838561207a565b935061300183858461261b565b61300a83612098565b840190509392505050565b5f60a0820190506130285f830189611e4d565b6130356020830188611e4d565b6130426040830187611ce5565b61304f6060830186612fda565b8181036080830152613062818486612fe9565b9050979650505050505050565b5f61307a8385612d93565b935061308783858461261b565b82840190509392505050565b5f61309e8289612d5c565b6014820191506130ae8288612d5c565b6014820191506130be8287612d7c565b6020820191506130ce8286612d7c565b6020820191506130df82848661306f565b9150819050979650505050505050565b5f6040828403121561310457613103612509565b5b61310e604061256b565b90505f82013567ffffffffffffffff81111561312d5761312c612585565b5b6131398482850161266a565b5f83015250602082013567ffffffffffffffff81111561315c5761315b612585565b5b6131688482850161266a565b60208301525092915050565b5f6020828403121561318957613188611c21565b5b5f82013567ffffffffffffffff8111156131a6576131a5611c25565b5b6131b2848285016130ef565b91505092915050565b5f815190506131c98161239c565b92915050565b5f602082840312156131e4576131e3612509565b5b6131ee602061256b565b90505f6131fd848285016131bb565b5f8301525092915050565b5f6020828403121561321d5761321c611c21565b5b5f61322a848285016131cf565b9150509291505056fea2646970667358221220cce3a3e77bfd8b7cefb45a4e41677ac42c3764b0ca35254db63a11cffcdc1b5e64736f6c634300081a0033",n5={},i5={},b0={_format:b5,contractName:e5,sourceName:a5,abi:d5,bytecode:t5,deployedBytecode:c5,linkReferences:n5,deployedLinkReferences:i5},s5="hh-sol-artifact-1",p5="PointsIncentive",r5="contracts/incentives/PointsIncentive.sol",y5=[{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"}],u5="0x608060405273deaddeaddeaddeaddeaddeaddeaddeaddeaddead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610062575f80fd5b5061007161007660201b60201c565b61010b565b5f6100856100e260201b60201c565b90508054600181161561009f5763f92ee8a95f526004601cfd5b8160c01c808260011c146100dd578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611b99806101185f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db9190611407565b61065f565b6040516101ed919061144c565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061147d565b60405180910390f35b61023a600480360381019061023591906114c0565b6106e1565b005b61025660048036038101906102519190611545565b6106ee565b005b348015610263575f80fd5b5061027e60048036038101906102799190611545565b610704565b60405161028b919061144c565b60405180910390f35b34801561029f575f80fd5b506102a861071a565b6040516102b5919061147d565b60405180910390f35b6102c6610720565b005b3480156102d3575f80fd5b506102dc610771565b6040516102e99190611592565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115ab565b610798565b604051610325919061147d565b60405180910390f35b348015610339575f80fd5b506103426107b1565b60405161034f91906115e5565b60405180910390f35b348015610363575f80fd5b5061037e6004803603810190610379919061165f565b6107d4565b005b34801561038b575f80fd5b506103a660048036038101906103a1919061165f565b61092c565b6040516103b49291906116aa565b60405180910390f35b6103d760048036038101906103d29190611545565b610960565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061165f565b610976565b60405161040c9190611741565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611545565b6109cd565b604051610448919061144c565b60405180910390f35b6104596109e4565b005b610463610a1d565b005b348015610470575f80fd5b50610479610a30565b60405161048691906115e5565b60405180910390f35b34801561049a575f80fd5b506104a3610a58565b6040516104b091906115e5565b60405180910390f35b3480156104c4575f80fd5b506104cd610a7d565b6040516104da919061147d565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611761565b610a83565b604051610516919061144c565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115ab565b610e9b565b604051610552919061144c565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611761565b610eb8565b60405161058e919061144c565b60405180910390f35b3480156105a2575f80fd5b506105ab610ecb565b6040516105b8919061147d565b60405180910390f35b3480156105cc575f80fd5b506105d5610ed1565b6040516105e29190611592565b60405180910390f35b610605600480360381019061060091906115ab565b610ee3565b005b610621600480360381019061061c91906115ab565b610f21565b005b34801561062e575f80fd5b50610649600480360381019061064491906115ab565b610f4a565b604051610656919061147d565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f63565b5b9050919050565b5f600254905090565b6106eb3382610fdc565b50565b6106f6610feb565b6107008282611022565b5050565b5f818261071085610798565b1614905092915050565b60025481565b5f610729611032565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107dd61103c565b9050805460038255801561080f5760018160011c14303b106108065763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061082091906118af565b90505f8160400151148061083757505f8160600151145b1561086e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160065f6101000a81548163ffffffff021916908360e01c0217905550806040015160028190555080606001516005819055506108f133611065565b508015610927576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610968610feb565b6109728282610fdc565b5050565b60605f67ffffffffffffffff811115610992576109916117c2565b5b6040519080825280601f01601f1916602001820160405280156109c45781602001600182028036833780820191505090505b50905092915050565b5f80826109d985610798565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a25610feb565b610a2e5f61113b565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b5f610a8c610feb565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3591906118ee565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bd85750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b9492919061195b565b602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd391906119ac565b151514155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1885611201565b610c4e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f815480929190610c6090611a04565b9190505550600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900460e01b87600254604051602401610d17929190611a4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d819190611aac565b5f604051808303815f865af19150503d805f8114610dba576040519150601f19603f3d011682016040523d82523d5f602084013e610dbf565b606091505b5050905080610dfa576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688600254604051602001610e6a93929190611b27565b604051602081830303815290604052604051610e869190611741565b60405180910390a26001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f610ec284611201565b90509392505050565b60015481565b60065f9054906101000a900460e01b81565b610eeb610feb565b63389a75e1600c52805f526020600c208054421115610f1157636f5e88185f526004601cfd5b5f815550610f1e8161113b565b50565b610f29610feb565b8060601b610f3e57637448fbae5f526004601cfd5b610f478161113b565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fd55750610fd482611263565b5b9050919050565b610fe782825f6112dc565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611020576382b429005f526004601cfd5b565b61102e828260016112dc565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61106d611334565b156110e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110a757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611138565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611143611334565b156111a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111fe565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125c5750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112d557506112d482611338565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112fe57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113e6816113b2565b81146113f0575f80fd5b50565b5f81359050611401816113dd565b92915050565b5f6020828403121561141c5761141b6113aa565b5b5f611429848285016113f3565b91505092915050565b5f8115159050919050565b61144681611432565b82525050565b5f60208201905061145f5f83018461143d565b92915050565b5f819050919050565b61147781611465565b82525050565b5f6020820190506114905f83018461146e565b92915050565b61149f81611465565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f602082840312156114d5576114d46113aa565b5b5f6114e2848285016114ac565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611514826114eb565b9050919050565b6115248161150a565b811461152e575f80fd5b50565b5f8135905061153f8161151b565b92915050565b5f806040838503121561155b5761155a6113aa565b5b5f61156885828601611531565b9250506020611579858286016114ac565b9150509250929050565b61158c816113b2565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f602082840312156115c0576115bf6113aa565b5b5f6115cd84828501611531565b91505092915050565b6115df8161150a565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261161f5761161e6115fe565b5b8235905067ffffffffffffffff81111561163c5761163b611602565b5b60208301915083600182028301111561165857611657611606565b5b9250929050565b5f8060208385031215611675576116746113aa565b5b5f83013567ffffffffffffffff811115611692576116916113ae565b5b61169e8582860161160a565b92509250509250929050565b5f6040820190506116bd5f83018561146e565b6116ca60208301846115d6565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611713826116d1565b61171d81856116db565b935061172d8185602086016116eb565b611736816116f9565b840191505092915050565b5f6020820190508181035f8301526117598184611709565b905092915050565b5f805f60408486031215611778576117776113aa565b5b5f61178586828701611531565b935050602084013567ffffffffffffffff8111156117a6576117a56113ae565b5b6117b28682870161160a565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117f8826116f9565b810181811067ffffffffffffffff82111715611817576118166117c2565b5b80604052505050565b5f6118296113a1565b905061183582826117ef565b919050565b5f6080828403121561184f5761184e6117be565b5b6118596080611820565b90505f61186884828501611531565b5f83015250602061187b848285016113f3565b602083015250604061188f848285016114ac565b60408301525060606118a3848285016114ac565b60608301525092915050565b5f608082840312156118c4576118c36113aa565b5b5f6118d18482850161183a565b91505092915050565b5f815190506118e88161151b565b92915050565b5f60208284031215611903576119026113aa565b5b5f611910848285016118da565b91505092915050565b5f819050919050565b5f819050919050565b5f61194561194061193b84611919565b611922565b611465565b9050919050565b6119558161192b565b82525050565b5f60408201905061196e5f8301856115d6565b61197b602083018461194c565b9392505050565b61198b81611432565b8114611995575f80fd5b50565b5f815190506119a681611982565b92915050565b5f602082840312156119c1576119c06113aa565b5b5f6119ce84828501611998565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0e82611465565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a4057611a3f6119d7565b5b600182019050919050565b5f604082019050611a5e5f8301856115d6565b611a6b602083018461146e565b9392505050565b5f81905092915050565b5f611a86826116d1565b611a908185611a72565b9350611aa08185602086016116eb565b80840191505092915050565b5f611ab78284611a7c565b915081905092915050565b5f8160601b9050919050565b5f611ad882611ac2565b9050919050565b5f611ae982611ace565b9050919050565b611b01611afc8261150a565b611adf565b82525050565b5f819050919050565b611b21611b1c82611465565b611b07565b82525050565b5f611b328286611af0565b601482019150611b428285611af0565b601482019150611b528284611b10565b60208201915081905094935050505056fea2646970667358221220e1ce7f1c57a6d62d7c8e566241c04213bed868c0967ce7c24b4cc5c5f5d63e4364736f6c634300081a0033",o5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db9190611407565b61065f565b6040516101ed919061144c565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b604051610217919061147d565b60405180910390f35b61023a600480360381019061023591906114c0565b6106e1565b005b61025660048036038101906102519190611545565b6106ee565b005b348015610263575f80fd5b5061027e60048036038101906102799190611545565b610704565b60405161028b919061144c565b60405180910390f35b34801561029f575f80fd5b506102a861071a565b6040516102b5919061147d565b60405180910390f35b6102c6610720565b005b3480156102d3575f80fd5b506102dc610771565b6040516102e99190611592565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115ab565b610798565b604051610325919061147d565b60405180910390f35b348015610339575f80fd5b506103426107b1565b60405161034f91906115e5565b60405180910390f35b348015610363575f80fd5b5061037e6004803603810190610379919061165f565b6107d4565b005b34801561038b575f80fd5b506103a660048036038101906103a1919061165f565b61092c565b6040516103b49291906116aa565b60405180910390f35b6103d760048036038101906103d29190611545565b610960565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa919061165f565b610976565b60405161040c9190611741565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611545565b6109cd565b604051610448919061144c565b60405180910390f35b6104596109e4565b005b610463610a1d565b005b348015610470575f80fd5b50610479610a30565b60405161048691906115e5565b60405180910390f35b34801561049a575f80fd5b506104a3610a58565b6040516104b091906115e5565b60405180910390f35b3480156104c4575f80fd5b506104cd610a7d565b6040516104da919061147d565b60405180910390f35b3480156104ee575f80fd5b5061050960048036038101906105049190611761565b610a83565b604051610516919061144c565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115ab565b610e9b565b604051610552919061144c565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c9190611761565b610eb8565b60405161058e919061144c565b60405180910390f35b3480156105a2575f80fd5b506105ab610ecb565b6040516105b8919061147d565b60405180910390f35b3480156105cc575f80fd5b506105d5610ed1565b6040516105e29190611592565b60405180910390f35b610605600480360381019061060091906115ab565b610ee3565b005b610621600480360381019061061c91906115ab565b610f21565b005b34801561062e575f80fd5b50610649600480360381019061064491906115ab565b610f4a565b604051610656919061147d565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610f63565b5b9050919050565b5f600254905090565b6106eb3382610fdc565b50565b6106f6610feb565b6107008282611022565b5050565b5f818261071085610798565b1614905092915050565b60025481565b5f610729611032565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107dd61103c565b9050805460038255801561080f5760018160011c14303b106108065763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061082091906118af565b90505f8160400151148061083757505f8160600151145b1561086e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160065f6101000a81548163ffffffff021916908360e01c0217905550806040015160028190555080606001516005819055506108f133611065565b508015610927576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610968610feb565b6109728282610fdc565b5050565b60605f67ffffffffffffffff811115610992576109916117c2565b5b6040519080825280601f01601f1916602001820160405280156109c45781602001600182028036833780820191505090505b50905092915050565b5f80826109d985610798565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a25610feb565b610a2e5f61113b565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b5f610a8c610feb565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3591906118ee565b73ffffffffffffffffffffffffffffffffffffffff1614158015610bd85750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610b9492919061195b565b602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd391906119ac565b151514155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1885611201565b610c4e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f815480929190610c6090611a04565b9190505550600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900460e01b87600254604051602401610d17929190611a4b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d819190611aac565b5f604051808303815f865af19150503d805f8114610dba576040519150601f19603f3d011682016040523d82523d5f602084013e610dbf565b606091505b5050905080610dfa576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688600254604051602001610e6a93929190611b27565b604051602081830303815290604052604051610e869190611741565b60405180910390a26001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f610ec284611201565b90509392505050565b60015481565b60065f9054906101000a900460e01b81565b610eeb610feb565b63389a75e1600c52805f526020600c208054421115610f1157636f5e88185f526004601cfd5b5f815550610f1e8161113b565b50565b610f29610feb565b8060601b610f3e57637448fbae5f526004601cfd5b610f478161113b565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fd55750610fd482611263565b5b9050919050565b610fe782825f6112dc565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611020576382b429005f526004601cfd5b565b61102e828260016112dc565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61106d611334565b156110e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110a757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611138565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611143611334565b156111a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506111fe565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561125c5750600554600154105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112d557506112d482611338565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836112fe57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113e6816113b2565b81146113f0575f80fd5b50565b5f81359050611401816113dd565b92915050565b5f6020828403121561141c5761141b6113aa565b5b5f611429848285016113f3565b91505092915050565b5f8115159050919050565b61144681611432565b82525050565b5f60208201905061145f5f83018461143d565b92915050565b5f819050919050565b61147781611465565b82525050565b5f6020820190506114905f83018461146e565b92915050565b61149f81611465565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f602082840312156114d5576114d46113aa565b5b5f6114e2848285016114ac565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611514826114eb565b9050919050565b6115248161150a565b811461152e575f80fd5b50565b5f8135905061153f8161151b565b92915050565b5f806040838503121561155b5761155a6113aa565b5b5f61156885828601611531565b9250506020611579858286016114ac565b9150509250929050565b61158c816113b2565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f602082840312156115c0576115bf6113aa565b5b5f6115cd84828501611531565b91505092915050565b6115df8161150a565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261161f5761161e6115fe565b5b8235905067ffffffffffffffff81111561163c5761163b611602565b5b60208301915083600182028301111561165857611657611606565b5b9250929050565b5f8060208385031215611675576116746113aa565b5b5f83013567ffffffffffffffff811115611692576116916113ae565b5b61169e8582860161160a565b92509250509250929050565b5f6040820190506116bd5f83018561146e565b6116ca60208301846115d6565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611713826116d1565b61171d81856116db565b935061172d8185602086016116eb565b611736816116f9565b840191505092915050565b5f6020820190508181035f8301526117598184611709565b905092915050565b5f805f60408486031215611778576117776113aa565b5b5f61178586828701611531565b935050602084013567ffffffffffffffff8111156117a6576117a56113ae565b5b6117b28682870161160a565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6117f8826116f9565b810181811067ffffffffffffffff82111715611817576118166117c2565b5b80604052505050565b5f6118296113a1565b905061183582826117ef565b919050565b5f6080828403121561184f5761184e6117be565b5b6118596080611820565b90505f61186884828501611531565b5f83015250602061187b848285016113f3565b602083015250604061188f848285016114ac565b60408301525060606118a3848285016114ac565b60608301525092915050565b5f608082840312156118c4576118c36113aa565b5b5f6118d18482850161183a565b91505092915050565b5f815190506118e88161151b565b92915050565b5f60208284031215611903576119026113aa565b5b5f611910848285016118da565b91505092915050565b5f819050919050565b5f819050919050565b5f61194561194061193b84611919565b611922565b611465565b9050919050565b6119558161192b565b82525050565b5f60408201905061196e5f8301856115d6565b61197b602083018461194c565b9392505050565b61198b81611432565b8114611995575f80fd5b50565b5f815190506119a681611982565b92915050565b5f602082840312156119c1576119c06113aa565b5b5f6119ce84828501611998565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0e82611465565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a4057611a3f6119d7565b5b600182019050919050565b5f604082019050611a5e5f8301856115d6565b611a6b602083018461146e565b9392505050565b5f81905092915050565b5f611a86826116d1565b611a908185611a72565b9350611aa08185602086016116eb565b80840191505092915050565b5f611ab78284611a7c565b915081905092915050565b5f8160601b9050919050565b5f611ad882611ac2565b9050919050565b5f611ae982611ace565b9050919050565b611b01611afc8261150a565b611adf565b82525050565b5f819050919050565b611b21611b1c82611465565b611b07565b82525050565b5f611b328286611af0565b601482019150611b428285611af0565b601482019150611b528284611b10565b60208201915081905094935050505056fea2646970667358221220e1ce7f1c57a6d62d7c8e566241c04213bed868c0967ce7c24b4cc5c5f5d63e4364736f6c634300081a0033",l5={},m5={},e0={_format:s5,contractName:p5,sourceName:r5,abi:y5,bytecode:u5,deployedBytecode:o5,linkReferences:l5,deployedLinkReferences:m5},T5="hh-sol-artifact-1",w5="LimitedSignerValidator",v5="contracts/validators/LimitedSignerValidator.sol",M5=[{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"}],I5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161236361028a5f395f610fe601525f61128d01525f61126a01525f6112fc01525f61132001526123635ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d21716710ff17af2ff6e0c564b67a69955b3b16d9106ab352ff6f552b749751f64736f6c634300081a0033",h5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d21716710ff17af2ff6e0c564b67a69955b3b16d9106ab352ff6f552b749751f64736f6c634300081a0033",A5={},g5={},a0={_format:T5,contractName:w5,sourceName:v5,abi:M5,bytecode:I5,deployedBytecode:h5,linkReferences:A5,deployedLinkReferences:g5},O5="hh-sol-artifact-1",R5="SignerValidator",x5="contracts/validators/SignerValidator.sol",C5=[{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"}],_5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611ecf61028a5f395f610f6401525f6110a301525f61108001525f61111201525f6111360152611ecf5ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122008717acf56bd2e77cae440af4190cdc25d338915254361f19975fc59eb3addf964736f6c634300081a0033",z5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611235565b610374565b604051610129919061127a565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112a2565b60405180910390f35b348015610171575f80fd5b5061018c60048036038101906101879190611371565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af9190611444565b61056e565b005b6101be6106e5565b005b3480156101cb575f80fd5b506101e660048036038101906101e1919061151c565b61071e565b6040516101f3919061127a565b60405180910390f35b610204610911565b005b348015610211575f80fd5b5061022c600480360381019061022791906115a0565b610924565b604051610239919061127a565b60405180910390f35b34801561024d575f80fd5b50610256610940565b6040516102699796959493929190611762565b60405180910390f35b34801561027d575f80fd5b5061028661098b565b60405161029391906117e4565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115a0565b6109b3565b005b3480156102cf575f80fd5b506102ea60048036038101906102e5919061195b565b6109fe565b6040516102f791906119db565b60405180910390f35b61031a600480360381019061031591906115a0565b610a67565b005b610336600480360381019061033191906115a0565b610aa5565b005b348015610343575f80fd5b5061035e600480360381019061035991906115a0565b610ace565b60405161036b91906119f4565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610ae7565b5b9050919050565b5f6103f6610b60565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610b6a565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a0d565b5b90506020020160208101906104e19190611a64565b5f808787858181106104f6576104f5611a0d565b5b905060200201602081019061050b91906115a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610ba1565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611b8a565b915091506105e2825f815181106105d5576105d4611a0d565b5b6020026020010151610bca565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a0d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b50505080156106e0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107b59190611c71565b90505f815f01518060200190518101906107cf9190611dcb565b90505f6107e68983604001518986602001516109fe565b905087826040015160ff1611610839578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610830929190611e21565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d181896001610ca09092919063ffffffff16565b610903818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d059092919063ffffffff16565b935050505095945050505050565b610919610b6a565b6109225f610e08565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f000000000000000000000000000000000000000000000000000000000000009650610974610ece565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109bb610b6a565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a5d7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a42959493929190611e48565b60405160208183030381529060405280519060200120610f45565b9050949350505050565b610a6f610b6a565b63389a75e1600c52805f526020600c208054421115610a9557636f5e88185f526004601cfd5b5f815550610aa281610e08565b50565b610aad610b6a565b8060601b610ac257637448fbae5f526004601cfd5b610acb81610e08565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b595750610b5882610fc1565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b9f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bd261103a565b15610c4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610ccb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610cf857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e0157604051835f5260208301516040526040835103610d72576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d6f57600193505f60605282604052505050610e01565b50505b6041835103610db85760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610db657600192505f606052816040525050610e01565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e1061103a565b15610e75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ecb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f4e61103e565b15610f6257610f5b611046565b9050610f9e565b7f00000000000000000000000000000000000000000000000000000000000000009050610f8d61110e565b15610f9d57610f9a611046565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611033575061103282611166565b5b9050919050565b5f90565b5f6001905090565b5f8061105061103e565b1561107e575f8061105f610ece565b91509150818051906020012093508080519060200120925050506110c5565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611214816111e0565b811461121e575f80fd5b50565b5f8135905061122f8161120b565b92915050565b5f6020828403121561124a576112496111d8565b5b5f61125784828501611221565b91505092915050565b5f8115159050919050565b61127481611260565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b61129c816111e0565b82525050565b5f6020820190506112b55f830184611293565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126112dc576112db6112bb565b5b8235905067ffffffffffffffff8111156112f9576112f86112bf565b5b602083019150836020820283011115611315576113146112c3565b5b9250929050565b5f8083601f840112611331576113306112bb565b5b8235905067ffffffffffffffff81111561134e5761134d6112bf565b5b60208301915083602082028301111561136a576113696112c3565b5b9250929050565b5f805f8060408587031215611389576113886111d8565b5b5f85013567ffffffffffffffff8111156113a6576113a56111dc565b5b6113b2878288016112c7565b9450945050602085013567ffffffffffffffff8111156113d5576113d46111dc565b5b6113e18782880161131c565b925092505092959194509250565b5f8083601f840112611404576114036112bb565b5b8235905067ffffffffffffffff811115611421576114206112bf565b5b60208301915083600182028301111561143d5761143c6112c3565b5b9250929050565b5f806020838503121561145a576114596111d8565b5b5f83013567ffffffffffffffff811115611477576114766111dc565b5b611483858286016113ef565b92509250509250929050565b5f819050919050565b6114a18161148f565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114eb826114c2565b9050919050565b6114fb816114e1565b8114611505575f80fd5b50565b5f81359050611516816114f2565b92915050565b5f805f805f60808688031215611535576115346111d8565b5b5f611542888289016114ae565b9550506020611553888289016114ae565b945050604061156488828901611508565b935050606086013567ffffffffffffffff811115611585576115846111dc565b5b611591888289016113ef565b92509250509295509295909350565b5f602082840312156115b5576115b46111d8565b5b5f6115c284828501611508565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6115ff816115cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61164782611605565b611651818561160f565b935061166181856020860161161f565b61166a8161162d565b840191505092915050565b61167e8161148f565b82525050565b61168d816114e1565b82525050565b5f819050919050565b6116a581611693565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116dd8161148f565b82525050565b5f6116ee83836116d4565b60208301905092915050565b5f602082019050919050565b5f611710826116ab565b61171a81856116b5565b9350611725836116c5565b805f5b8381101561175557815161173c88826116e3565b9750611747836116fa565b925050600181019050611728565b5085935050505092915050565b5f60e0820190506117755f83018a6115f6565b8181036020830152611787818961163d565b9050818103604083015261179b818861163d565b90506117aa6060830187611675565b6117b76080830186611684565b6117c460a083018561169c565b81810360c08301526117d68184611706565b905098975050505050505050565b5f6020820190506117f75f830184611684565b92915050565b5f60ff82169050919050565b611812816117fd565b811461181c575f80fd5b50565b5f8135905061182d81611809565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61186d8261162d565b810181811067ffffffffffffffff8211171561188c5761188b611837565b5b80604052505050565b5f61189e6111cf565b90506118aa8282611864565b919050565b5f67ffffffffffffffff8211156118c9576118c8611837565b5b6118d28261162d565b9050602081019050919050565b828183375f83830152505050565b5f6118ff6118fa846118af565b611895565b90508281526020810184848401111561191b5761191a611833565b5b6119268482856118df565b509392505050565b5f82601f830112611942576119416112bb565b5b81356119528482602086016118ed565b91505092915050565b5f805f8060808587031215611973576119726111d8565b5b5f611980878288016114ae565b94505060206119918782880161181f565b93505060406119a287828801611508565b925050606085013567ffffffffffffffff8111156119c3576119c26111dc565b5b6119cf8782880161192e565b91505092959194509250565b5f6020820190506119ee5f83018461169c565b92915050565b5f602082019050611a075f830184611675565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a4381611260565b8114611a4d575f80fd5b50565b5f81359050611a5e81611a3a565b92915050565b5f60208284031215611a7957611a786111d8565b5b5f611a8684828501611a50565b91505092915050565b5f67ffffffffffffffff821115611aa957611aa8611837565b5b602082029050602081019050919050565b5f611acc611ac784611a8f565b611895565b90508083825260208201905060208402830185811115611aef57611aee6112c3565b5b835b81811015611b185780611b048882611508565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b356112bb565b5b8135611b46848260208601611aba565b91505092915050565b5f611b59826114c2565b9050919050565b611b6981611b4f565b8114611b73575f80fd5b50565b5f81359050611b8481611b60565b92915050565b5f8060408385031215611ba057611b9f6111d8565b5b5f83013567ffffffffffffffff811115611bbd57611bbc6111dc565b5b611bc985828601611b22565b9250506020611bda85828601611b76565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c0157611c00611be4565b5b611c0b6040611895565b90505f82013567ffffffffffffffff811115611c2a57611c29611be8565b5b611c368482850161192e565b5f83015250602082013567ffffffffffffffff811115611c5957611c58611be8565b5b611c658482850161192e565b60208301525092915050565b5f60208284031215611c8657611c856111d8565b5b5f82013567ffffffffffffffff811115611ca357611ca26111dc565b5b611caf84828501611bec565b91505092915050565b5f81519050611cc6816114f2565b92915050565b5f611cde611cd9846118af565b611895565b905082815260208101848484011115611cfa57611cf9611833565b5b611d0584828561161f565b509392505050565b5f82601f830112611d2157611d206112bb565b5b8151611d31848260208601611ccc565b91505092915050565b5f81519050611d4881611809565b92915050565b5f60608284031215611d6357611d62611be4565b5b611d6d6060611895565b90505f611d7c84828501611cb8565b5f83015250602082015167ffffffffffffffff811115611d9f57611d9e611be8565b5b611dab84828501611d0d565b6020830152506040611dbf84828501611d3a565b60408301525092915050565b5f60208284031215611de057611ddf6111d8565b5b5f82015167ffffffffffffffff811115611dfd57611dfc6111dc565b5b611e0984828501611d4e565b91505092915050565b611e1b816117fd565b82525050565b5f604082019050611e345f830185611e12565b611e416020830184611675565b9392505050565b5f60a082019050611e5b5f83018861169c565b611e686020830187611675565b611e756040830186611e12565b611e826060830185611684565b611e8f608083018461169c565b969550505050505056fea264697066735822122008717acf56bd2e77cae440af4190cdc25d338915254361f19975fc59eb3addf964736f6c634300081a0033",N5={},E5={},d0={_format:O5,contractName:R5,sourceName:x5,abi:C5,bytecode:_5,deployedBytecode:z5,linkReferences:N5,deployedLinkReferences:E5};function $5(i,s,a){const c=i[s.name];if(typeof c=="function")return c;const y=i[a];return typeof y=="function"?y:p=>s(i,p)}async function L5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new r.ConnectorUnavailableReconnectingError({connector:e});const[d,R]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:R,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new r.ConnectorNotConnectedError;const c=s.chainId??a.chainId,y=await a.connector.getChainId();if(y!==a.chainId)throw new r.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:y});const p=a.connector;if(p.getClient)return p.getClient({chainId:c});const n=r.parseAccount(s.account??a.accounts[0]);if(n.address=r.getAddress(n.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===n.address.toLowerCase()))throw new r.ConnectorAccountNotFoundError({address:n.address,connector:p});const O=i.chains.find(e=>e.id===c),f=await a.connector.getProvider({chainId:c});return r.createClient({account:n,chain:O,name:"Connector Client",transport:e=>r.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:c,connector:y,...p}=s;let n;return typeof a=="object"&&a.type==="local"?n=i.getClient({chainId:c}):n=await L5(i,{account:a,chainId:c,connector:y}),await $5(n,r.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:c?{id:c}:null})}const k5=async function(s,a){var u,o,l,m,T,w,v,M,I,h,A,g;const c=a.privateKey,y=a.mnemonic,p=a.chain;if(!c&&!y)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!r.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[n,O]=r.getDeployableOptions({chain:p,privateKey:c,mnemonic:y}),{config:f,account:e}=n,d=O.id,R=await new b.BoostRegistry({address:null,...n}).deploy(),_=class _ extends b.BoostRegistry{};_.addresses={[d]:R.assertValidAddress()};let x=_;const C=new x({...n,address:R.assertValidAddress()}),t0=await new b.BoostCore({...n,registryAddress:C.assertValidAddress(),protocolFeeReceiver:e.address}).deploy(),c0=await b.getDeployedContractAddress(f,t(f,{abi:F.abi,bytecode:F.bytecode,account:e})),n0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),z=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),i0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),L=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})),s0=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),p0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:H},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:z},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:N},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:E},m),AllowListIncentive:(T=class extends b.AllowListIncentive{},T.bases={[d]:$},T),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(v=class extends b.ERC20Incentive{},v.bases={[d]:k},v),ERC20VariableIncentive:(M=class extends b.ERC20VariableIncentive{},M.bases={[d]:B},M),ERC20VariableCriteriaIncentive:(I=class extends b.ERC20VariableCriteriaIncentive{},I.bases={[d]:S},I),PointsIncentive:(h=class extends b.PointsIncentive{},h.bases={[d]:D},h),SignerValidator:(A=class extends b.SignerValidator{},A.bases={[d]:V},A),LimitedSignerValidator:(g=class extends b.LimitedSignerValidator{},g.bases={[d]:q},g)};for(const[r0,U]of Object.entries(p0))await C.register(U.registryType,r0,U.bases[d]);return{BOOST_CORE_ADDRESS:t0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:C.assertValidAddress(),CONTRACT_ACTION_BASE:c0,EVENT_ACTION_BASE:H,ERC721_MINT_ACTION_BASE:n0,SIMPLE_ALLOWLIST_BASE:z,SIMPLE_DENYLIST_BASE:N,MANAGED_BUDGET_BASE:E,VESTING_BUDGET_BASE:i0,ALLOWLIST_INCENTIVE_BASE:$,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:k,ERC20_VARIABLE_INCENTIVE_BASE:B,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:S,ERC1155_INCENTIVE_BASE:s0,POINTS_INCENTIVE_BASE:D,SIGNER_VALIDATOR_BASE:V,LIMITED_SIGNER_VALIDATOR_BASE:q}};exports.deploy=k5;