0x60a060405234801561001057600080fd5b5061001a33610065565b6000805460ff60a01b1916905560018055604051610037906100b5565b604051809103906000f080158015610053573d6000803e3d6000fd5b506001600160a01b03166080526100c3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6106218062001a3983390190565b608051611946620000f360003960008181609d015281816102c7015281816107110152610c1201526119466000f3fe60806040526004361061007f5760003560e01c80638456cb591161004e5780638456cb59146101325780638da5cb5b14610147578063f2fde38b14610165578063f41b2db61461018557600080fd5b80632a709b141461008b5780633f4ba83a146100dc5780635c975abb146100f3578063715018a61461011d57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100e857600080fd5b506100f1610198565b005b3480156100ff57600080fd5b50600054600160a01b900460ff1660405190151581526020016100d3565b34801561012957600080fd5b506100f16101aa565b34801561013e57600080fd5b506100f16101bc565b34801561015357600080fd5b506000546001600160a01b03166100bf565b34801561017157600080fd5b506100f1610180366004611377565b6101cc565b6100f1610193366004611399565b61024a565b6101a061036f565b6101a86103c9565b565b6101b261036f565b6101a8600061041e565b6101c461036f565b6101a861046e565b6101d461036f565b6001600160a01b03811661023e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102478161041e565b50565b6102526104b1565b61025a61050a565b61026a6080840160608501611377565b6001600160a01b0316336001600160a01b0316146102bd576102926080840160608501611377565b6040516302d9d9c960e31b81526001600160a01b039091166004820152336024820152604401610235565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166377fc3fa86102fc6080860160608701611377565b610306868061143b565b6040518463ffffffff1660e01b81526004016103249392919061148c565b600060405180830381600087803b15801561033e57600080fd5b505af1158015610352573d6000803e3d6000fd5b50505050610361838383610557565b61036a60018055565b505050565b6000546001600160a01b031633146101a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610235565b6103d1610612565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61047661050a565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586104013390565b6002600154036105035760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610235565b6002600155565b600054600160a01b900460ff16156101a85760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610235565b6105618282610662565b610597610571602085018561143b565b61058160a0870160808801611377565b61058e60408801886114ef565b6020013561097c565b6105ac6105a760408501856114ef565b610bd3565b6105bc60a0840160808501611377565b6001600160a01b0316336001600160a01b0316846040516105dd9190611620565b604051908190038120907f1ba5b6ed656994657175705961138c96bd8ec133c35817fa85903f450129e0b190600090a4505050565b600054600160a01b900460ff166101a85760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610235565b8060005b818110156109765736848483818110610681576106816116d5565b905060200281019061069391906116eb565b90506000808036816106a86020870187611377565b60208701356106ba6040890189611701565b6106c760608b018b61143b565b955095508080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525094995092975090955050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690871603905061076057604051631e055a2960e21b81526001600160a01b0386166004820152602401610235565b825160009082825b818110156108eb5736868683818110610783576107836116d5565b604002919091019150600090508061079e6020840184611377565b6107ae6040850160208601611748565b909250905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016107e057479a506108dd565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610848919061176b565b9650610855828d89610d93565b60008160030b126108dd57600381900b6108718b600083610e22565b60408051602081018b90520160408051601f198184030181529190526108b861089b84602061179a565b6108a685602061179a565b6108b0908c6117ad565b8f9190610e22565b6040516020016108ca939291906117e4565b6040516020818303038152906040529a50505b836001019350505050610768565b50600080896001600160a01b031689896040516109089190611827565b60006040518083038185875af1925050503d8060008114610945576040519150601f19603f3d011682016040523d82523d6000602084013e61094a565b606091505b509150915081610960576109608a8a8a84610f2f565b8b6001019b505050505050505050505050610666565b50505050565b600083815b81811015610bca573687878381811061099c5761099c6116d5565b60400291909101915060009050806109b76020840184611377565b915050602082013573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601610abb5747955080861015610a2157604051636a67a2d160e11b81526001600160a01b03831660048201526024810182905260448101879052606401610235565b86861115610ab657610a3387876117ad565b95506000886001600160a01b03168760405160006040518083038185875af1925050503d8060008114610a82576040519150601f19603f3d011682016040523d82523d6000602084013e610a87565b606091505b5050905080610ab45760405163464e254d60e01b81526001600160a01b038a166004820152602401610235565b505b610b79565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b23919061176b565b955080861015610b5f57604051636a67a2d160e11b81526001600160a01b03831660048201526024810182905260448101879052606401610235565b8515610b7957610b796001600160a01b0383168988610f5f565b816001600160a01b03167feaf449319c042c9ba3474fa0c5329eb58cd1f23be110cdbf9d697b8d303dac1587604051610bb491815260200190565b60405180910390a2836001019350505050610981565b50505050505050565b6000803681610be56020860186611377565b6020860135610bf76040880188611701565b929650909450925090506001600160a01b03841615610d8c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610c6d57604051631e055a2960e21b81526001600160a01b0385166004820152602401610235565b82471015610c9757604051633a6465f360e11b815247600482015260248101849052604401610235565b600080856001600160a01b0316858585604051610cb5929190611839565b60006040518083038185875af1925050503d8060008114610cf2576040519150601f19603f3d011682016040523d82523d6000602084013e610cf7565b606091505b509150915081610d4457610d44868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250610f2f915050565b856001600160a01b03167f6c936258f37a22c831493e49cb45429bdf7b6bb0e261f271a15f084e5b08aaff868686604051610d8193929190611849565b60405180910390a250505b5050505050565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015282919085169063dd62ed3e90604401602060405180830381865afa158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e06919061176b565b101561036a5761036a6001600160a01b03841683600019610fc2565b606081610e3081601f61179a565b1015610e6f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610235565b610e79828461179a565b84511015610ebd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610235565b606082158015610edc5760405191506000825260208201604052610f26565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f15578051835260209283019201610efd565b5050858452601f01601f1916604052505b50949350505050565b8051600003610f575783838360405163e1eec8f160e01b8152600401610235939291906118ab565b805181602001fd5b6040516001600160a01b03831660248201526044810182905261036a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261104d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110138482611122565b610976576040516001600160a01b03841660248201526000604482015261104790859063095ea7b360e01b90606401610f8b565b61097684825b60006110a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111cb9092919063ffffffff16565b90508051600014806110c35750808060200190518101906110c391906118db565b61036a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610235565b6000806000846001600160a01b03168460405161113f9190611827565b6000604051808303816000865af19150503d806000811461117c576040519150601f19603f3d011682016040523d82523d6000602084013e611181565b606091505b50915091508180156111ab5750805115806111ab5750808060200190518101906111ab91906118db565b80156111c057506001600160a01b0385163b15155b925050505b92915050565b60606111da84846000856111e2565b949350505050565b6060824710156112435760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610235565b600080866001600160a01b0316858760405161125f9190611827565b60006040518083038185875af1925050503d806000811461129c576040519150601f19603f3d011682016040523d82523d6000602084013e6112a1565b606091505b50915091506112b2878383876112bd565b979650505050505050565b6060831561132c578251600003611325576001600160a01b0385163b6113255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610235565b50816111da565b6111da83838151156113415781518083602001fd5b8060405162461bcd60e51b815260040161023591906118fd565b80356001600160a01b038116811461137257600080fd5b919050565b60006020828403121561138957600080fd5b6113928261135b565b9392505050565b6000806000604084860312156113ae57600080fd5b833567ffffffffffffffff808211156113c657600080fd5b9085019060a082880312156113da57600080fd5b909350602085013590808211156113f057600080fd5b818601915086601f83011261140457600080fd5b81358181111561141357600080fd5b8760208260051b850101111561142857600080fd5b6020830194508093505050509250925092565b6000808335601e1984360301811261145257600080fd5b83018035915067ffffffffffffffff82111561146d57600080fd5b6020019150600681901b360382131561148557600080fd5b9250929050565b6001600160a01b03848116825260406020808401829052838201859052600092869160608601855b888110156114e157836114c68661135b565b168252848301358383015293850193908501906001016114b4565b509998505050505050505050565b60008235605e1983360301811261150557600080fd5b9190910192915050565b6000808335601e1984360301811261152657600080fd5b830160208101925035905067ffffffffffffffff81111561154657600080fd5b8060061b360382131561148557600080fd5b6001600160a01b036115698261135b565b168252602090810135910152565b60008235605e1983360301811261158d57600080fd5b90910192915050565b6001600160a01b036115a78261135b565b1682526020810135602083015260006040820135601e198336030181126115cd57600080fd5b820160208101903567ffffffffffffffff8111156115ea57600080fd5b8036038213156115f957600080fd5b808260408701376000604082870101526040601f19601f8301168601019250505092915050565b600061162c838461150f565b8360005b82811015611655576116428285611558565b6040938401939190910190600101611630565b50611663602087018761150f565b935091506000905b838210156116905761167d8184611558565b604092830192600192909201910161166b565b6112b26116c96116ac836116a760408c018c611577565b611596565b6116b860608b0161135b565b6001600160a01b0316815260200190565b6116b860808a0161135b565b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261150557600080fd5b6000808335601e1984360301811261171857600080fd5b83018035915067ffffffffffffffff82111561173357600080fd5b60200191503681900382131561148557600080fd5b60006020828403121561175a57600080fd5b81358060030b811461139257600080fd5b60006020828403121561177d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156111c5576111c5611784565b818103818111156111c5576111c5611784565b60005b838110156117db5781810151838201526020016117c3565b50506000910152565b600084516117f68184602089016117c0565b84519083019061180a8183602089016117c0565b845191019061181d8183602088016117c0565b0195945050505050565b600082516115058184602087016117c0565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600081518084526118978160208601602086016117c0565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006118d2606083018461187f565b95945050505050565b6000602082840312156118ed57600080fd5b8151801515811461139257600080fd5b602081526000611392602083018461187f56fea2646970667358221220428494583f8f603be7d53ac1f195c318008a4f0bb5de2fc457ff9b9cfb4774b964736f6c6343000813003360a060405234801561001057600080fd5b50336080526080516105ec6100356000396000818160400152609e01526105ec6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063262d61521461003b57806377fc3fa81461007e575b600080fd5b6100627f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b61009161008c366004610463565b610093565b005b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100e35760405163403e63e960e01b81523360048201526024015b60405180910390fd5b8060005b818110156101765736848483818110610102576101026104e9565b60019094019360400291909101915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905061013560208301836104ff565b6001600160a01b03160361014957506100e7565b61017086336020840180359061015f90866104ff565b6001600160a01b031692919061017d565b506100e7565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526101d79085906101dd565b50505050565b6000610232826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166102b79092919063ffffffff16565b90508051600014806102535750808060200190518101906102539190610521565b6102b25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016100da565b505050565b60606102c684846000856102ce565b949350505050565b60608247101561032f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016100da565b600080866001600160a01b0316858760405161034b9190610567565b60006040518083038185875af1925050503d8060008114610388576040519150601f19603f3d011682016040523d82523d6000602084013e61038d565b606091505b509150915061039e878383876103a9565b979650505050505050565b60608315610418578251600003610411576001600160a01b0385163b6104115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100da565b50816102c6565b6102c6838381511561042d5781518083602001fd5b8060405162461bcd60e51b81526004016100da9190610583565b80356001600160a01b038116811461045e57600080fd5b919050565b60008060006040848603121561047857600080fd5b61048184610447565b9250602084013567ffffffffffffffff8082111561049e57600080fd5b818601915086601f8301126104b257600080fd5b8135818111156104c157600080fd5b8760208260061b85010111156104d657600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561051157600080fd5b61051a82610447565b9392505050565b60006020828403121561053357600080fd5b8151801515811461051a57600080fd5b60005b8381101561055e578181015183820152602001610546565b50506000910152565b60008251610579818460208701610543565b9190910192915050565b60208152600082518060208401526105a2816040850160208701610543565b601f01601f1916919091016040019291505056fea264697066735822122075ea8cd652fc6d5f761cc0326f463dc451f21530da9ad88ccd20fb1f7f6c9b3264736f6c63430008130033