608060405234801561000f575f80fd5b50610a2d8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610086575f3560e01c806370a082311161005957806370a0823114610124578063a0712d6814610154578063a9059cbb14610170578063dd62ed3e146101a057610086565b8063095ea7b31461008a57806318160ddd146100ba57806323b872dd146100d857806342966c6814610108575b5f80fd5b6100a4600480360381019061009f91906107e7565b6101d0565b6040516100b1919061083f565b60405180910390f35b6100c26102bd565b6040516100cf9190610867565b60405180910390f35b6100f260048036038101906100ed9190610880565b6102c2565b6040516100ff919061083f565b60405180910390f35b610122600480360381019061011d91906108d0565b610467565b005b61013e600480360381019061013991906108fb565b610539565b60405161014b9190610867565b60405180910390f35b61016e600480360381019061016991906108d0565b61054e565b005b61018a600480360381019061018591906107e7565b610620565b604051610197919061083f565b60405180910390f35b6101ba60048036038101906101b59190610926565b610736565b6040516101c79190610867565b60405180910390f35b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516102ab9190610867565b60405180910390a36001905092915050565b5f5481565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461034a9190610991565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461039d9190610991565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546103f091906109c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104549190610867565b60405180910390a3600190509392505050565b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104b39190610991565b92505081905550805f808282546104ca9190610991565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161052e9190610867565b60405180910390a350565b6001602052805f5260405f205f915090505481565b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461059a91906109c4565b92505081905550805f808282546105b191906109c4565b925050819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106159190610867565b60405180910390a350565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461066d9190610991565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106c091906109c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107249190610867565b60405180910390a36001905092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107838261075a565b9050919050565b61079381610779565b811461079d575f80fd5b50565b5f813590506107ae8161078a565b92915050565b5f819050919050565b6107c6816107b4565b81146107d0575f80fd5b50565b5f813590506107e1816107bd565b92915050565b5f80604083850312156107fd576107fc610756565b5b5f61080a858286016107a0565b925050602061081b858286016107d3565b9150509250929050565b5f8115159050919050565b61083981610825565b82525050565b5f6020820190506108525f830184610830565b92915050565b610861816107b4565b82525050565b5f60208201905061087a5f830184610858565b92915050565b5f805f6060848603121561089757610896610756565b5b5f6108a4868287016107a0565b93505060206108b5868287016107a0565b92505060406108c6868287016107d3565b9150509250925092565b5f602082840312156108e5576108e4610756565b5b5f6108f2848285016107d3565b91505092915050565b5f602082840312156109105761090f610756565b5b5f61091d848285016107a0565b91505092915050565b5f806040838503121561093c5761093b610756565b5b5f610949858286016107a0565b925050602061095a858286016107a0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61099b826107b4565b91506109a6836107b4565b92508282039050818111156109be576109bd610964565b5b92915050565b5f6109ce826107b4565b91506109d9836107b4565b92508282019050808211156109f1576109f0610964565b5b9291505056fea2646970667358221220c0dab32432edd4471f5b798118c40f370b3d0a5f6ea9f58e5c0c24d015912b8464736f6c63430008180033