0x608060405234801561000f575f80fd5b5061001933610022565b60018055610071565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119c98061007e5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063848ff68411610088578063b80777ea11610063578063b80777ea146101c8578063d196cd3f146101d0578063e322ad2b146101e3578063f2fde38b146101eb575f80fd5b8063848ff684146101935780638da5cb5b146101a6578063a9c2c7b8146101c0575f80fd5b80632e1a7d4d116100c35780632e1a7d4d1461016657806335a063b41461017b5780634bb278f314610183578063715018a61461018b575f80fd5b806301ffc9a7146100e9578063199cbc541461013b578063200d2ed214610151575b5f80fd5b6101266100f73660046117e5565b6001600160e01b0319167f5b2d9498000000000000000000000000000000000000000000000000000000001490565b60405190151581526020015b60405180910390f35b6101436101fe565b604051908152602001610132565b6101596102db565b6040516101329190611813565b610179610174366004611839565b61030e565b005b61017961070d565b6101796109db565b610179610d26565b6101796101a1366004611866565b610d37565b5f546040516001600160a01b039091168152602001610132565b600a54610143565b61014361140f565b6101436101de366004611839565b611427565b610143611567565b6101796101f93660046118ce565b61164a565b6011545f9060ff1661026d5760405162461bcd60e51b815260206004820152602d60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e7472616374206973206e6f60448201526c1d081a5b9a5d1a585b1a5e9959609a1b60648201526084015b60405180910390fd5b600d5461027861140f565b101561028357505f90565b600e5461028e61140f565b1061029a575060085490565b600354600e546102aa91906118fb565b6003546102b561140f565b6102bf91906118fb565b6008546102cc9190611914565b6102d6919061192b565b905090565b5f600d546102e761140f565b10156102f257505f90565b600e546102fd61140f565b106103085750600290565b50600190565b6103166116d7565b60115460ff1661037e5760405162461bcd60e51b815260206004820152602d60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e7472616374206973206e6f60448201526c1d081a5b9a5d1a585b1a5e9959609a1b6064820152608401610264565b6009546001600160a01b0316336001600160a01b0316146104075760405162461bcd60e51b815260206004820152602f60248201527f4b616e6e6153746f636b4f7074696f6e3a2063616c6c6572206973206e6f742060448201527f7468652062656e656669636961727900000000000000000000000000000000006064820152608401610264565b5f811161047c5760405162461bcd60e51b815260206004820152602a60248201527f4b616e6e6153746f636b4f7074696f6e3a20696e76616c696420616d6f756e7460448201527f546f5769746864726177000000000000000000000000000000000000000000006064820152608401610264565b610484611567565b81111561051f5760405162461bcd60e51b815260206004820152604660248201527f4b616e6e6153746f636b4f7074696f6e3a20616d6f756e74546f57697468647260448201527f61772069732067726561746572207468616e20617661696c61626c65546f576960648201527f7468647261770000000000000000000000000000000000000000000000000000608482015260a401610264565b6013544290620151809061053390836118fb565b10156105a75760405162461bcd60e51b815260206004820152603560248201527f4b616e6e6153746f636b4f7074696f6e3a204f6e6c79206f6e6520776974686460448201527f726177616c20616c6c6f776564207065722064617900000000000000000000006064820152608401610264565b81600b5f8282546105b8919061194a565b909155505060025460095460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303815f875af115801561060f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610633919061195d565b50336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568836012548461066e91906118fb565b6040805192835260208301919091520160405180910390a2600854600b54036106fe576010819055600f805460ff191660011790556106aa3390565b6001600160a01b03167f5a6210eb731204202e7e7db520ca0191a0c4aa8e0f40bcf9787dddf3e785643f836012546010546106e591906118fb565b6040805192835260208301919091520160405180910390a25b60135561070a60018055565b50565b6107156116d7565b6002546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561075b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f919061197c565b116107f25760405162461bcd60e51b815260206004820152602960248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e747261637420686173206e60448201527f6f2062616c616e636500000000000000000000000000000000000000000000006064820152608401610264565b6009546001600160a01b0316336001600160a01b03161461087b5760405162461bcd60e51b815260206004820152602f60248201527f4b616e6e6153746f636b4f7074696f6e3a2063616c6c6572206973206e6f742060448201527f7468652062656e656669636961727900000000000000000000000000000000006064820152608401610264565b6002546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e5919061197c565b6002549091506001600160a01b031663a9059cbb61090a5f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610954573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610978919061195d565b50600f805460ff1916600117905561098d3390565b6001600160a01b03167fe114c0b93386ccf95ba009437b6b7418e96107083b65065ebf0e01bc935135fc826040516109c791815260200190565b60405180910390a2506109d960018055565b565b6109e36116d7565b60115460ff16610a4b5760405162461bcd60e51b815260206004820152602d60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e7472616374206973206e6f60448201526c1d081a5b9a5d1a585b1a5e9959609a1b6064820152608401610264565b5f546001600160a01b0316331480610a7657506009546001600160a01b0316336001600160a01b0316145b610ae85760405162461bcd60e51b815260206004820152603860248201527f4b616e6e6153746f636b4f7074696f6e3a2063616c6c6572206973206e6f742060448201527f746865206f776e6572206f722062656e656669636961727900000000000000006064820152608401610264565b600f5460ff1615610b615760405162461bcd60e51b815260206004820152602c60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e747261637420616c72656160448201527f64792066696e616c697a656400000000000000000000000000000000000000006064820152608401610264565b5f610b6a611567565b90508015610c005780600b5f828254610b83919061194a565b909155505060025460095460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303815f875af1158015610bda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfe919061195d565b505b5f610c096101fe565b600854610c1691906118fb565b90508015610cb0576002546001600160a01b031663a9059cbb610c405f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610c8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cae919061195d565b505b42601055600f805460ff19166001179055610cc83390565b6001600160a01b03167f5a6210eb731204202e7e7db520ca0191a0c4aa8e0f40bcf9787dddf3e785643f83601254601054610d0391906118fb565b6040805192835260208301919091520160405180910390a250506109d960018055565b610d2e611730565b6109d95f611789565b5f546001600160a01b031615610d4f57610d4f611730565b60115460ff1615610dc85760405162461bcd60e51b815260206004820152602e60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e747261637420616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610264565b5f8711610e3d5760405162461bcd60e51b815260206004820152602360248201527f4b616e6e6153746f636b4f7074696f6e3a20737461727444617465206973207a60448201527f65726f00000000000000000000000000000000000000000000000000000000006064820152608401610264565b5f8611610eb25760405162461bcd60e51b815260206004820152602760248201527f4b616e6e6153746f636b4f7074696f6e3a20646179734f6656657374696e672060448201527f6973207a65726f000000000000000000000000000000000000000000000000006064820152608401610264565b5f8211610f015760405162461bcd60e51b815260206004820181905260248201527f4b616e6e6153746f636b4f7074696f6e3a20616d6f756e74206973207a65726f6044820152606401610264565b6001600160a01b038116610f7d5760405162461bcd60e51b815260206004820152602560248201527f4b616e6e6153746f636b4f7074696f6e3a2062656e656669636961727920697360448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610264565b85610f88858761194a565b11156110225760405162461bcd60e51b815260206004820152604560248201527f4b616e6e6153746f636b4f7074696f6e3a20646179734f66436c69666620706c60448201527f757320646179734f664c6f636b206f766572666c6f777320646179734f66566560648201527f7374696e67000000000000000000000000000000000000000000000000000000608482015260a401610264565b60648311156110995760405162461bcd60e51b815260206004820152603460248201527f4b616e6e6153746f636b4f7074696f6e3a2070657263656e744f664772616e7460448201527f2069732067726561746572207468616e203130300000000000000000000000006064820152608401610264565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a16908117909155829063dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015611114573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611138919061197c565b10156111ac5760405162461bcd60e51b815260206004820152602860248201527f4b616e6e6153746f636b4f7074696f6e3a20696e73756666696369656e74206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610264565b6002546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303815f875af115801561120e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611232919061195d565b6112a45760405162461bcd60e51b815260206004820152602660248201527f4b616e6e6153746f636b4f7074696f6e3a20696e73756666696369656e74206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610264565b6003879055600486905560058590556006849055600783905560088290556009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831617905560646112f68484611914565b611300919061192b565b600a556113108562015180611914565b61131a908861194a565b600d5561132a8462015180611914565b600d54611337919061194a565b600c556113478662015180611914565b611351908861194a565b600e55600f805460ff199081169091555f600b55601180549091166001179055426012819055604080516001600160a01b038b81168252602082018b90528183018a9052606082018990526080820188905260a0820187905260c08201869052841660e0820152610100810192909252517f78c506a92f20ac959ccb586e7f4e8f83f4b27d00dc2794a1b22f47ba61337fb9918190036101200190a15f546001600160a01b03166114055761140533611789565b5050505050505050565b600f545f9060ff1661142057504290565b5060105490565b6011545f9060ff166114915760405162461bcd60e51b815260206004820152602d60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e7472616374206973206e6f60448201526c1d081a5b9a5d1a585b1a5e9959609a1b6064820152608401610264565b6003548210156115095760405162461bcd60e51b815260206004820152602a60248201527f4b616e6e6153746f636b4f7074696f6e3a2064617465206973206265666f726560448201527f20737461727444617465000000000000000000000000000000000000000000006064820152608401610264565b600d5482101561151a57505f919050565b600e54821061152b57505060085490565b600354600e5461153b91906118fb565b60035461154890846118fb565b6008546115559190611914565b61155f919061192b565b90505b919050565b6011545f9060ff166115d15760405162461bcd60e51b815260206004820152602d60248201527f4b616e6e6153746f636b4f7074696f6e3a20636f6e7472616374206973206e6f60448201526c1d081a5b9a5d1a585b1a5e9959609a1b6064820152608401610264565b600d546115dc61140f565b10156115e757505f90565b600e546115f261140f565b1061160757600b546008546102d691906118fb565b600c54421080156116205750600a5461161e6101fe565b115b1561163557600b54600a546102d691906118fb565b600b546116406101fe565b6102d691906118fb565b611652611730565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610264565b61070a81611789565b6002600154036117295760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610264565b6002600155565b5f546001600160a01b031633146109d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610264565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156117f5575f80fd5b81356001600160e01b03198116811461180c575f80fd5b9392505050565b602081016003831061183357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215611849575f80fd5b5035919050565b80356001600160a01b0381168114611562575f80fd5b5f805f805f805f80610100898b03121561187e575f80fd5b61188789611850565b97506020890135965060408901359550606089013594506080890135935060a0890135925060c089013591506118bf60e08a01611850565b90509295985092959890939650565b5f602082840312156118de575f80fd5b61180c82611850565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561190e5761190e6118e7565b92915050565b808202811582820484141761190e5761190e6118e7565b5f8261194557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561190e5761190e6118e7565b5f6020828403121561196d575f80fd5b8151801515811461180c575f80fd5b5f6020828403121561198c575f80fd5b505191905056fea264697066735822122038fcfcacba84f7f58716c86da1669170905aeff34169a0657de15aaa6a269f1764736f6c63430008150033