0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f426c6f636b6564000000000000000000000000000000000000000000000000008152506000908162000058919062000423565b506040518060400160405280600481526020017f424c4b4400000000000000000000000000000000000000000000000000000000815250600190816200009f919062000423565b506012600260006101000a81548160ff021916908360ff160217905550600260009054906101000a900460ff1660ff16600a620000dd91906200068d565b620f4240620000ed9190620006de565b600381905550600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200019b91906200073a565b60405180910390a362000757565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200022b57607f821691505b602082108103620002415762000240620001e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200026c565b620002b786836200026c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000304620002fe620002f884620002cf565b620002d9565b620002cf565b9050919050565b6000819050919050565b6200032083620002e3565b620003386200032f826200030b565b84845462000279565b825550505050565b600090565b6200034f62000340565b6200035c81848462000315565b505050565b5b8181101562000384576200037860008262000345565b60018101905062000362565b5050565b601f821115620003d3576200039d8162000247565b620003a8846200025c565b81016020851015620003b8578190505b620003d0620003c7856200025c565b83018262000361565b50505b505050565b600082821c905092915050565b6000620003f860001984600802620003d8565b1980831691505092915050565b6000620004138383620003e5565b9150826002028217905092915050565b6200042e82620001a9565b67ffffffffffffffff8111156200044a5762000449620001b4565b5b62000456825462000212565b6200046382828562000388565b600060209050601f8311600181146200049b576000841562000486578287015190505b62000492858262000405565b86555062000502565b601f198416620004ab8662000247565b60005b82811015620004d557848901518255600182019150602085019450602081019050620004ae565b86831015620004f55784890151620004f1601f891682620003e5565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005985780860481111562000570576200056f6200050a565b5b6001851615620005805780820291505b8081029050620005908562000539565b945062000550565b94509492505050565b600082620005b3576001905062000686565b81620005c3576000905062000686565b8160018114620005dc5760028114620005e7576200061d565b600191505062000686565b60ff841115620005fc57620005fb6200050a565b5b8360020a9150848211156200061657620006156200050a565b5b5062000686565b5060208310610133831016604e8410600b8410161715620006575782820a9050838111156200065157620006506200050a565b5b62000686565b62000666848484600162000546565b9250905081840481111562000680576200067f6200050a565b5b81810290505b9392505050565b60006200069a82620002cf565b9150620006a783620002cf565b9250620006d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005a1565b905092915050565b6000620006eb82620002cf565b9150620006f883620002cf565b92508282026200070881620002cf565b915082820484148315176200072257620007216200050a565b5b5092915050565b6200073481620002cf565b82525050565b600060208201905062000751600083018462000729565b92915050565b6116c080620007676000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636fc3a4bc1161008c578063a457c2d711610066578063a457c2d71461023c578063a9059cbb1461026c578063bfdc33a81461029c578063dd62ed3e146102cc576100cf565b80636fc3a4bc146101be57806370a08231146101ee57806395d89b411461021e576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102fc565b6040516100e99190611001565b60405180910390f35b61010c600480360381019061010791906110bc565b61038e565b6040516101199190611117565b60405180910390f35b61012a6103a5565b6040516101379190611141565b60405180910390f35b61015a6004803603810190610155919061115c565b6103af565b6040516101679190611117565b60405180910390f35b61017861052b565b60405161018591906111cb565b60405180910390f35b6101a860048036038101906101a391906110bc565b610542565b6040516101b59190611117565b60405180910390f35b6101d860048036038101906101d3919061115c565b6105e0565b6040516101e59190611117565b60405180910390f35b610208600480360381019061020391906111e6565b61075e565b6040516102159190611141565b60405180910390f35b6102266107a7565b6040516102339190611001565b60405180910390f35b610256600480360381019061025191906110bc565b610839565b6040516102639190611117565b60405180910390f35b610286600480360381019061028191906110bc565b6108d7565b6040516102939190611117565b60405180910390f35b6102b660048036038101906102b191906110bc565b6109c0565b6040516102c39190611117565b60405180910390f35b6102e660048036038101906102e19190611213565b610aab565b6040516102f39190611141565b60405180910390f35b60606000805461030b90611282565b80601f016020809104026020016040519081016040528092919081815260200182805461033790611282565b80156103845780601f1061035957610100808354040283529160200191610384565b820191906000526020600020905b81548152906001019060200180831161036757829003601f168201915b5050505050905090565b600061039b338484610b32565b6001905092915050565b6000600354905090565b600042600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990611325565b60405180910390fd5b61043d848484610cfb565b6104cf843384600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ca9190611374565b610b32565b610e10426104dd91906113a8565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6000600260009054906101000a900460ff16905090565b60006105d6338484600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105d191906113a8565b610b32565b6001905092915050565b60008342600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065b9061144e565b60405180910390fd5b61066f858585610cfb565b610701853385600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106fc9190611374565b610b32565b610e104261070f91906113a8565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107b690611282565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290611282565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b60006108cd338484600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c89190611374565b610b32565b6001905092915050565b600042600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109519061144e565b60405180910390fd5b610965338484610cfb565b610e104261097391906113a8565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60003342600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061144e565b60405180910390fd5b610a4f338585610cfb565b610e1042610a5d91906113a8565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906114ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611526565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cee9190611141565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190611592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd0906115fe565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061166a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610eaa9190611374565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f0091906113a8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f649190611141565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fab578082015181840152602081019050610f90565b60008484015250505050565b6000601f19601f8301169050919050565b6000610fd382610f71565b610fdd8185610f7c565b9350610fed818560208601610f8d565b610ff681610fb7565b840191505092915050565b6000602082019050818103600083015261101b8184610fc8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061105382611028565b9050919050565b61106381611048565b811461106e57600080fd5b50565b6000813590506110808161105a565b92915050565b6000819050919050565b61109981611086565b81146110a457600080fd5b50565b6000813590506110b681611090565b92915050565b600080604083850312156110d3576110d2611023565b5b60006110e185828601611071565b92505060206110f2858286016110a7565b9150509250929050565b60008115159050919050565b611111816110fc565b82525050565b600060208201905061112c6000830184611108565b92915050565b61113b81611086565b82525050565b60006020820190506111566000830184611132565b92915050565b60008060006060848603121561117557611174611023565b5b600061118386828701611071565b935050602061119486828701611071565b92505060406111a5868287016110a7565b9150509250925092565b600060ff82169050919050565b6111c5816111af565b82525050565b60006020820190506111e060008301846111bc565b92915050565b6000602082840312156111fc576111fb611023565b5b600061120a84828501611071565b91505092915050565b6000806040838503121561122a57611229611023565b5b600061123885828601611071565b925050602061124985828601611071565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061129a57607f821691505b6020821081036112ad576112ac611253565b5b50919050565b7f5472616e7366657273206172652063757272656e746c7920626c6f636b65642060008201527f666f72207468652073656e64657220616464726573732e000000000000000000602082015250565b600061130f603783610f7c565b915061131a826112b3565b604082019050919050565b6000602082019050818103600083015261133e81611302565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061137f82611086565b915061138a83611086565b92508282039050818111156113a2576113a1611345565b5b92915050565b60006113b382611086565b91506113be83611086565b92508282019050808211156113d6576113d5611345565b5b92915050565b7f5472616e7366657273206172652063757272656e746c7920626c6f636b65642060008201527f666f72207468697320616464726573732e000000000000000000000000000000602082015250565b6000611438603183610f7c565b9150611443826113dc565b604082019050919050565b600060208201905081810360008301526114678161142b565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b60006114a4601d83610f7c565b91506114af8261146e565b602082019050919050565b600060208201905081810360008301526114d381611497565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000611510601b83610f7c565b915061151b826114da565b602082019050919050565b6000602082019050818103600083015261153f81611503565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b600061157c601e83610f7c565b915061158782611546565b602082019050919050565b600060208201905081810360008301526115ab8161156f565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006115e8601c83610f7c565b91506115f3826115b2565b602082019050919050565b60006020820190508181036000830152611617816115db565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000611654601f83610f7c565b915061165f8261161e565b602082019050919050565b6000602082019050818103600083015261168381611647565b905091905056fea264697066735822122054518be7a7d2b069e1a9dc51298040216308b67b9094984a08d05cb9a68f5d9a64736f6c63430008120033