[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "address", "name": "_HoshiNFTAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "HoshiNFTContract", "outputs": [ { "internalType": "contract HoshiNFT", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKENS_PER_ETH", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "depositETH", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256", "name": "totalAmount", "type": "uint256" } ], "name": "distributeTokensEqually", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getContractETHBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "totalAmount", "type": "uint256" } ], "name": "likePost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "liquidityPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintTokens", "outputs": [], "stateMutability": "nonpayable", "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newFee", "type": "uint256" } ], "name": "setSubscriptionFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "subscribeCreator", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "subscribedCreators", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "subscriptionFeeETH", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "gasFee", "type": "uint256" } ], "name": "transferAndCoverGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "unwrapTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052620f4240600855348015610016575f80fd5b50604051612d19380380612d19833981810160405281019061003891906102ef565b816040518060400160405280600a81526020017f486f736869546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f485354000000000000000000000000000000000000000000000000000000000081525081600390816100b49190610567565b5080600490816100c49190610567565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610137575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161012e9190610645565b60405180910390fd5b610146816101ce60201b60201c565b503060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061065e565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102be82610295565b9050919050565b6102ce816102b4565b81146102d8575f80fd5b50565b5f815190506102e9816102c5565b92915050565b5f806040838503121561030557610304610291565b5b5f610312858286016102db565b9250506020610323858286016102db565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103a857607f821691505b6020821081036103bb576103ba610364565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261041d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103e2565b61042786836103e2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61046b6104666104618461043f565b610448565b61043f565b9050919050565b5f819050919050565b61048483610451565b61049861049082610472565b8484546103ee565b825550505050565b5f90565b6104ac6104a0565b6104b781848461047b565b505050565b5b818110156104da576104cf5f826104a4565b6001810190506104bd565b5050565b601f82111561051f576104f0816103c1565b6104f9846103d3565b81016020851015610508578190505b61051c610514856103d3565b8301826104bc565b50505b505050565b5f82821c905092915050565b5f61053f5f1984600802610524565b1980831691505092915050565b5f6105578383610530565b9150826002028217905092915050565b6105708261032d565b67ffffffffffffffff81111561058957610588610337565b5b6105938254610391565b61059e8282856104de565b5f60209050601f8311600181146105cf575f84156105bd578287015190505b6105c7858261054c565b86555061062e565b601f1984166105dd866103c1565b5f5b82811015610604578489015182556001820191506020850194506020810190506105df565b86831015610621578489015161061d601f891682610530565b8355505b6001600288020188555050505b505050505050565b61063f816102b4565b82525050565b5f6020820190506106585f830184610636565b92915050565b6126ae8061066b5f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063adcdbec411610089578063ef98fbd911610063578063ef98fbd9146105cd578063f0dda65c14610609578063f2fde38b14610631578063f6326fb314610659576101c1565b8063adcdbec41461053f578063bc6e660414610567578063dd62ed3e14610591576101c1565b80638c89a0ad116100c55780638c89a0ad146104855780638da5cb5b146104af57806395d89b41146104d9578063a9059cbb14610503576101c1565b8063715018a61461043d57806379cc679014610453578063886a44681461047b576101c1565b8063472f4384116101585780635874ac1f116101325780635874ac1f14610387578063665a11ca146103af5780636ac84956146103d957806370a0823114610401576101c1565b8063472f43841461030b578063536bb1e91461033557806353dbbf401461035d576101c1565b806323b872dd1161019457806323b872dd14610255578063313ce5671461029157806342746ec4146102bb57806342966c68146102e3576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610663565b6040516101e69190611aa7565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190611b65565b6106f3565b6040516102229190611bbd565b60405180910390f35b348015610236575f80fd5b5061023f610715565b60405161024c9190611be5565b60405180910390f35b348015610260575f80fd5b5061027b60048036038101906102769190611bfe565b61071e565b6040516102889190611bbd565b60405180910390f35b34801561029c575f80fd5b506102a561074c565b6040516102b29190611c69565b60405180910390f35b3480156102c6575f80fd5b506102e160048036038101906102dc9190611c82565b610754565b005b3480156102ee575f80fd5b5061030960048036038101906103049190611cc0565b610b1c565b005b348015610316575f80fd5b5061031f610b30565b60405161032c9190611d46565b60405180910390f35b348015610340575f80fd5b5061035b60048036038101906103569190611e9f565b610b55565b005b348015610368575f80fd5b50610371610cc3565b60405161037e9190611be5565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611cc0565b610cc9565b005b3480156103ba575f80fd5b506103c3610dfa565b6040516103d09190611f08565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa9190611cc0565b610e1f565b005b34801561040c575f80fd5b5061042760048036038101906104229190611f21565b610e31565b6040516104349190611be5565b60405180910390f35b348015610448575f80fd5b50610451610e76565b005b34801561045e575f80fd5b5061047960048036038101906104749190611b65565b610e89565b005b610483610ea9565b005b348015610490575f80fd5b50610499610fa9565b6040516104a69190611be5565b60405180910390f35b3480156104ba575f80fd5b506104c3610fb0565b6040516104d09190611f08565b60405180910390f35b3480156104e4575f80fd5b506104ed610fd8565b6040516104fa9190611aa7565b60405180910390f35b34801561050e575f80fd5b5061052960048036038101906105249190611b65565b611068565b6040516105369190611bbd565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190611f4c565b611085565b005b348015610572575f80fd5b5061057b6110ea565b6040516105889190611be5565b60405180910390f35b34801561059c575f80fd5b506105b760048036038101906105b29190611f9c565b6110f2565b6040516105c49190611be5565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190611f21565b611174565b6040516106009190611bbd565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190611b65565b611191565b005b34801561063c575f80fd5b5061065760048036038101906106529190611f21565b6111a7565b005b61066161122b565b005b60606003805461067290612007565b80601f016020809104026020016040519081016040528092919081815260200182805461069e90612007565b80156106e95780601f106106c0576101008083540402835291602001916106e9565b820191905f5260205f20905b8154815290600101906020018083116106cc57829003601f168201915b5050505050905090565b5f806106fd61126c565b905061070a818585611273565b600191505092915050565b5f600254905090565b5f8061072861126c565b9050610735858285611285565b610740858585611317565b60019150509392505050565b5f6012905090565b5f8290505f8290508261076633610e31565b10156107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90612081565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663242a0087846040518263ffffffff1660e01b81526004016108029190611be5565b5f60405180830381865afa15801561081c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108449190612173565b90505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382557178856040518263ffffffff1660e01b81526004016108a19190611be5565b5f60405180830381865afa1580156108bb573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108e39190612173565b90508051825114610929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109209061222a565b60405180910390fd5b610934333087611317565b5f5b8251811015610a6b575f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161099a9190611be5565b602060405180830381865afa1580156109b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d9919061225c565b90505f8383815181106109ef576109ee612287565b5b602002602001015190505f816064610a0791906122e1565b90505f60648289610a189190612314565b610a229190612382565b9050610a2f308583611317565b8088610a3b91906122e1565b9750868581518110610a5057610a4f612287565b5b60200260200101519850505050508080600101915050610936565b505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b8152600401610ac79190611be5565b602060405180830381865afa158015610ae2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b06919061225c565b9050610b13308286611317565b50505050505050565b610b2d610b2761126c565b82611407565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b5d611486565b5f825111610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b97906123fc565b60405180910390fd5b5f8111610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd99061248a565b60405180910390fd5b5f825182610bf09190612382565b90505f5b8351811015610c5057610c4360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858381518110610c3557610c34612287565b5b602002602001015184611317565b8080600101915050610bf4565b505f835183610c5f91906124a8565b90505f811115610cbd57610cbc60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560018751610c9d91906122e1565b81518110610cae57610cad612287565b5b602002602001015183611317565b5b50505050565b60085481565b60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612522565b60405180910390fd5b5f633b9aca0082610d639190612382565b905080471015610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061258a565b60405180910390fd5b610db23383611407565b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610df5573d5f803e3d5ffd5b505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e27611486565b8060088190555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e7e611486565b610e875f61150d565b565b610e9b82610e9561126c565b83611285565b610ea58282611407565b5050565b6008543414610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee4906125f2565b60405180910390fd5b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015610fa6573d5f803e3d5ffd5b50565b5f47905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe790612007565b80601f016020809104026020016040519081016040528092919081815260200182805461101390612007565b801561105e5780601f106110355761010080835404028352916020019161105e565b820191905f5260205f20905b81548152906001019060200180831161104157829003601f168201915b5050505050905090565b5f61107b61107461126c565b8484611317565b6001905092915050565b61108d611486565b6110b960075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484611317565b6110e560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163283611317565b505050565b633b9aca0081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6009602052805f5260405f205f915054906101000a900460ff1681565b611199611486565b6111a382826115d0565b5050565b6111af611486565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112169190611f08565b60405180910390fd5b6112288161150d565b50565b5f633b9aca003461123c9190612314565b905061126960075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826115d0565b50565b5f33905090565b611280838383600161164f565b505050565b5f61129084846110f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113115781811015611302578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112f993929190612610565b60405180910390fd5b61131084848484035f61164f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611387575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161137e9190611f08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113ee9190611f08565b60405180910390fd5b61140283838361181e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611477575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161146e9190611f08565b60405180910390fd5b611482825f8361181e565b5050565b61148e61126c565b73ffffffffffffffffffffffffffffffffffffffff166114ac610fb0565b73ffffffffffffffffffffffffffffffffffffffff161461150b576114cf61126c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115029190611f08565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611640575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116379190611f08565b60405180910390fd5b61164b5f838361181e565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116bf575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116b69190611f08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361172f575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016117269190611f08565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611818578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161180f9190611be5565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186e578060025f8282546118629190612645565b9250508190555061193c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156118f7578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016118ee93929190612610565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611983578060025f82825403925050819055506119cd565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a2a9190611be5565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a7982611a37565b611a838185611a41565b9350611a93818560208601611a51565b611a9c81611a5f565b840191505092915050565b5f6020820190508181035f830152611abf8184611a6f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b0182611ad8565b9050919050565b611b1181611af7565b8114611b1b575f80fd5b50565b5f81359050611b2c81611b08565b92915050565b5f819050919050565b611b4481611b32565b8114611b4e575f80fd5b50565b5f81359050611b5f81611b3b565b92915050565b5f8060408385031215611b7b57611b7a611ad0565b5b5f611b8885828601611b1e565b9250506020611b9985828601611b51565b9150509250929050565b5f8115159050919050565b611bb781611ba3565b82525050565b5f602082019050611bd05f830184611bae565b92915050565b611bdf81611b32565b82525050565b5f602082019050611bf85f830184611bd6565b92915050565b5f805f60608486031215611c1557611c14611ad0565b5b5f611c2286828701611b1e565b9350506020611c3386828701611b1e565b9250506040611c4486828701611b51565b9150509250925092565b5f60ff82169050919050565b611c6381611c4e565b82525050565b5f602082019050611c7c5f830184611c5a565b92915050565b5f8060408385031215611c9857611c97611ad0565b5b5f611ca585828601611b51565b9250506020611cb685828601611b51565b9150509250929050565b5f60208284031215611cd557611cd4611ad0565b5b5f611ce284828501611b51565b91505092915050565b5f819050919050565b5f611d0e611d09611d0484611ad8565b611ceb565b611ad8565b9050919050565b5f611d1f82611cf4565b9050919050565b5f611d3082611d15565b9050919050565b611d4081611d26565b82525050565b5f602082019050611d595f830184611d37565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611d9982611a5f565b810181811067ffffffffffffffff82111715611db857611db7611d63565b5b80604052505050565b5f611dca611ac7565b9050611dd68282611d90565b919050565b5f67ffffffffffffffff821115611df557611df4611d63565b5b602082029050602081019050919050565b5f80fd5b5f611e1c611e1784611ddb565b611dc1565b90508083825260208201905060208402830185811115611e3f57611e3e611e06565b5b835b81811015611e685780611e548882611b1e565b845260208401935050602081019050611e41565b5050509392505050565b5f82601f830112611e8657611e85611d5f565b5b8135611e96848260208601611e0a565b91505092915050565b5f8060408385031215611eb557611eb4611ad0565b5b5f83013567ffffffffffffffff811115611ed257611ed1611ad4565b5b611ede85828601611e72565b9250506020611eef85828601611b51565b9150509250929050565b611f0281611af7565b82525050565b5f602082019050611f1b5f830184611ef9565b92915050565b5f60208284031215611f3657611f35611ad0565b5b5f611f4384828501611b1e565b91505092915050565b5f805f60608486031215611f6357611f62611ad0565b5b5f611f7086828701611b1e565b9350506020611f8186828701611b51565b9250506040611f9286828701611b51565b9150509250925092565b5f8060408385031215611fb257611fb1611ad0565b5b5f611fbf85828601611b1e565b9250506020611fd085828601611b1e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061201e57607f821691505b60208210810361203157612030611fda565b5b50919050565b7f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f61206b601183611a41565b915061207682612037565b602082019050919050565b5f6020820190508181035f8301526120988161205f565b9050919050565b5f67ffffffffffffffff8211156120b9576120b8611d63565b5b602082029050602081019050919050565b5f815190506120d881611b3b565b92915050565b5f6120f06120eb8461209f565b611dc1565b9050808382526020820190506020840283018581111561211357612112611e06565b5b835b8181101561213c578061212888826120ca565b845260208401935050602081019050612115565b5050509392505050565b5f82601f83011261215a57612159611d5f565b5b815161216a8482602086016120de565b91505092915050565b5f6020828403121561218857612187611ad0565b5b5f82015167ffffffffffffffff8111156121a5576121a4611ad4565b5b6121b184828501612146565b91505092915050565b7f4d69736d61746368206265747765656e20706172656e7420636f756e7420616e5f8201527f642073696d696c61726974792073636f726573206f6620746f6b656e20696400602082015250565b5f612214603f83611a41565b915061221f826121ba565b604082019050919050565b5f6020820190508181035f83015261224181612208565b9050919050565b5f8151905061225681611b08565b92915050565b5f6020828403121561227157612270611ad0565b5b5f61227e84828501612248565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122eb82611b32565b91506122f683611b32565b925082820390508181111561230e5761230d6122b4565b5b92915050565b5f61231e82611b32565b915061232983611b32565b925082820261233781611b32565b9150828204841483151761234e5761234d6122b4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61238c82611b32565b915061239783611b32565b9250826123a7576123a6612355565b5b828204905092915050565b7f4e6f20726563697069656e7473207370656369666965640000000000000000005f82015250565b5f6123e6601783611a41565b91506123f1826123b2565b602082019050919050565b5f6020820190508181035f830152612413816123da565b9050919050565b7f546f74616c20616d6f756e74206d7573742062652067726561746572207468615f8201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b5f612474602683611a41565b915061247f8261241a565b604082019050919050565b5f6020820190508181035f8301526124a181612468565b9050919050565b5f6124b282611b32565b91506124bd83611b32565b9250826124cd576124cc612355565b5b828206905092915050565b7f4e6f7420737562736372696265640000000000000000000000000000000000005f82015250565b5f61250c600e83611a41565b9150612517826124d8565b602082019050919050565b5f6020820190508181035f83015261253981612500565b9050919050565b7f496e73756666696369656e742045544820696e20636f6e7472616374000000005f82015250565b5f612574601c83611a41565b915061257f82612540565b602082019050919050565b5f6020820190508181035f8301526125a181612568565b9050919050565b7f496e636f727265637420737562736372697074696f6e206665650000000000005f82015250565b5f6125dc601a83611a41565b91506125e7826125a8565b602082019050919050565b5f6020820190508181035f830152612609816125d0565b9050919050565b5f6060820190506126235f830186611ef9565b6126306020830185611bd6565b61263d6040830184611bd6565b949350505050565b5f61264f82611b32565b915061265a83611b32565b9250828201905080821115612672576126716122b4565b5b9291505056fea264697066735822122039a72638f8a31300192e93927f721c83888a12f0234bb56a35d5c1cfb6508e7f64736f6c634300081a0033000000000000000000000000922ba3938420194816707d9d0c52ecdb84c866fc000000000000000000000000eab3c2782829a7ee88fa6b106a4302cb00ff7d8b