0x60806040523480156200001157600080fd5b506040516200186b3803806200186b833981810160405281019062000037919062000218565b620000576200004b620000a760201b60201c565b620000af60201b60201c565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038190555050506200025f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001a58262000178565b9050919050565b620001b78162000198565b8114620001c357600080fd5b50565b600081519050620001d781620001ac565b92915050565b6000819050919050565b620001f281620001dd565b8114620001fe57600080fd5b50565b6000815190506200021281620001e7565b92915050565b6000806040838503121562000232576200023162000173565b5b60006200024285828601620001c6565b9250506020620002558582860162000201565b9150509250929050565b6115fc806200026f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637ecebe00116100665780637ecebe00146100f85780638da5cb5b146101285780639a8a059214610146578063f2fde38b14610164578063fc0c546a1461018057610093565b8063238ac9331461009857806345d748b8146100b65780636c19e783146100d2578063715018a6146100ee575b600080fd5b6100a061019e565b6040516100ad9190610b10565b60405180910390f35b6100d060048036038101906100cb9190610cbb565b6101c4565b005b6100ec60048036038101906100e79190610d7e565b610545565b005b6100f6610591565b005b610112600480360381019061010d9190610d7e565b6105a5565b60405161011f9190610dba565b60405180910390f35b6101306105bd565b60405161013d9190610b10565b60405180910390f35b61014e6105e6565b60405161015b9190610dba565b60405180910390f35b61017e60048036038101906101799190610d7e565b6105ec565b005b61018861066f565b6040516101959190610b10565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b82421115610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fe90610e58565b60405180910390fd5b84600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102639190610b10565b602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a49190610e8d565b10156102e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102dc90610f2c565b60405180910390fd5b83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061033690610f7b565b919050551461037a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103719061100f565b60405180910390fd5b60006103b33387878787604051602001610398959493929190611098565b60405160208183030381529060405280519060200120610695565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103f882846106c5565b73ffffffffffffffffffffffffffffffffffffffff161461044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044590611169565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a876040516104949190610dba565b60405180910390a2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff1660e01b81526004016104f9929190611189565b6020604051808303816000875af1158015610518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c91906111ea565b50505050505050565b61054d6106ec565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6105996106ec565b6105a3600061076a565b565b60046020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b6105f46106ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065a90611289565b60405180910390fd5b61066c8161076a565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040516020016106a8919061132b565b604051602081830303815290604052805190602001209050919050565b60008060006106d4858561082e565b915091506106e18161087f565b819250505092915050565b6106f46109e5565b73ffffffffffffffffffffffffffffffffffffffff166107126105bd565b73ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f9061139d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080604183510361086f5760008060006020860151925060408601519150606086015160001a9050610863878285856109ed565b94509450505050610878565b60006002915091505b9250929050565b60006004811115610893576108926113bd565b5b8160048111156108a6576108a56113bd565b5b03156109e257600160048111156108c0576108bf6113bd565b5b8160048111156108d3576108d26113bd565b5b03610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90611438565b60405180910390fd5b60026004811115610927576109266113bd565b5b81600481111561093a576109396113bd565b5b0361097a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610971906114a4565b60405180910390fd5b6003600481111561098e5761098d6113bd565b5b8160048111156109a1576109a06113bd565b5b036109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890611536565b60405180910390fd5b5b50565b600033905090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115610a28576000600391509150610ac6565b600060018787878760405160008152602001604052604051610a4d9493929190611581565b6020604051602081039080840390855afa158015610a6f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610abd57600060019250925050610ac6565b80600092509250505b94509492505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610afa82610acf565b9050919050565b610b0a81610aef565b82525050565b6000602082019050610b256000830184610b01565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610b5281610b3f565b8114610b5d57600080fd5b50565b600081359050610b6f81610b49565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610bc882610b7f565b810181811067ffffffffffffffff82111715610be757610be6610b90565b5b80604052505050565b6000610bfa610b2b565b9050610c068282610bbf565b919050565b600067ffffffffffffffff821115610c2657610c25610b90565b5b610c2f82610b7f565b9050602081019050919050565b82818337600083830152505050565b6000610c5e610c5984610c0b565b610bf0565b905082815260208101848484011115610c7a57610c79610b7a565b5b610c85848285610c3c565b509392505050565b600082601f830112610ca257610ca1610b75565b5b8135610cb2848260208601610c4b565b91505092915050565b600080600080600060a08688031215610cd757610cd6610b35565b5b6000610ce588828901610b60565b9550506020610cf688828901610b60565b9450506040610d0788828901610b60565b9350506060610d1888828901610b60565b925050608086013567ffffffffffffffff811115610d3957610d38610b3a565b5b610d4588828901610c8d565b9150509295509295909350565b610d5b81610aef565b8114610d6657600080fd5b50565b600081359050610d7881610d52565b92915050565b600060208284031215610d9457610d93610b35565b5b6000610da284828501610d69565b91505092915050565b610db481610b3f565b82525050565b6000602082019050610dcf6000830184610dab565b92915050565b600082825260208201905092915050565b7f436c61696d61626c65546f6b656e3a20546f6b656e20636c61696d206861732060008201527f6578706972656400000000000000000000000000000000000000000000000000602082015250565b6000610e42602783610dd5565b9150610e4d82610de6565b604082019050919050565b60006020820190508181036000830152610e7181610e35565b9050919050565b600081519050610e8781610b49565b92915050565b600060208284031215610ea357610ea2610b35565b5b6000610eb184828501610e78565b91505092915050565b7f436c61696d61626c65546f6b656e3a204e6f7420656e6f75676820746f6b656e60008201527f7320746f20636c61696d00000000000000000000000000000000000000000000602082015250565b6000610f16602a83610dd5565b9150610f2182610eba565b604082019050919050565b60006020820190508181036000830152610f4581610f09565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f8682610b3f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610fb857610fb7610f4c565b5b600182019050919050565b7f436c61696d61626c65546f6b656e3a20496e76616c6964206e6f6e6365000000600082015250565b6000610ff9601d83610dd5565b915061100482610fc3565b602082019050919050565b6000602082019050818103600083015261102881610fec565b9050919050565b60008160601b9050919050565b60006110478261102f565b9050919050565b60006110598261103c565b9050919050565b61107161106c82610aef565b61104e565b82525050565b6000819050919050565b61109261108d82610b3f565b611077565b82525050565b60006110a48288611060565b6014820191506110b48287611081565b6020820191506110c48286611081565b6020820191506110d48285611081565b6020820191506110e48284611081565b6020820191508190509695505050505050565b7f436c61696d61626c65546f6b656e3a20496e76616c6964207369676e6174757260008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000611153602183610dd5565b915061115e826110f7565b604082019050919050565b6000602082019050818103600083015261118281611146565b9050919050565b600060408201905061119e6000830185610b01565b6111ab6020830184610dab565b9392505050565b60008115159050919050565b6111c7816111b2565b81146111d257600080fd5b50565b6000815190506111e4816111be565b92915050565b600060208284031215611200576111ff610b35565b5b600061120e848285016111d5565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611273602683610dd5565b915061127e82611217565b604082019050919050565b600060208201905081810360008301526112a281611266565b9050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b60006112ea601c836112a9565b91506112f5826112b4565b601c82019050919050565b6000819050919050565b6000819050919050565b61132561132082611300565b61130a565b82525050565b6000611336826112dd565b91506113428284611314565b60208201915081905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611387602083610dd5565b915061139282611351565b602082019050919050565b600060208201905081810360008301526113b68161137a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000611422601883610dd5565b915061142d826113ec565b602082019050919050565b6000602082019050818103600083015261145181611415565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061148e601f83610dd5565b915061149982611458565b602082019050919050565b600060208201905081810360008301526114bd81611481565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000611520602283610dd5565b915061152b826114c4565b604082019050919050565b6000602082019050818103600083015261154f81611513565b9050919050565b61155f81611300565b82525050565b600060ff82169050919050565b61157b81611565565b82525050565b60006080820190506115966000830187611556565b6115a36020830186611572565b6115b06040830185611556565b6115bd6060830184611556565b9594505050505056fea2646970667358221220aa3f748db38522b934520fff936aca62d03d7dc64930f883cea6c2396d0bf72064736f6c63430008120033000000000000000000000000ba1cbed391b341217424272eda5458d32b8bc2460000000000000000000000000000000000000000000000000000000000000001