0x608060405234801561001057600080fd5b50610d53806100206000396000f3fe60806040526004361061003f5760003560e01c80637acc0b20146100445780638642269e14610085578063b15247d9146100a1578063e0f6ef87146100ca575b600080fd5b34801561005057600080fd5b5061006b60048036038101906100669190610526565b6100f5565b60405161007c95949392919061064e565b60405180910390f35b61009f600480360381019061009a9190610526565b6101e0565b005b3480156100ad57600080fd5b506100c860048036038101906100c391906107dd565b61037d565b005b3480156100d657600080fd5b506100df6104d6565b6040516100ec9190610839565b60405180910390f35b600060205280600052604060002060009150905080600001549080600101805461011e90610883565b80601f016020809104026020016040519081016040528092919081815260200182805461014a90610883565b80156101975780601f1061016c57610100808354040283529160200191610197565b820191906000526020600020905b81548152906001019060200180831161017a57829003601f168201915b5050505050908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a900460ff16905085565b60008060008381526020019081526020016000209050600081600001541161023d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023490610900565b60405180910390fd5b8060030160149054906101000a900460ff161561028f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102869061096c565b60405180910390fd5b806002015434146102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cc906109d8565b60405180910390fd5b338160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018160030160146101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16827fbdb79f0b777669cf4d01754a6d6b461bdd8d0f18b57c036e7d4bf3a567f3378460405160405180910390a35050565b6001600081548092919061039090610a27565b91905055506040518060a0016040528060015481526020018381526020018281526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600080600154815260200190815260200160002060008201518160000155602082015181600101908161040a9190610c1b565b506040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160030160146101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff166001547f52402cafb2ecec722b103e8f203f83362148c168659dc96678c2c6850d12dd9f84846040516104ca929190610ced565b60405180910390a35050565b60015481565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610503816104f0565b811461050e57600080fd5b50565b600081359050610520816104fa565b92915050565b60006020828403121561053c5761053b6104e6565b5b600061054a84828501610511565b91505092915050565b61055c816104f0565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561059c578082015181840152602081019050610581565b60008484015250505050565b6000601f19601f8301169050919050565b60006105c482610562565b6105ce818561056d565b93506105de81856020860161057e565b6105e7816105a8565b840191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061061d826105f2565b9050919050565b61062d81610612565b82525050565b60008115159050919050565b61064881610633565b82525050565b600060a0820190506106636000830188610553565b818103602083015261067581876105b9565b90506106846040830186610553565b6106916060830185610624565b61069e608083018461063f565b9695505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106ea826105a8565b810181811067ffffffffffffffff82111715610709576107086106b2565b5b80604052505050565b600061071c6104dc565b905061072882826106e1565b919050565b600067ffffffffffffffff821115610748576107476106b2565b5b610751826105a8565b9050602081019050919050565b82818337600083830152505050565b600061078061077b8461072d565b610712565b90508281526020810184848401111561079c5761079b6106ad565b5b6107a784828561075e565b509392505050565b600082601f8301126107c4576107c36106a8565b5b81356107d484826020860161076d565b91505092915050565b600080604083850312156107f4576107f36104e6565b5b600083013567ffffffffffffffff811115610812576108116104eb565b5b61081e858286016107af565b925050602061082f85828601610511565b9150509250929050565b600060208201905061084e6000830184610553565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061089b57607f821691505b6020821081036108ae576108ad610854565b5b50919050565b7f50726f6475637420646f6573206e6f7420657869737400000000000000000000600082015250565b60006108ea60168361056d565b91506108f5826108b4565b602082019050919050565b60006020820190508181036000830152610919816108dd565b9050919050565b7f50726f6475637420616c726561647920736f6c64000000000000000000000000600082015250565b600061095660148361056d565b915061096182610920565b602082019050919050565b6000602082019050818103600083015261098581610949565b9050919050565b7f496e636f7272656374207061796d656e7420616d6f756e740000000000000000600082015250565b60006109c260188361056d565b91506109cd8261098c565b602082019050919050565b600060208201905081810360008301526109f1816109b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a32826104f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a6457610a636109f8565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610ad17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610a94565b610adb8683610a94565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610b18610b13610b0e846104f0565b610af3565b6104f0565b9050919050565b6000819050919050565b610b3283610afd565b610b46610b3e82610b1f565b848454610aa1565b825550505050565b600090565b610b5b610b4e565b610b66818484610b29565b505050565b5b81811015610b8a57610b7f600082610b53565b600181019050610b6c565b5050565b601f821115610bcf57610ba081610a6f565b610ba984610a84565b81016020851015610bb8578190505b610bcc610bc485610a84565b830182610b6b565b50505b505050565b600082821c905092915050565b6000610bf260001984600802610bd4565b1980831691505092915050565b6000610c0b8383610be1565b9150826002028217905092915050565b610c2482610562565b67ffffffffffffffff811115610c3d57610c3c6106b2565b5b610c478254610883565b610c52828285610b8e565b600060209050601f831160018114610c855760008415610c73578287015190505b610c7d8582610bff565b865550610ce5565b601f198416610c9386610a6f565b60005b82811015610cbb57848901518255600182019150602085019450602081019050610c96565b86831015610cd85784890151610cd4601f891682610be1565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152610d0781856105b9565b9050610d166020830184610553565b939250505056fea2646970667358221220b51147517403381636631bea17f24af4c92088b667282a5e057432240fda092b64736f6c63430008120033