0x608060405234801561001057600080fd5b50604051610cd5380380610cd5833981810160405281019061003291906100bf565b806002819055506002546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506100ec565b600080fd5b6000819050919050565b61009c81610089565b81146100a757600080fd5b50565b6000815190506100b981610093565b92915050565b6000602082840312156100d5576100d4610084565b5b60006100e3848285016100aa565b91505092915050565b610bda806100fb6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad91906108bb565b60405180910390f35b6100d060048036038101906100cb9190610976565b610239565b6040516100dd91906109d1565b60405180910390f35b6100ee61032b565b6040516100fb91906109fb565b60405180910390f35b61011e60048036038101906101199190610a16565b610335565b60405161012b91906109d1565b60405180910390f35b61013c6105b8565b6040516101499190610a85565b60405180910390f35b61016c60048036038101906101679190610aa0565b6105bd565b60405161017991906109fb565b60405180910390f35b61018a610605565b60405161019791906108bb565b60405180910390f35b6101ba60048036038101906101b59190610976565b61063e565b6040516101c791906109d1565b60405180910390f35b6101ea60048036038101906101e59190610acd565b6107a4565b6040516101f791906109fb565b60405180910390f35b6040518060400160405280600481526020017f544553540000000000000000000000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161031991906109fb565b60405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561038257600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561040b57600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104599190610b3c565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104ec9190610b3c565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105419190610b70565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105a591906109fb565b60405180910390a3600190509392505050565b600881565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600381526020017f545354000000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561068b57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106d99190610b3c565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461072e9190610b70565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161079291906109fb565b60405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561086557808201518184015260208101905061084a565b60008484015250505050565b6000601f19601f8301169050919050565b600061088d8261082b565b6108978185610836565b93506108a7818560208601610847565b6108b081610871565b840191505092915050565b600060208201905081810360008301526108d58184610882565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061090d826108e2565b9050919050565b61091d81610902565b811461092857600080fd5b50565b60008135905061093a81610914565b92915050565b6000819050919050565b61095381610940565b811461095e57600080fd5b50565b6000813590506109708161094a565b92915050565b6000806040838503121561098d5761098c6108dd565b5b600061099b8582860161092b565b92505060206109ac85828601610961565b9150509250929050565b60008115159050919050565b6109cb816109b6565b82525050565b60006020820190506109e660008301846109c2565b92915050565b6109f581610940565b82525050565b6000602082019050610a1060008301846109ec565b92915050565b600080600060608486031215610a2f57610a2e6108dd565b5b6000610a3d8682870161092b565b9350506020610a4e8682870161092b565b9250506040610a5f86828701610961565b9150509250925092565b600060ff82169050919050565b610a7f81610a69565b82525050565b6000602082019050610a9a6000830184610a76565b92915050565b600060208284031215610ab657610ab56108dd565b5b6000610ac48482850161092b565b91505092915050565b60008060408385031215610ae457610ae36108dd565b5b6000610af28582860161092b565b9250506020610b038582860161092b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b4782610940565b9150610b5283610940565b9250828203905081811115610b6a57610b69610b0d565b5b92915050565b6000610b7b82610940565b9150610b8683610940565b9250828201905080821115610b9e57610b9d610b0d565b5b9291505056fea26469706673582212206209d5e1dd67f8b69c21ffaaa315887fc988f00eac477f9c29384bc9eff075b464736f6c634300081200330000000000000000000000000000000000000000000000000de0b6b3a7640000