0x60806040523480156200001157600080fd5b5060405162001197380380620011978339818101604052810190620000379190620001d5565b620000576200004b6200009f60201b60201c565b620000a760201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000207565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200019d8262000170565b9050919050565b620001af8162000190565b8114620001bb57600080fd5b50565b600081519050620001cf81620001a4565b92915050565b600060208284031215620001ee57620001ed6200016b565b5b6000620001fe84828501620001be565b91505092915050565b610f8080620002176000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610101578063bc197c811461011f578063f23a6e611461014f578063f2fde38b1461017f57610088565b806301ffc9a71461008d578063205c9cc7146100bd57806326af4832146100db578063715018a6146100f7575b600080fd5b6100a760048036038101906100a291906107d7565b61019b565b6040516100b4919061081f565b60405180910390f35b6100c5610215565b6040516100d2919061087b565b60405180910390f35b6100f560048036038101906100f09190610936565b61023b565b005b6100ff6102ba565b005b6101096102ce565b604051610116919061087b565b60405180910390f35b61013960048036038101906101349190610a58565b6102f7565b6040516101469190610b43565b60405180910390f35b61016960048036038101906101649190610b5e565b6103f5565b6040516101769190610b43565b60405180910390f35b61019960048036038101906101949190610bf8565b61053e565b005b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020e575061020d826105c1565b5b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61024361062b565b8273ffffffffffffffffffffffffffffffffffffffff1663f242432a308685856040518563ffffffff1660e01b81526004016102829493929190610c6b565b600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050505050505050565b6102c261062b565b6102cc60006106a9565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600187879050148015610326575060008787600081811061031d5761031c610cc3565b5b90506020020135145b80156103355750602083839050145b610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036b90610d4f565b60405180910390fd5b8484600081811061038857610387610cc3565b5b905060200201358873ffffffffffffffffffffffffffffffffffffffff167fd6239b2e1af6e5fbc94f7f9fb28a3d7d793eeb715cfbe1d6c8c932e2bdc11e5d85856040516103d7929190610dbc565b60405180910390a363bc197c8160e01b905098975050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047e90610e2c565b60405180910390fd5b60008514801561049a5750602083839050145b6104d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d090610d4f565b60405180910390fd5b838673ffffffffffffffffffffffffffffffffffffffff167fd6239b2e1af6e5fbc94f7f9fb28a3d7d793eeb715cfbe1d6c8c932e2bdc11e5d8585604051610522929190610dbc565b60405180910390a363f23a6e6160e01b90509695505050505050565b61054661062b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ac90610ebe565b60405180910390fd5b6105be816106a9565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61063361076d565b73ffffffffffffffffffffffffffffffffffffffff166106516102ce565b73ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90610f2a565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b48161077f565b81146107bf57600080fd5b50565b6000813590506107d1816107ab565b92915050565b6000602082840312156107ed576107ec610775565b5b60006107fb848285016107c2565b91505092915050565b60008115159050919050565b61081981610804565b82525050565b60006020820190506108346000830184610810565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108658261083a565b9050919050565b6108758161085a565b82525050565b6000602082019050610890600083018461086c565b92915050565b61089f8161085a565b81146108aa57600080fd5b50565b6000813590506108bc81610896565b92915050565b60006108cd8261085a565b9050919050565b6108dd816108c2565b81146108e857600080fd5b50565b6000813590506108fa816108d4565b92915050565b6000819050919050565b61091381610900565b811461091e57600080fd5b50565b6000813590506109308161090a565b92915050565b600080600080608085870312156109505761094f610775565b5b600061095e878288016108ad565b945050602061096f878288016108eb565b935050604061098087828801610921565b925050606061099187828801610921565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f8401126109c2576109c161099d565b5b8235905067ffffffffffffffff8111156109df576109de6109a2565b5b6020830191508360208202830111156109fb576109fa6109a7565b5b9250929050565b60008083601f840112610a1857610a1761099d565b5b8235905067ffffffffffffffff811115610a3557610a346109a2565b5b602083019150836001820283011115610a5157610a506109a7565b5b9250929050565b60008060008060008060008060a0898b031215610a7857610a77610775565b5b6000610a868b828c016108ad565b9850506020610a978b828c016108ad565b975050604089013567ffffffffffffffff811115610ab857610ab761077a565b5b610ac48b828c016109ac565b9650965050606089013567ffffffffffffffff811115610ae757610ae661077a565b5b610af38b828c016109ac565b9450945050608089013567ffffffffffffffff811115610b1657610b1561077a565b5b610b228b828c01610a02565b92509250509295985092959890939650565b610b3d8161077f565b82525050565b6000602082019050610b586000830184610b34565b92915050565b60008060008060008060a08789031215610b7b57610b7a610775565b5b6000610b8989828a016108ad565b9650506020610b9a89828a016108ad565b9550506040610bab89828a01610921565b9450506060610bbc89828a01610921565b935050608087013567ffffffffffffffff811115610bdd57610bdc61077a565b5b610be989828a01610a02565b92509250509295509295509295565b600060208284031215610c0e57610c0d610775565b5b6000610c1c848285016108ad565b91505092915050565b610c2e81610900565b82525050565b600082825260208201905092915050565b50565b6000610c55600083610c34565b9150610c6082610c45565b600082019050919050565b600060a082019050610c80600083018761086c565b610c8d602083018661086c565b610c9a6040830185610c25565b610ca76060830184610c25565b8181036080830152610cb881610c48565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f696e76616c696420706172616d00000000000000000000000000000000000000600082015250565b6000610d39600d83610cf2565b9150610d4482610d03565b602082019050919050565b60006020820190508181036000830152610d6881610d2c565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610d9b8385610c34565b9350610da8838584610d6f565b610db183610d7e565b840190509392505050565b60006020820190508181036000830152610dd7818486610d8f565b90509392505050565b7f6f6e6c7920770000000000000000000000000000000000000000000000000000600082015250565b6000610e16600683610cf2565b9150610e2182610de0565b602082019050919050565b60006020820190508181036000830152610e4581610e09565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610ea8602683610cf2565b9150610eb382610e4c565b604082019050919050565b60006020820190508181036000830152610ed781610e9b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610f14602083610cf2565b9150610f1f82610ede565b602082019050919050565b60006020820190508181036000830152610f4381610f07565b905091905056fea264697066735822122068d4d1f055fedb896acce640f9824c7846f3669ef8e6f8848a3c8c001aa2a28864736f6c6343000812003300000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372