0x60806040523480156200001157600080fd5b506200003e600060405180608001604052806047815260200162000fdc604791396200004460201b60201c565b62000276565b600a82106200008a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200008190620001ef565b60405180910390fd5b80600160008481526020019081526020016000209080519060200190620000b3929190620000b8565b505050565b828054620000c69062000240565b90600052602060002090601f016020900481019282620000ea576000855562000136565b82601f106200010557805160ff191683800117855562000136565b8280016001018555821562000136579182015b828111156200013557825182559160200191906001019062000118565b5b50905062000145919062000149565b5090565b5b80821115620001645760008160009055506001016200014a565b5090565b600082825260208201905092915050565b7f546f6b656e204944206578636565647320746865206d6178696d756d20636f6c60008201527f6c656374696f6e2073697a650000000000000000000000000000000000000000602082015250565b6000620001d7602c8362000168565b9150620001e48262000179565b604082019050919050565b600060208201905081810360008301526200020a81620001c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200025957607f821691505b6020821081141562000270576200026f62000211565b5b50919050565b610d5680620002866000396000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062fdd58e146100505780630e89341c14610080578063a5614033146100b0578063beabacc8146100e0575b600080fd5b61006a600480360381019061006591906106f5565b6100fc565b6040516100779190610744565b60405180910390f35b61009a6004803603810190610095919061075f565b610156565b6040516100a79190610825565b60405180910390f35b6100ca60048036038101906100c5919061097c565b6101fb565b6040516100d79190610744565b60405180910390f35b6100fa60048036038101906100f591906109d8565b610322565b005b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b606060016000838152602001908152602001600020805461017690610a5a565b80601f01602080910402602001604051908101604052809291908181526020018280546101a290610a5a565b80156101ef5780601f106101c4576101008083540402835291602001916101ef565b820191906000526020600020905b8154815290600101906020018083116101d257829003601f168201915b50505050509050919050565b600080600254905060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055508260016000838152602001908152602001600020908051906020019061027f9291906105aa565b506002600081548092919061029390610abb565b91905055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62846001604051610310929190610b49565b60405180910390a48091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061038757503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6103c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bd90610be4565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205411610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f90610c76565b60405180910390fd5b60016000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008282546104b89190610c96565b9250508190555060016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600082825461051f9190610cca565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6284600160405161059d929190610b49565b60405180910390a4505050565b8280546105b690610a5a565b90600052602060002090601f0160209004810192826105d8576000855561061f565b82601f106105f157805160ff191683800117855561061f565b8280016001018555821561061f579182015b8281111561061e578251825591602001919060010190610603565b5b50905061062c9190610630565b5090565b5b80821115610649576000816000905550600101610631565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061068c82610661565b9050919050565b61069c81610681565b81146106a757600080fd5b50565b6000813590506106b981610693565b92915050565b6000819050919050565b6106d2816106bf565b81146106dd57600080fd5b50565b6000813590506106ef816106c9565b92915050565b6000806040838503121561070c5761070b610657565b5b600061071a858286016106aa565b925050602061072b858286016106e0565b9150509250929050565b61073e816106bf565b82525050565b60006020820190506107596000830184610735565b92915050565b60006020828403121561077557610774610657565b5b6000610783848285016106e0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107c65780820151818401526020810190506107ab565b838111156107d5576000848401525b50505050565b6000601f19601f8301169050919050565b60006107f78261078c565b6108018185610797565b93506108118185602086016107a8565b61081a816107db565b840191505092915050565b6000602082019050818103600083015261083f81846107ec565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610889826107db565b810181811067ffffffffffffffff821117156108a8576108a7610851565b5b80604052505050565b60006108bb61064d565b90506108c78282610880565b919050565b600067ffffffffffffffff8211156108e7576108e6610851565b5b6108f0826107db565b9050602081019050919050565b82818337600083830152505050565b600061091f61091a846108cc565b6108b1565b90508281526020810184848401111561093b5761093a61084c565b5b6109468482856108fd565b509392505050565b600082601f83011261096357610962610847565b5b813561097384826020860161090c565b91505092915050565b6000806040838503121561099357610992610657565b5b60006109a1858286016106aa565b925050602083013567ffffffffffffffff8111156109c2576109c161065c565b5b6109ce8582860161094e565b9150509250929050565b6000806000606084860312156109f1576109f0610657565b5b60006109ff868287016106aa565b9350506020610a10868287016106aa565b9250506040610a21868287016106e0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a7257607f821691505b60208210811415610a8657610a85610a2b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ac6826106bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610af957610af8610a8c565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000610b33610b2e610b2984610b04565b610b0e565b6106bf565b9050919050565b610b4381610b18565b82525050565b6000604082019050610b5e6000830185610735565b610b6b6020830184610b3a565b9392505050565b7f43616c6c6572206973206e6f742074686520746f6b656e206f776e6572206f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b6000610bce602983610797565b9150610bd982610b72565b604082019050919050565b60006020820190508181036000830152610bfd81610bc1565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374206f72206973206e6f74206f60008201527f776e6564206279207468652073656e6465720000000000000000000000000000602082015250565b6000610c60603283610797565b9150610c6b82610c04565b604082019050919050565b60006020820190508181036000830152610c8f81610c53565b9050919050565b6000610ca1826106bf565b9150610cac836106bf565b925082821015610cbf57610cbe610a8c565b5b828203905092915050565b6000610cd5826106bf565b9150610ce0836106bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d1557610d14610a8c565b5b82820190509291505056fea26469706673582212205e430824d2bd92b17df4162df0733b3bde26735ed31d2b577fef1dd8f400f61d64736f6c634300080a003368747470733a2f2f692e70696e696d672e636f6d2f373336782f34332f39312f63622f34333931636261656433366637616238643764616337646130353335386132382e6a7067