[ { "inputs": [ { "internalType": "uint64", "name": "_vrfSubId", "type": "uint64" }, { "internalType": "address", "name": "_vrfCoordinator", "type": "address" }, { "internalType": "bytes32", "name": "_keyHash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "Chad__NotInTheMitingPeriod", "type": "error" }, { "inputs": [], "name": "Chad__TransferFailed", "type": "error" }, { "inputs": [], "name": "Chad__Unauthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "have", "type": "address" }, { "internalType": "address", "name": "want", "type": "address" } ], "name": "OnlyCoordinatorCanFulfill", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BalanceWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "randomWords", "type": "uint256[]" } ], "name": "RequestFulfilled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "numWords", "type": "uint32" } ], "name": "RequestSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "_recipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_uriBase", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "addChadlist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" } ], "name": "addDiscountlist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "chadlist", "outputs": [ { "internalType": "bool", "name": "isAuthorized", "type": "bool" }, { "internalType": "bool", "name": "hasMint", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_sub", "type": "uint64" } ], "name": "changeSubscriptionVRF", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "discountlist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endDate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastRequestId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_numberOfNFTs", "type": "uint256" } ], "name": "mintRandom", "outputs": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "raffle", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "internalType": "uint256[]", "name": "randomWords", "type": "uint256[]" } ], "name": "rawFulfillRandomWords", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "requestIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "s_requests", "outputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "bool", "name": "fulfilled", "type": "bool" }, { "internalType": "bool", "name": "exists", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_date", "type": "uint256" } ], "name": "setEndDate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "name": "setRaffleContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRecipient", "type": "address" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_date", "type": "uint256" } ], "name": "setStartDate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newUriBase", "type": "string" } ], "name": "setUriBase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_vrfSubId", "type": "uint64" }, { "internalType": "bytes32", "name": "_keyHash", "type": "bytes32" } ], "name": "setVRFConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startDate", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" } ], "name": "withdrawBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040526207a120601360006101000a81548163ffffffff021916908363ffffffff1602179055506003601360046101000a81548161ffff021916908361ffff1602179055506001601360066101000a81548163ffffffff021916908363ffffffff16021790555060046013600a6101000a81548163ffffffff021916908363ffffffff1602179055503480156200009757600080fd5b5060405162006676380380620066768339818101604052810190620000bd9190620004b5565b8160405180602001604052806000815250620000df81620002e860201b60201c565b5060016004819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506200013d62000131620002fd60201b60201c565b6200030560201b60201c565b6040518060400160405280600b81526020017f436861642053706f727473000000000000000000000000000000000000000000815250600690816200018391906200078b565b506040518060400160405280600581526020017f434841445300000000000000000000000000000000000000000000000000000081525060079081620001ca91906200078b565b50604051806080016040528060438152602001620066336043913960089081620001f591906200078b565b50671a5e27eef13e00006015819055506714d1120d7b160000601681905550673e733628714200006017819055506729a2241af62c0000601881905550670a688906bd8b00006019819055506706f05b59d3b20000601a819055506729a2241af62c0000601b819055506714d1120d7b160000601c819055508060128190555082600f60146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000872565b8060029081620002f991906200078b565b5050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600067ffffffffffffffff82169050919050565b620003ef81620003d0565b8114620003fb57600080fd5b50565b6000815190506200040f81620003e4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004428262000415565b9050919050565b620004548162000435565b81146200046057600080fd5b50565b600081519050620004748162000449565b92915050565b6000819050919050565b6200048f816200047a565b81146200049b57600080fd5b50565b600081519050620004af8162000484565b92915050565b600080600060608486031215620004d157620004d0620003cb565b5b6000620004e186828701620003fe565b9350506020620004f48682870162000463565b925050604062000507868287016200049e565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200059357607f821691505b602082108103620005a957620005a86200054b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005d4565b6200061f8683620005d4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200066c62000666620006608462000637565b62000641565b62000637565b9050919050565b6000819050919050565b62000688836200064b565b620006a0620006978262000673565b848454620005e1565b825550505050565b600090565b620006b7620006a8565b620006c48184846200067d565b505050565b5b81811015620006ec57620006e0600082620006ad565b600181019050620006ca565b5050565b601f8211156200073b576200070581620005af565b6200071084620005c4565b8101602085101562000720578190505b620007386200072f85620005c4565b830182620006c9565b50505b505050565b600082821c905092915050565b6000620007606000198460080262000740565b1980831691505092915050565b60006200077b83836200074d565b9150826002028217905092915050565b620007968262000511565b67ffffffffffffffff811115620007b257620007b16200051c565b5b620007be82546200057a565b620007cb828285620006f0565b600060209050601f831160018114620008035760008415620007ee578287015190505b620007fa85826200076d565b8655506200086a565b601f1984166200081386620005af565b60005b828110156200083d5784890151825560018201915060208501945060208101905062000816565b868310156200085d578489015162000859601f8916826200074d565b8355505b6001600288020188555050505b505050505050565b608051615d9e620008956000396000818161108f01526110e30152615d9e6000f3fe60806040526004361061022e5760003560e01c80637943c0511161012e578063c24a0f8b116100ab578063f242432a1161006f578063f242432a1461089e578063f2fde38b146108c7578063f75bb9a4146108f0578063f8e93ef914610919578063fc2a88c3146109355761022e565b8063c24a0f8b14610790578063cef6d368146107bb578063d4cca5f1146107f9578063e1101e1e14610824578063e985e9c5146108615761022e565b806395d89b41116100f257806395d89b4114610695578063a168fa89146106c0578063a22cb465146106ff578063b5d2709c14610728578063bd85b039146107535761022e565b80637943c0511461059d57806382ab4628146105c657806382d95df5146106045780638796ba8c1461062d5780638da5cb5b1461066a5761022e565b80632a9e63c6116101bc5780634e1273f4116101805780634e1273f4146104ba5780634f558e79146104f757806366557cf614610534578063715018a61461055d578063756af45f146105745761022e565b80632a9e63c6146103eb5780632eb2c2d61461041457806333c1420a1461043d5780633784f0001461046857806339165520146104915761022e565b80630b97bc86116102035780630b97bc86146103015780630d5169971461032c5780630e89341c1461035c5780631fe543e31461039957806327fc0cff146103c25761022e565b806256c08414610233578062fdd58e1461025c57806301ffc9a71461029957806306fdde03146102d6575b600080fd5b34801561023f57600080fd5b5061025a60048036038101906102559190613e8c565b610960565b005b34801561026857600080fd5b50610283600480360381019061027e9190613eef565b6109ac565b6040516102909190613f3e565b60405180910390f35b3480156102a557600080fd5b506102c060048036038101906102bb9190613fb1565b610a74565b6040516102cd9190613ff9565b60405180910390f35b3480156102e257600080fd5b506102eb610aee565b6040516102f891906140a4565b60405180910390f35b34801561030d57600080fd5b50610316610b7c565b6040516103239190613f3e565b60405180910390f35b610346600480360381019061034191906140c6565b610b82565b6040516103539190613f3e565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906140c6565b611059565b60405161039091906140a4565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb919061423b565b61108d565b005b3480156103ce57600080fd5b506103e960048036038101906103e4919061434c565b61114d565b005b3480156103f757600080fd5b50610412600480360381019061040d9190613e8c565b611168565b005b34801561042057600080fd5b5061043b60048036038101906104369190614436565b61117c565b005b34801561044957600080fd5b5061045261121d565b60405161045f9190614514565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a91906140c6565b611243565b005b34801561049d57600080fd5b506104b860048036038101906104b3919061458a565b611255565b005b3480156104c657600080fd5b506104e160048036038101906104dc919061469a565b611302565b6040516104ee91906147d0565b60405180910390f35b34801561050357600080fd5b5061051e600480360381019061051991906140c6565b61141b565b60405161052b9190613ff9565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190614832565b61142f565b005b34801561056957600080fd5b50610572611463565b005b34801561058057600080fd5b5061059b60048036038101906105969190613e8c565b611477565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614895565b611577565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190613e8c565b6115b3565b6040516105fb9291906148d5565b60405180910390f35b34801561061057600080fd5b5061062b600480360381019061062691906140c6565b6115f1565b005b34801561063957600080fd5b50610654600480360381019061064f91906140c6565b611603565b6040516106619190613f3e565b60405180910390f35b34801561067657600080fd5b5061067f611627565b60405161068c9190614514565b60405180910390f35b3480156106a157600080fd5b506106aa611651565b6040516106b791906140a4565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e291906140c6565b6116df565b6040516106f6939291906148fe565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614961565b611743565b005b34801561073457600080fd5b5061073d611759565b60405161074a91906140a4565b60405180910390f35b34801561075f57600080fd5b5061077a600480360381019061077591906140c6565b6117e7565b6040516107879190613f3e565b60405180910390f35b34801561079c57600080fd5b506107a5611804565b6040516107b29190613f3e565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906140c6565b61180a565b6040516107f09291906149a1565b60405180910390f35b34801561080557600080fd5b5061080e611852565b60405161081b9190614514565b60405180910390f35b34801561083057600080fd5b5061084b60048036038101906108469190613e8c565b611878565b6040516108589190613ff9565b60405180910390f35b34801561086d57600080fd5b50610888600480360381019061088391906149ca565b611898565b6040516108959190613ff9565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c09190614a0a565b61192c565b005b3480156108d357600080fd5b506108ee60048036038101906108e99190613e8c565b6119cd565b005b3480156108fc57600080fd5b506109176004803603810190610912919061458a565b611a50565b005b610933600480360381019061092e9190614aa1565b611b00565b005b34801561094157600080fd5b5061094a611f77565b6040516109579190613f3e565b60405180910390f35b610968611f7d565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390614b5c565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fcef6d368000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae75750610ae682611ffb565b5b9050919050565b60068054610afb90614bab565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2790614bab565b8015610b745780601f10610b4957610100808354040283529160200191610b74565b820191906000526020600020905b815481529060010190602001808311610b5757829003601f168201915b505050505081565b60095481565b6000610b8c6120dd565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610bf1576040517f56b9338500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816009544210158015610c065750600a544211155b15610d0a5760018103610c8e57600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c7957601a54341015610c7457600080fd5b610c89565b601954341015610c8857600080fd5b5b610d05565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610cf457601c54341015610cef57600080fd5b610d04565b601b54341015610d0357600080fd5b5b5b610d3c565b6040517f806cb10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30601254600f60149054906101000a900467ffffffffffffffff16601360049054906101000a900461ffff16601360009054906101000a900463ffffffff1660018914610dd8576013600a9054906101000a900463ffffffff16610dec565b601360069054906101000a900463ffffffff165b6040518663ffffffff1660e01b8152600401610e0c959493929190614c36565b6020604051808303816000875af1158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190614c9e565b915060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160011515815250600e600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160000160156101000a81548160ff02191690831515021790555090505060108290806001815401808255809150506001900390600052602060002001600090919091909150558160118190555060018303610fad577fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee82601360069054906101000a900463ffffffff16604051610fa0929190614ccb565b60405180910390a1610ff9565b7fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee826013600a9054906101000a900463ffffffff16604051610ff0929190614ccb565b60405180910390a15b33601d600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061105461212c565b919050565b6060600861106683612136565b604051602001611077929190614e14565b6040516020818303038152906040529050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461113f57337f00000000000000000000000000000000000000000000000000000000000000006040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401611136929190614e43565b60405180910390fd5b6111498282612204565b5050565b611155611f7d565b80600890816111649190615003565b5050565b611170611f7d565b6111798161290d565b50565b61118461298a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806111ca57506111c9856111c461298a565b611898565b5b611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090615147565b60405180910390fd5b6112168585858585612992565b5050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124b611f7d565b80600a8190555050565b61125d611f7d565b60005b828290508110156112fd576001600d600085858581811061128457611283615167565b5b90506020020160208101906112999190613e8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112f5906151c5565b915050611260565b505050565b60608151835114611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f9061527f565b60405180910390fd5b6000835167ffffffffffffffff811115611365576113646140f8565b5b6040519080825280602002602001820160405280156113935781602001602082028036833780820191505090505b50905060005b8451811015611410576113e08582815181106113b8576113b7615167565b5b60200260200101518583815181106113d3576113d2615167565b5b60200260200101516109ac565b8282815181106113f3576113f2615167565b5b60200260200101818152505080611409906151c5565b9050611399565b508091505092915050565b600080611427836117e7565b119050919050565b611437611f7d565b80600f60146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b61146b611f7d565b6114756000612cb3565b565b61147f611f7d565b6114876120dd565b600047905060008273ffffffffffffffffffffffffffffffffffffffff16826040516114b2906152d0565b60006040518083038185875af1925050503d80600081146114ef576040519150601f19603f3d011682016040523d82523d6000602084013e6114f4565b606091505b50508091505080611531576040517faf67691e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8777844761eb456b028cf7f87fc8dcb146ad8eeafbc6f80f2d006e5cd9e5a74583836040516115629291906149a1565b60405180910390a1505061157461212c565b50565b61157f611f7d565b8060128190555081600f60146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600c6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6115f9611f7d565b8060098190555050565b6010818154811061161357600080fd5b906000526020600020016000915090505481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805461165e90614bab565b80601f016020809104026020016040519081016040528092919081815260200182805461168a90614bab565b80156116d75780601f106116ac576101008083540402835291602001916116d7565b820191906000526020600020905b8154815290600101906020018083116116ba57829003601f168201915b505050505081565b600e6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16905083565b61175561174e61298a565b8383612d79565b5050565b6008805461176690614bab565b80601f016020809104026020016040519081016040528092919081815260200182805461179290614bab565b80156117df5780601f106117b4576101008083540402835291602001916117df565b820191906000526020600020905b8154815290600101906020018083116117c257829003601f168201915b505050505081565b600060036000838152602001908152602001600020549050919050565b600a5481565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606460068561183f91906152e5565b6118499190615356565b91509150915091565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61193461298a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061197a57506119798561197461298a565b611898565b5b6119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b090615147565b60405180910390fd5b6119c68585858585612ee5565b5050505050565b6119d5611f7d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b906153f9565b60405180910390fd5b611a4d81612cb3565b50565b611a58611f7d565b60005b82829050811015611afb576001600c6000858585818110611a7f57611a7e615167565b5b9050602002016020810190611a949190613e8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508080611af3906151c5565b915050611a5b565b505050565b611b086120dd565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611b6d576040517f56b9338500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806009544210158015611b825750600a544211155b611b8b57600080fd5b600181511115611d2057600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bfb57601854341015611bf657600080fd5b611d1b565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611d0a57600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1615611caa57600080fd5b6001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908315150217905550611d1a565b601754341015611d1957600080fd5b5b5b611d97565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d8657601654341015611d8157600080fd5b611d96565b601554341015611d9557600080fd5b5b5b600182511115611ea6576004825114611daf57600080fd5b6000600467ffffffffffffffff811115611dcc57611dcb6140f8565b5b604051908082528060200260200182016040528015611dfa5781602001602082028036833780820191505090505b509050600181600081518110611e1357611e12615167565b5b602002602001018181525050600181600181518110611e3557611e34615167565b5b602002602001018181525050600181600281518110611e5757611e56615167565b5b602002602001018181525050600181600381518110611e7957611e78615167565b5b602002602001018181525050611ea033848360405180602001604052806000815250613180565b50611ede565b611edd3383600081518110611ebe57611ebd615167565b5b60200260200101516001604051806020016040528060008152506133ac565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375936157336040518263ffffffff1660e01b8152600401611f399190614514565b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b5050505050611f7461212c565b50565b60115481565b611f8561298a565b73ffffffffffffffffffffffffffffffffffffffff16611fa3611627565b73ffffffffffffffffffffffffffffffffffffffff1614611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090615465565b60405180910390fd5b565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120c657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120d657506120d58261355c565b5b9050919050565b600260045403612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906154d1565b60405180910390fd5b6002600481905550565b6001600481905550565b606060006001612145846135c6565b01905060008167ffffffffffffffff811115612164576121636140f8565b5b6040519080825280601f01601f1916602001820160405280156121965781602001600182028036833780820191505090505b509050600082602001820190505b6001156121f9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816121ed576121ec615327565b5b049450600085036121a4575b819350505050919050565b600e600083815260200190815260200160002060000160159054906101000a900460ff1661223157600080fd5b6000600467ffffffffffffffff81111561224e5761224d6140f8565b5b60405190808252806020026020018201604052801561227c5781602001602082028036833780820191505090505b5090506001825111156126785760005b825181101561240b5760008060208584815181106122ad576122ac615167565b5b60200260200101516122bf91906154f1565b9050601e811015612362575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61230d858460026122fd91906152e5565b846123089190615522565b613719565b131561232657818061231e906151c5565b9250506122cb565b81600261233391906152e5565b8161233e9190615522565b84848151811061235157612350615167565b5b6020026020010181815250506123f6565b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6123a58584600261239591906152e5565b846123a09190615556565b613719565b13156123be5781806123b6906151c5565b925050612363565b8160026123cb91906152e5565b816123d69190615556565b8484815181106123e9576123e8615167565b5b6020026020010181815250505b50508080612403906151c5565b91505061228c565b506000600467ffffffffffffffff811115612429576124286140f8565b5b6040519080825280602002602001820160405280156124575781602001602082028036833780820191505090505b5090508160008151811061246e5761246d615167565b5b60200260200101518160008151811061248a57612489615167565b5b602002602001018181525050816001815181106124aa576124a9615167565b5b6020026020010151816001815181106124c6576124c5615167565b5b602002602001018181525050816002815181106124e6576124e5615167565b5b60200260200101518160028151811061250257612501615167565b5b6020026020010181815250508160038151811061252257612521615167565b5b60200260200101518160038151811061253e5761253d615167565b5b6020026020010181815250506000600467ffffffffffffffff811115612567576125666140f8565b5b6040519080825280602002602001820160405280156125955781602001602082028036833780820191505090505b5090506001816000815181106125ae576125ad615167565b5b6020026020010181815250506001816001815181106125d0576125cf615167565b5b6020026020010181815250506001816002815181106125f2576125f1615167565b5b60200260200101818152505060018160038151811061261457612613615167565b5b602002602001018181525050612671600e600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838360405180602001604052806000815250613180565b505061280f565b60006126846065613792565b9050601481106126db576014836000815181106126a4576126a3615167565b5b60200260200101516126b691906154f1565b826000815181106126ca576126c9615167565b5b6020026020010181815250506127a0565b6014811080156126ec575060058110155b1561274a576014600a8460008151811061270957612708615167565b5b602002602001015161271b91906154f1565b6127259190615522565b8260008151811061273957612738615167565b5b60200260200101818152505061279f565b601e60028460008151811061276257612761615167565b5b602002602001015161277491906154f1565b61277e9190615522565b8260008151811061279257612791615167565b5b6020026020010181815250505b5b61280d600e600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000815181106127ee576127ed615167565b5b60200260200101516001604051806020016040528060008152506133ac565b505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375936157601d600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161289d9190614514565b600060405180830381600087803b1580156128b757600080fd5b505af11580156128cb573d6000803e3d6000fd5b505050507ffe2e2d779dba245964d4e3ef9b994be63856fd568bf7d3ca9e224755cb1bd54d838360405161290092919061558a565b60405180910390a1505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361294657600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b81518351146129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cd9061562c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c906156be565b60405180910390fd5b6000612a4f61298a565b9050612a5f8187878787876137d9565b60005b8451811015612c10576000858281518110612a8057612a7f615167565b5b602002602001015190506000858381518110612a9f57612a9e615167565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3790615750565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf59190615522565b9250508190555050505080612c09906151c5565b9050612a62565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612c87929190615770565b60405180910390a4612c9d8187878787876137ef565b612cab8187878787876137f7565b505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde90615819565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612ed89190613ff9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b906156be565b60405180910390fd5b6000612f5e61298a565b90506000612f6b856139ce565b90506000612f78856139ce565b9050612f888389898585896137d9565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508581101561301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301690615750565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130d49190615522565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051613151929190615839565b60405180910390a4613167848a8a86868a6137ef565b613175848a8a8a8a8a613a48565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036131ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e6906158d4565b60405180910390fd5b8151835114613233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322a9061562c565b60405180910390fd5b600061323d61298a565b905061324e816000878787876137d9565b60005b84518110156133075783818151811061326d5761326c615167565b5b602002602001015160008087848151811061328b5761328a615167565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132ed9190615522565b9250508190555080806132ff906151c5565b915050613251565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161337f929190615770565b60405180910390a4613396816000878787876137ef565b6133a5816000878787876137f7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361341b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613412906158d4565b60405180910390fd5b600061342561298a565b90506000613432856139ce565b9050600061343f856139ce565b9050613450836000898585896137d9565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134af9190615522565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161352d929190615839565b60405180910390a4613544836000898585896137ef565b61355383600089898989613a48565b50505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613624577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161361a57613619615327565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613661576d04ee2d6d415b85acef8100000000838161365757613656615327565b5b0492506020810190505b662386f26fc10000831061369057662386f26fc10000838161368657613685615327565b5b0492506010810190505b6305f5e10083106136b9576305f5e10083816136af576136ae615327565b5b0492506008810190505b61271083106136de5761271083816136d4576136d3615327565b5b0492506004810190505b6064831061370157606483816136f7576136f6615327565b5b0492506002810190505b600a8310613710576001810190505b80915050919050565b600080600090505b8351811015613767578284828151811061373e5761373d615167565b5b602002602001015103613754578091505061378c565b808061375f906151c5565b915050613721565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b92915050565b600080824244336040516020016137ab9392919061595d565b6040516020818303038152906040528051906020012060001c6137ce91906154f1565b905080915050919050565b6137e7868686868686613c1f565b505050505050565b505050505050565b6138168473ffffffffffffffffffffffffffffffffffffffff16613def565b156139c6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161385c9594939291906159ef565b6020604051808303816000875af192505050801561389857506040513d601f19601f820116820180604052508101906138959190615a6c565b60015b61393d576138a4615aa6565b806308c379a00361390057506138b8615ac8565b806138c35750613902565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f791906140a4565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393490615bca565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146139c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139bb90615c5c565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156139ed576139ec6140f8565b5b604051908082528060200260200182016040528015613a1b5781602001602082028036833780820191505090505b5090508281600081518110613a3357613a32615167565b5b60200260200101818152505080915050919050565b613a678473ffffffffffffffffffffffffffffffffffffffff16613def565b15613c17578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401613aad959493929190615c7c565b6020604051808303816000875af1925050508015613ae957506040513d601f19601f82011682018060405250810190613ae69190615a6c565b60015b613b8e57613af5615aa6565b806308c379a003613b515750613b09615ac8565b80613b145750613b53565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4891906140a4565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b8590615bca565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0c90615c5c565b60405180910390fd5b505b505050505050565b613c2d868686868686613e12565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613cde5760005b8351811015613cdc57828181518110613c8057613c7f615167565b5b602002602001015160036000868481518110613c9f57613c9e615167565b5b602002602001015181526020019081526020016000206000828254613cc49190615522565b9250508190555080613cd5906151c5565b9050613c64565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613de75760005b8351811015613de5576000848281518110613d3357613d32615167565b5b602002602001015190506000848381518110613d5257613d51615167565b5b6020026020010151905060006003600084815260200190815260200160002054905081811015613db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dae90615d48565b60405180910390fd5b818103600360008581526020019081526020016000208190555050505080613dde906151c5565b9050613d15565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e5982613e2e565b9050919050565b613e6981613e4e565b8114613e7457600080fd5b50565b600081359050613e8681613e60565b92915050565b600060208284031215613ea257613ea1613e24565b5b6000613eb084828501613e77565b91505092915050565b6000819050919050565b613ecc81613eb9565b8114613ed757600080fd5b50565b600081359050613ee981613ec3565b92915050565b60008060408385031215613f0657613f05613e24565b5b6000613f1485828601613e77565b9250506020613f2585828601613eda565b9150509250929050565b613f3881613eb9565b82525050565b6000602082019050613f536000830184613f2f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613f8e81613f59565b8114613f9957600080fd5b50565b600081359050613fab81613f85565b92915050565b600060208284031215613fc757613fc6613e24565b5b6000613fd584828501613f9c565b91505092915050565b60008115159050919050565b613ff381613fde565b82525050565b600060208201905061400e6000830184613fea565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561404e578082015181840152602081019050614033565b60008484015250505050565b6000601f19601f8301169050919050565b600061407682614014565b614080818561401f565b9350614090818560208601614030565b6140998161405a565b840191505092915050565b600060208201905081810360008301526140be818461406b565b905092915050565b6000602082840312156140dc576140db613e24565b5b60006140ea84828501613eda565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141308261405a565b810181811067ffffffffffffffff8211171561414f5761414e6140f8565b5b80604052505050565b6000614162613e1a565b905061416e8282614127565b919050565b600067ffffffffffffffff82111561418e5761418d6140f8565b5b602082029050602081019050919050565b600080fd5b60006141b76141b284614173565b614158565b905080838252602082019050602084028301858111156141da576141d961419f565b5b835b8181101561420357806141ef8882613eda565b8452602084019350506020810190506141dc565b5050509392505050565b600082601f830112614222576142216140f3565b5b81356142328482602086016141a4565b91505092915050565b6000806040838503121561425257614251613e24565b5b600061426085828601613eda565b925050602083013567ffffffffffffffff81111561428157614280613e29565b5b61428d8582860161420d565b9150509250929050565b600080fd5b600067ffffffffffffffff8211156142b7576142b66140f8565b5b6142c08261405a565b9050602081019050919050565b82818337600083830152505050565b60006142ef6142ea8461429c565b614158565b90508281526020810184848401111561430b5761430a614297565b5b6143168482856142cd565b509392505050565b600082601f830112614333576143326140f3565b5b81356143438482602086016142dc565b91505092915050565b60006020828403121561436257614361613e24565b5b600082013567ffffffffffffffff8111156143805761437f613e29565b5b61438c8482850161431e565b91505092915050565b600067ffffffffffffffff8211156143b0576143af6140f8565b5b6143b98261405a565b9050602081019050919050565b60006143d96143d484614395565b614158565b9050828152602081018484840111156143f5576143f4614297565b5b6144008482856142cd565b509392505050565b600082601f83011261441d5761441c6140f3565b5b813561442d8482602086016143c6565b91505092915050565b600080600080600060a0868803121561445257614451613e24565b5b600061446088828901613e77565b955050602061447188828901613e77565b945050604086013567ffffffffffffffff81111561449257614491613e29565b5b61449e8882890161420d565b935050606086013567ffffffffffffffff8111156144bf576144be613e29565b5b6144cb8882890161420d565b925050608086013567ffffffffffffffff8111156144ec576144eb613e29565b5b6144f888828901614408565b9150509295509295909350565b61450e81613e4e565b82525050565b60006020820190506145296000830184614505565b92915050565b600080fd5b60008083601f84011261454a576145496140f3565b5b8235905067ffffffffffffffff8111156145675761456661452f565b5b6020830191508360208202830111156145835761458261419f565b5b9250929050565b600080602083850312156145a1576145a0613e24565b5b600083013567ffffffffffffffff8111156145bf576145be613e29565b5b6145cb85828601614534565b92509250509250929050565b600067ffffffffffffffff8211156145f2576145f16140f8565b5b602082029050602081019050919050565b6000614616614611846145d7565b614158565b905080838252602082019050602084028301858111156146395761463861419f565b5b835b81811015614662578061464e8882613e77565b84526020840193505060208101905061463b565b5050509392505050565b600082601f830112614681576146806140f3565b5b8135614691848260208601614603565b91505092915050565b600080604083850312156146b1576146b0613e24565b5b600083013567ffffffffffffffff8111156146cf576146ce613e29565b5b6146db8582860161466c565b925050602083013567ffffffffffffffff8111156146fc576146fb613e29565b5b6147088582860161420d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61474781613eb9565b82525050565b6000614759838361473e565b60208301905092915050565b6000602082019050919050565b600061477d82614712565b614787818561471d565b93506147928361472e565b8060005b838110156147c35781516147aa888261474d565b97506147b583614765565b925050600181019050614796565b5085935050505092915050565b600060208201905081810360008301526147ea8184614772565b905092915050565b600067ffffffffffffffff82169050919050565b61480f816147f2565b811461481a57600080fd5b50565b60008135905061482c81614806565b92915050565b60006020828403121561484857614847613e24565b5b60006148568482850161481d565b91505092915050565b6000819050919050565b6148728161485f565b811461487d57600080fd5b50565b60008135905061488f81614869565b92915050565b600080604083850312156148ac576148ab613e24565b5b60006148ba8582860161481d565b92505060206148cb85828601614880565b9150509250929050565b60006040820190506148ea6000830185613fea565b6148f76020830184613fea565b9392505050565b60006060820190506149136000830186614505565b6149206020830185613fea565b61492d6040830184613fea565b949350505050565b61493e81613fde565b811461494957600080fd5b50565b60008135905061495b81614935565b92915050565b6000806040838503121561497857614977613e24565b5b600061498685828601613e77565b92505060206149978582860161494c565b9150509250929050565b60006040820190506149b66000830185614505565b6149c36020830184613f2f565b9392505050565b600080604083850312156149e1576149e0613e24565b5b60006149ef85828601613e77565b9250506020614a0085828601613e77565b9150509250929050565b600080600080600060a08688031215614a2657614a25613e24565b5b6000614a3488828901613e77565b9550506020614a4588828901613e77565b9450506040614a5688828901613eda565b9350506060614a6788828901613eda565b925050608086013567ffffffffffffffff811115614a8857614a87613e29565b5b614a9488828901614408565b9150509295509295909350565b600060208284031215614ab757614ab6613e24565b5b600082013567ffffffffffffffff811115614ad557614ad4613e29565b5b614ae18482850161420d565b91505092915050565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000614b46602a8361401f565b9150614b5182614aea565b604082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bc357607f821691505b602082108103614bd657614bd5614b7c565b5b50919050565b614be58161485f565b82525050565b614bf4816147f2565b82525050565b600061ffff82169050919050565b614c1181614bfa565b82525050565b600063ffffffff82169050919050565b614c3081614c17565b82525050565b600060a082019050614c4b6000830188614bdc565b614c586020830187614beb565b614c656040830186614c08565b614c726060830185614c27565b614c7f6080830184614c27565b9695505050505050565b600081519050614c9881613ec3565b92915050565b600060208284031215614cb457614cb3613e24565b5b6000614cc284828501614c89565b91505092915050565b6000604082019050614ce06000830185613f2f565b614ced6020830184614c27565b9392505050565b600081905092915050565b60008190508160005260206000209050919050565b60008154614d2181614bab565b614d2b8186614cf4565b94506001821660008114614d465760018114614d5b57614d8e565b60ff1983168652811515820286019350614d8e565b614d6485614cff565b60005b83811015614d8657815481890152600182019150602081019050614d67565b838801955050505b50505092915050565b6000614da282614014565b614dac8185614cf4565b9350614dbc818560208601614030565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000614dfe600583614cf4565b9150614e0982614dc8565b600582019050919050565b6000614e208285614d14565b9150614e2c8284614d97565b9150614e3782614df1565b91508190509392505050565b6000604082019050614e586000830185614505565b614e656020830184614505565b9392505050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614eb97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614e7c565b614ec38683614e7c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000614f00614efb614ef684613eb9565b614edb565b613eb9565b9050919050565b6000819050919050565b614f1a83614ee5565b614f2e614f2682614f07565b848454614e89565b825550505050565b600090565b614f43614f36565b614f4e818484614f11565b505050565b5b81811015614f7257614f67600082614f3b565b600181019050614f54565b5050565b601f821115614fb757614f8881614cff565b614f9184614e6c565b81016020851015614fa0578190505b614fb4614fac85614e6c565b830182614f53565b50505b505050565b600082821c905092915050565b6000614fda60001984600802614fbc565b1980831691505092915050565b6000614ff38383614fc9565b9150826002028217905092915050565b61500c82614014565b67ffffffffffffffff811115615025576150246140f8565b5b61502f8254614bab565b61503a828285614f76565b600060209050601f83116001811461506d576000841561505b578287015190505b6150658582614fe7565b8655506150cd565b601f19841661507b86614cff565b60005b828110156150a35784890151825560018201915060208501945060208101905061507e565b868310156150c057848901516150bc601f891682614fc9565b8355505b6001600288020188555050505b505050505050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b6000615131602e8361401f565b915061513c826150d5565b604082019050919050565b6000602082019050818103600083015261516081615124565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151d082613eb9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361520257615201615196565b5b600182019050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b600061526960298361401f565b91506152748261520d565b604082019050919050565b600060208201905081810360008301526152988161525c565b9050919050565b600081905092915050565b50565b60006152ba60008361529f565b91506152c5826152aa565b600082019050919050565b60006152db826152ad565b9150819050919050565b60006152f082613eb9565b91506152fb83613eb9565b925082820261530981613eb9565b915082820484148315176153205761531f615196565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061536182613eb9565b915061536c83613eb9565b92508261537c5761537b615327565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e360268361401f565b91506153ee82615387565b604082019050919050565b60006020820190508181036000830152615412816153d6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061544f60208361401f565b915061545a82615419565b602082019050919050565b6000602082019050818103600083015261547e81615442565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006154bb601f8361401f565b91506154c682615485565b602082019050919050565b600060208201905081810360008301526154ea816154ae565b9050919050565b60006154fc82613eb9565b915061550783613eb9565b92508261551757615516615327565b5b828206905092915050565b600061552d82613eb9565b915061553883613eb9565b92508282019050808211156155505761554f615196565b5b92915050565b600061556182613eb9565b915061556c83613eb9565b925082820390508181111561558457615583615196565b5b92915050565b600060408201905061559f6000830185613f2f565b81810360208301526155b18184614772565b90509392505050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600061561660288361401f565b9150615621826155ba565b604082019050919050565b6000602082019050818103600083015261564581615609565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156a860258361401f565b91506156b38261564c565b604082019050919050565b600060208201905081810360008301526156d78161569b565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b600061573a602a8361401f565b9150615745826156de565b604082019050919050565b600060208201905081810360008301526157698161572d565b9050919050565b6000604082019050818103600083015261578a8185614772565b9050818103602083015261579e8184614772565b90509392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b600061580360298361401f565b915061580e826157a7565b604082019050919050565b60006020820190508181036000830152615832816157f6565b9050919050565b600060408201905061584e6000830185613f2f565b61585b6020830184613f2f565b9392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006158be60218361401f565b91506158c982615862565b604082019050919050565b600060208201905081810360008301526158ed816158b1565b9050919050565b6000819050919050565b61590f61590a82613eb9565b6158f4565b82525050565b60008160601b9050919050565b600061592d82615915565b9050919050565b600061593f82615922565b9050919050565b61595761595282613e4e565b615934565b82525050565b600061596982866158fe565b60208201915061597982856158fe565b6020820191506159898284615946565b601482019150819050949350505050565b600081519050919050565b600082825260208201905092915050565b60006159c18261599a565b6159cb81856159a5565b93506159db818560208601614030565b6159e48161405a565b840191505092915050565b600060a082019050615a046000830188614505565b615a116020830187614505565b8181036040830152615a238186614772565b90508181036060830152615a378185614772565b90508181036080830152615a4b81846159b6565b90509695505050505050565b600081519050615a6681613f85565b92915050565b600060208284031215615a8257615a81613e24565b5b6000615a9084828501615a57565b91505092915050565b60008160e01c9050919050565b600060033d1115615ac55760046000803e615ac2600051615a99565b90505b90565b600060443d10615b5557615ada613e1a565b60043d036004823e80513d602482011167ffffffffffffffff82111715615b02575050615b55565b808201805167ffffffffffffffff811115615b205750505050615b55565b80602083010160043d038501811115615b3d575050505050615b55565b615b4c82602001850186614127565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000615bb460348361401f565b9150615bbf82615b58565b604082019050919050565b60006020820190508181036000830152615be381615ba7565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000615c4660288361401f565b9150615c5182615bea565b604082019050919050565b60006020820190508181036000830152615c7581615c39565b9050919050565b600060a082019050615c916000830188614505565b615c9e6020830187614505565b615cab6040830186613f2f565b615cb86060830185613f2f565b8181036080830152615cca81846159b6565b90509695505050505050565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b6000615d3260288361401f565b9150615d3d82615cd6565b604082019050919050565b60006020820190508181036000830152615d6181615d25565b905091905056fea26469706673582212202f33f4761dd05a3eba5a1f5f22026390ce810fec3ee8b1f7636259ed6a33106b64736f6c63430008110033697066733a2f2f6261667962656961336d34773378636966376273336733356d677068676e77726f7567756e793336736f36663537687a697733676f6273747074792f000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000d5d517abe5cf79b7e95ec98db0f0277788aff63489630569c9567e43c4fe7b1633258df9f2531b62f2352fa721cf3162ee4ecb46