60806040523480156200001157600080fd5b5060405162004858380380620048588339818101604052810190620000379190620007d1565b733cc6cdda760b79bafa08df41ecfa224f810dceb660018484816002908162000061919062000ab6565b50806003908162000073919062000ab6565b50620000846200037160201b60201c565b6000819055505050620000ac620000a06200037a60201b60201c565b6200038260201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002a157801562000167576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200012d92919062000be2565b600060405180830381600087803b1580156200014857600080fd5b505af11580156200015d573d6000803e3d6000fd5b50505050620002a0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000221576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620001e792919062000be2565b600060405180830381600087803b1580156200020257600080fd5b505af115801562000217573d6000803e3d6000fd5b505050506200029f565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200026a919062000c0f565b600060405180830381600087803b1580156200028557600080fd5b505af11580156200029a573d6000803e3d6000fd5b505050505b5b5b5050620002b533826200044860201b60201c565b80600c60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000d47565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000458620005eb60201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620004b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b09062000cb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005229062000d25565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200065e8262000613565b810181811067ffffffffffffffff8211171562000680576200067f62000624565b5b80604052505050565b600062000695620005f5565b9050620006a3828262000653565b919050565b600067ffffffffffffffff821115620006c657620006c562000624565b5b620006d18262000613565b9050602081019050919050565b60005b83811015620006fe578082015181840152602081019050620006e1565b60008484015250505050565b6000620007216200071b84620006a8565b62000689565b90508281526020810184848401111562000740576200073f6200060e565b5b6200074d848285620006de565b509392505050565b600082601f8301126200076d576200076c62000609565b5b81516200077f8482602086016200070a565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b620007ab8162000788565b8114620007b757600080fd5b50565b600081519050620007cb81620007a0565b92915050565b600080600060608486031215620007ed57620007ec620005ff565b5b600084015167ffffffffffffffff8111156200080e576200080d62000604565b5b6200081c8682870162000755565b935050602084015167ffffffffffffffff81111562000840576200083f62000604565b5b6200084e8682870162000755565b92505060406200086186828701620007ba565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008be57607f821691505b602082108103620008d457620008d362000876565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200093e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008ff565b6200094a8683620008ff565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000997620009916200098b8462000962565b6200096c565b62000962565b9050919050565b6000819050919050565b620009b38362000976565b620009cb620009c2826200099e565b8484546200090c565b825550505050565b600090565b620009e2620009d3565b620009ef818484620009a8565b505050565b5b8181101562000a175762000a0b600082620009d8565b600181019050620009f5565b5050565b601f82111562000a665762000a3081620008da565b62000a3b84620008ef565b8101602085101562000a4b578190505b62000a6362000a5a85620008ef565b830182620009f4565b50505b505050565b600082821c905092915050565b600062000a8b6000198460080262000a6b565b1980831691505092915050565b600062000aa6838362000a78565b9150826002028217905092915050565b62000ac1826200086b565b67ffffffffffffffff81111562000add5762000adc62000624565b5b62000ae98254620008a5565b62000af682828562000a1b565b600060209050601f83116001811462000b2e576000841562000b19578287015190505b62000b25858262000a98565b86555062000b95565b601f19841662000b3e86620008da565b60005b8281101562000b685784890151825560018201915060208501945060208101905062000b41565b8683101562000b88578489015162000b84601f89168262000a78565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bca8262000b9d565b9050919050565b62000bdc8162000bbd565b82525050565b600060408201905062000bf9600083018562000bd1565b62000c08602083018462000bd1565b9392505050565b600060208201905062000c26600083018462000bd1565b92915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000c9b602a8362000c2c565b915062000ca88262000c3d565b604082019050919050565b6000602082019050818103600083015262000cce8162000c8c565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000d0d60198362000c2c565b915062000d1a8262000cd5565b602082019050919050565b6000602082019050818103600083015262000d408162000cfe565b9050919050565b613b018062000d576000396000f3fe6080604052600436106101f95760003560e01c80638da5cb5b1161010d578063b88d4fde116100a0578063e763b0171161006f578063e763b017146106c7578063e8e7f800146106d1578063e985e9c5146106fc578063f2fde38b14610739578063fb670e2014610762576101f9565b8063b88d4fde1461062e578063c87b56dd1461064a578063cac9266914610687578063ce03ec93146106b0576101f9565b806395d89b41116100dc57806395d89b4114610595578063a0712d68146105c0578063a22cb465146105dc578063b723b34e14610605576101f9565b80638da5cb5b146104ed5780638f1ba4c21461051857806390f27d6214610541578063918b5be11461056c576101f9565b80633ab1a494116101905780636352211e1161015f5780636352211e146104085780636a61e5fc1461044557806370a082311461046e578063715018a6146104ab5780638c3c4b34146104c2576101f9565b80633ab1a4941461036d57806341f434341461039657806342842e0e146103c15780634b94f50e146103dd576101f9565b806318160ddd116101cc57806318160ddd146102bf57806323b872dd146102ea5780632a55205a14610306578063329cfe4814610344576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061285f565b61078b565b60405161023291906128a7565b60405180910390f35b34801561024757600080fd5b50610250610885565b60405161025d9190612952565b60405180910390f35b34801561027257600080fd5b5061028d600480360381019061028891906129aa565b610917565b60405161029a9190612a18565b60405180910390f35b6102bd60048036038101906102b89190612a5f565b610996565b005b3480156102cb57600080fd5b506102d46109af565b6040516102e19190612aae565b60405180910390f35b61030460048036038101906102ff9190612ac9565b6109c6565b005b34801561031257600080fd5b5061032d60048036038101906103289190612b1c565b610a15565b60405161033b929190612b5c565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190612b85565b610bff565b005b34801561037957600080fd5b50610394600480360381019061038f9190612b85565b610cca565b005b3480156103a257600080fd5b506103ab610d16565b6040516103b89190612c11565b60405180910390f35b6103db60048036038101906103d69190612ac9565b610d28565b005b3480156103e957600080fd5b506103f2610d77565b6040516103ff9190612aae565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906129aa565b610d81565b60405161043c9190612a18565b60405180910390f35b34801561045157600080fd5b5061046c600480360381019061046791906129aa565b610d93565b005b34801561047a57600080fd5b5061049560048036038101906104909190612b85565b610e21565b6040516104a29190612aae565b60405180910390f35b3480156104b757600080fd5b506104c0610ed9565b005b3480156104ce57600080fd5b506104d7610eed565b6040516104e491906128a7565b60405180910390f35b3480156104f957600080fd5b50610502610f04565b60405161050f9190612a18565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a91906129aa565b610f2e565b005b34801561054d57600080fd5b50610556610fbc565b6040516105639190612aae565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612c91565b610fc6565b005b3480156105a157600080fd5b506105aa61101f565b6040516105b79190612952565b60405180910390f35b6105da60048036038101906105d591906129aa565b6110b1565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190612d0a565b6111ed565b005b34801561061157600080fd5b5061062c60048036038101906106279190612d4a565b611206565b005b61064860048036038101906106439190612eba565b6112ce565b005b34801561065657600080fd5b50610671600480360381019061066c91906129aa565b61131f565b60405161067e9190612952565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612f81565b6113bd565b005b3480156106bc57600080fd5b506106c5611425565b005b6106cf6114a1565b005b3480156106dd57600080fd5b506106e66115d5565b6040516106f39190612a18565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190612fae565b6115ff565b60405161073091906128a7565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190612b85565b611693565b005b34801561076e57600080fd5b5061078960048036038101906107849190612b85565b611716565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108165750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061087e57507f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108949061301d565b80601f01602080910402602001604051908101604052809291908181526020018280546108c09061301d565b801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b5050505050905090565b600061092282611786565b610958576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b816109a0816117e5565b6109aa83836118e2565b505050565b60006109b9611a26565b6001546000540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a0457610a03336117e5565b5b610a0f848484611a2f565b50505050565b6000806000600a60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610baa5760096040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610bb4611d51565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610be0919061307d565b610bea91906130ee565b90508160000151819350935050509250929050565b610c07611d5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d9061316b565b60405180910390fd5b6000610c80611dd9565b9050610c8d826009611de2565b7f2cf10e4fd4d035c46d0ea3c9e915b743beb7490f45f1c558d4307e1145d4c80b8183604051610cbe92919061318b565b60405180910390a15050565b610cd2611d5b565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d6657610d65336117e5565b5b610d71848484611f9d565b50505050565b6000600e54905090565b6000610d8c82611fbd565b9050919050565b610d9b611d5b565b60008111610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590613226565b60405180910390fd5b80600e819055507fadb8dad856cda7d0353461d8ba4eda86edaca021f8149acb73c844d7fbbd39bf8133604051610e1692919061318b565b60405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e88576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b610ee1611d5b565b610eeb6000612089565b565b6000601060009054906101000a900460ff16905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f36611d5b565b60008111610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090613226565b60405180910390fd5b80600f819055507fc71dfea949f246a2c1d6993845ba039c2c92bc856dbdc0809d438585f4ca7aa98133604051610fb192919061318b565b60405180910390a150565b6000600f54905090565b610fce611d5b565b8181600d9182610fdf9291906133f3565b507f4a8c46352506384120a3a18a8dcb1bfd7e0fb21b1ec4ccfbc83dafc1dff6aa70828233604051611013939291906134f0565b60405180910390a15050565b60606003805461102e9061301d565b80601f016020809104026020016040519081016040528092919081815260200182805461105a9061301d565b80156110a75780601f1061107c576101008083540402835291602001916110a7565b820191906000526020600020905b81548152906001019060200180831161108a57829003601f168201915b5050505050905090565b601060009054906101000a900460ff16611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f79061356e565b60405180910390fd5b6000600e5411611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906135da565b60405180910390fd5b60008111611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f9061366c565b60405180910390fd5b34600e5482611197919061307d565b146111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce906136d8565b60405180910390fd5b6111e13382611de2565b6111ea3461214f565b50565b816111f7816117e5565b61120183836121bb565b505050565b61120e611d5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112749061316b565b60405180910390fd5b600082116112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b79061366c565b60405180910390fd5b6112ca8183611de2565b5050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461130c5761130b336117e5565b5b611318858585856122c6565b5050505050565b606061132a82611786565b611360576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061136a612339565b9050600081510361138a57604051806020016040528060008152506113b5565b80611394846123cb565b6040516020016113a5929190613734565b6040516020818303038152906040525b915050919050565b6113c5611d5b565b80600c60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611422600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261241b565b50565b61142d611d5b565b601060009054906101000a900460ff1615601060006101000a81548160ff0219169083151502179055507f800b676c50ea6248b2efb5a4d9b58c88e3f0028f76fdc1b6a742926345749dbb601060009054906101000a900460ff1633604051611497929190613758565b60405180910390a1565b601060009054906101000a900460ff166114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061356e565b60405180910390fd5b6000600f5411611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906135da565b60405180910390fd5b34600f5414611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906136d8565b60405180910390fd5b6000611583611dd9565b9050611590336009611de2565b6115993461214f565b7f2cf10e4fd4d035c46d0ea3c9e915b743beb7490f45f1c558d4307e1145d4c80b81336040516115ca92919061318b565b60405180910390a150565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61169b611d5b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906137f3565b60405180910390fd5b61171381612089565b50565b61171e611d5b565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061178381600c60149054906101000a90046bffffffffffffffffffffffff1661241b565b50565b600081611791611a26565b111580156117a0575060005482105b80156117de575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156118df576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b815260040161185c929190613813565b602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190613851565b6118de57806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016118d59190612a18565b60405180910390fd5b5b50565b60006118ed82610d81565b90508073ffffffffffffffffffffffffffffffffffffffff1661190e6125b0565b73ffffffffffffffffffffffffffffffffffffffff16146119715761193a816119356125b0565b6115ff565b611970576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611a3a82611fbd565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611aad846125b8565b91509150611ac38187611abe6125b0565b6125df565b611b0f57611ad886611ad36125b0565b6115ff565b611b0e576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611b75576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b828686866001612623565b8015611b8d57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550611c5b85611c37888887612629565b7c020000000000000000000000000000000000000000000000000000000017612651565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603611ce15760006001850190506000600460008381526020019081526020016000205403611cdf576000548114611cde578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d49868686600161267c565b505050505050565b6000612710905090565b611d63612682565b73ffffffffffffffffffffffffffffffffffffffff16611d81610f04565b73ffffffffffffffffffffffffffffffffffffffff1614611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce906138ca565b60405180910390fd5b565b60008054905090565b60008054905060008203611e22576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2f6000848385612623565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611ea683611e976000866000612629565b611ea08561268a565b17612651565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114611f4757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050611f0c565b5060008203611f82576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050611f98600084838561267c565b505050565b611fb8838383604051806020016040528060008152506112ce565b505050565b60008082905080611fcc611a26565b11612052576000548110156120515760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082160361204f575b6000810361204557600460008360019003935083815260200190815260200160002054905061201b565b8092505050612084565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b7573d6000803e3d6000fd5b5050565b80600760006121c86125b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166122756125b0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122ba91906128a7565b60405180910390a35050565b6122d18484846109c6565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612333576122fc8484848461269a565b612332576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600d80546123489061301d565b80601f01602080910402602001604051908101604052809291908181526020018280546123749061301d565b80156123c15780601f10612396576101008083540402835291602001916123c1565b820191906000526020600020905b8154815290600101906020018083116123a457829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b60011561240657600184039350600a81066030018453600a81049050806123e4575b50828103602084039350808452505050919050565b612423611d51565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124789061395c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e7906139c8565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b600033905090565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86126408686846127ea565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b60006001821460e11b9050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126c06125b0565b8786866040518563ffffffff1660e01b81526004016126e29493929190613a3d565b6020604051808303816000875af192505050801561271e57506040513d601f19601f8201168201806040525081019061271b9190613a9e565b60015b612797573d806000811461274e576040519150601f19603f3d011682016040523d82523d6000602084013e612753565b606091505b50600081510361278f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61283c81612807565b811461284757600080fd5b50565b60008135905061285981612833565b92915050565b600060208284031215612875576128746127fd565b5b60006128838482850161284a565b91505092915050565b60008115159050919050565b6128a18161288c565b82525050565b60006020820190506128bc6000830184612898565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128fc5780820151818401526020810190506128e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612924826128c2565b61292e81856128cd565b935061293e8185602086016128de565b61294781612908565b840191505092915050565b6000602082019050818103600083015261296c8184612919565b905092915050565b6000819050919050565b61298781612974565b811461299257600080fd5b50565b6000813590506129a48161297e565b92915050565b6000602082840312156129c0576129bf6127fd565b5b60006129ce84828501612995565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a02826129d7565b9050919050565b612a12816129f7565b82525050565b6000602082019050612a2d6000830184612a09565b92915050565b612a3c816129f7565b8114612a4757600080fd5b50565b600081359050612a5981612a33565b92915050565b60008060408385031215612a7657612a756127fd565b5b6000612a8485828601612a4a565b9250506020612a9585828601612995565b9150509250929050565b612aa881612974565b82525050565b6000602082019050612ac36000830184612a9f565b92915050565b600080600060608486031215612ae257612ae16127fd565b5b6000612af086828701612a4a565b9350506020612b0186828701612a4a565b9250506040612b1286828701612995565b9150509250925092565b60008060408385031215612b3357612b326127fd565b5b6000612b4185828601612995565b9250506020612b5285828601612995565b9150509250929050565b6000604082019050612b716000830185612a09565b612b7e6020830184612a9f565b9392505050565b600060208284031215612b9b57612b9a6127fd565b5b6000612ba984828501612a4a565b91505092915050565b6000819050919050565b6000612bd7612bd2612bcd846129d7565b612bb2565b6129d7565b9050919050565b6000612be982612bbc565b9050919050565b6000612bfb82612bde565b9050919050565b612c0b81612bf0565b82525050565b6000602082019050612c266000830184612c02565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c5157612c50612c2c565b5b8235905067ffffffffffffffff811115612c6e57612c6d612c31565b5b602083019150836001820283011115612c8a57612c89612c36565b5b9250929050565b60008060208385031215612ca857612ca76127fd565b5b600083013567ffffffffffffffff811115612cc657612cc5612802565b5b612cd285828601612c3b565b92509250509250929050565b612ce78161288c565b8114612cf257600080fd5b50565b600081359050612d0481612cde565b92915050565b60008060408385031215612d2157612d206127fd565b5b6000612d2f85828601612a4a565b9250506020612d4085828601612cf5565b9150509250929050565b60008060408385031215612d6157612d606127fd565b5b6000612d6f85828601612995565b9250506020612d8085828601612a4a565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dc782612908565b810181811067ffffffffffffffff82111715612de657612de5612d8f565b5b80604052505050565b6000612df96127f3565b9050612e058282612dbe565b919050565b600067ffffffffffffffff821115612e2557612e24612d8f565b5b612e2e82612908565b9050602081019050919050565b82818337600083830152505050565b6000612e5d612e5884612e0a565b612def565b905082815260208101848484011115612e7957612e78612d8a565b5b612e84848285612e3b565b509392505050565b600082601f830112612ea157612ea0612c2c565b5b8135612eb1848260208601612e4a565b91505092915050565b60008060008060808587031215612ed457612ed36127fd565b5b6000612ee287828801612a4a565b9450506020612ef387828801612a4a565b9350506040612f0487828801612995565b925050606085013567ffffffffffffffff811115612f2557612f24612802565b5b612f3187828801612e8c565b91505092959194509250565b60006bffffffffffffffffffffffff82169050919050565b612f5e81612f3d565b8114612f6957600080fd5b50565b600081359050612f7b81612f55565b92915050565b600060208284031215612f9757612f966127fd565b5b6000612fa584828501612f6c565b91505092915050565b60008060408385031215612fc557612fc46127fd565b5b6000612fd385828601612a4a565b9250506020612fe485828601612a4a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061303557607f821691505b60208210810361304857613047612fee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308882612974565b915061309383612974565b92508282026130a181612974565b915082820484148315176130b8576130b761304e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130f982612974565b915061310483612974565b925082613114576131136130bf565b5b828204905092915050565b7f50696c6c733a20746f2063616e6e6f74206265207a65726f2061646472657373600082015250565b60006131556020836128cd565b91506131608261311f565b602082019050919050565b6000602082019050818103600083015261318481613148565b9050919050565b60006040820190506131a06000830185612a9f565b6131ad6020830184612a09565b9392505050565b7f50696c6c733a2070726963652073686f756c64206265206d6f7265207468616e60008201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b60006132106022836128cd565b915061321b826131b4565b604082019050919050565b6000602082019050818103600083015261323f81613203565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613276565b6132bd8683613276565b95508019841693508086168417925050509392505050565b60006132f06132eb6132e684612974565b612bb2565b612974565b9050919050565b6000819050919050565b61330a836132d5565b61331e613316826132f7565b848454613283565b825550505050565b600090565b613333613326565b61333e818484613301565b505050565b5b818110156133625761335760008261332b565b600181019050613344565b5050565b601f8211156133a75761337881613251565b61338184613266565b81016020851015613390578190505b6133a461339c85613266565b830182613343565b50505b505050565b600082821c905092915050565b60006133ca600019846008026133ac565b1980831691505092915050565b60006133e383836133b9565b9150826002028217905092915050565b6133fd8383613246565b67ffffffffffffffff81111561341657613415612d8f565b5b613420825461301d565b61342b828285613366565b6000601f83116001811461345a5760008415613448578287013590505b61345285826133d7565b8655506134ba565b601f19841661346886613251565b60005b828110156134905784890135825560018201915060208501945060208101905061346b565b868310156134ad57848901356134a9601f8916826133b9565b8355505b6001600288020188555050505b50505050505050565b60006134cf83856128cd565b93506134dc838584612e3b565b6134e583612908565b840190509392505050565b6000604082019050818103600083015261350b8185876134c3565b905061351a6020830184612a09565b949350505050565b7f50696c6c733a2073616c65206973206e6f742061637469766500000000000000600082015250565b60006135586019836128cd565b915061356382613522565b602082019050919050565b600060208201905081810360008301526135878161354b565b9050919050565b7f50696c6c733a207072696365206973206e6f7420736574000000000000000000600082015250565b60006135c46017836128cd565b91506135cf8261358e565b602082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f50696c6c733a20616d6f756e742073686f756c64206265206d6f72652074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b60006136566023836128cd565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b7f50696c6c733a2066756e6473206e6f7420657175616c20746f20707269636500600082015250565b60006136c2601f836128cd565b91506136cd8261368c565b602082019050919050565b600060208201905081810360008301526136f1816136b5565b9050919050565b600081905092915050565b600061370e826128c2565b61371881856136f8565b93506137288185602086016128de565b80840191505092915050565b60006137408285613703565b915061374c8284613703565b91508190509392505050565b600060408201905061376d6000830185612898565b61377a6020830184612a09565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137dd6026836128cd565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b60006040820190506138286000830185612a09565b6138356020830184612a09565b9392505050565b60008151905061384b81612cde565b92915050565b600060208284031215613867576138666127fd565b5b60006138758482850161383c565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138b46020836128cd565b91506138bf8261387e565b602082019050919050565b600060208201905081810360008301526138e3816138a7565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000613946602a836128cd565b9150613951826138ea565b604082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006139b26019836128cd565b91506139bd8261397c565b602082019050919050565b600060208201905081810360008301526139e1816139a5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613a0f826139e8565b613a1981856139f3565b9350613a298185602086016128de565b613a3281612908565b840191505092915050565b6000608082019050613a526000830187612a09565b613a5f6020830186612a09565b613a6c6040830185612a9f565b8181036060830152613a7e8184613a04565b905095945050505050565b600081519050613a9881612833565b92915050565b600060208284031215613ab457613ab36127fd565b5b6000613ac284828501613a89565b9150509291505056fea26469706673582212203000360fa2963e1a8cbd9bb350a3f8fae2cea9311f7ff842c5a37f1e62dc6c8b64736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000074e617363656e7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000450494c4c00000000000000000000000000000000000000000000000000000000