0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611685806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c578063c2c4c5c111610066578063c2c4c5c11461019c578063d0ebdbe7146101a4578063e30c3978146101c7578063f2fde38b146101d857600080fd5b8063715018a61461016a5780638da5cb5b14610172578063af6a94001461018957600080fd5b8063205c2878146100d457806321df0da7146100e95780632d00ddda14610113578063481c6a751461013e578063485cc9551461014f5780634e71e0c814610162575b600080fd5b6100e76100e2366004611320565b6101eb565b005b605d546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b605e54610126906001600160e01b031681565b6040516001600160e01b03909116815260200161010a565b602f546001600160a01b03166100f6565b6100e761015d36600461134c565b61032b565b6100e7610440565b6100e76104c1565b6000546201000090046001600160a01b03166100f6565b610126610197366004611399565b6104fe565b6100e76105d1565b6101b76101b23660046113cc565b6105d9565b604051901515815260200161010a565b6001546001600160a01b03166100f6565b6100e76101e63660046113cc565b61061c565b336101fe602f546001600160a01b031690565b6001600160a01b0316148061022457506000546001600160a01b03620100009091041633145b6102845760405162461bcd60e51b815260206004820152602660248201527f4d616e61676561626c652f63616c6c65722d6e6f742d6d616e616765722d6f7260448201526516b7bbb732b960d11b60648201526084015b60405180910390fd5b61028c6106fb565b605e80548291906000906102aa9084906001600160e01b03166113ff565b82546001600160e01b039182166101009390930a928302919092021990911617905550605d546102e4906001600160a01b03168383610966565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405161031f91815260200190565b60405180910390a25050565b600054610100900460ff161580801561034b5750600054600160ff909116105b806103655750303b158015610365575060005460ff166001145b6103c85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161027b565b6000805460ff1916600117905580156103eb576000805461ff0019166101001790555b6103f583836109b8565b801561043b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001546001600160a01b0316331461049a5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e657200604482015260640161027b565b6001546104af906001600160a01b0316610a97565b600180546001600160a01b0319169055565b6000546001600160a01b03620100009091041633146104f25760405162461bcd60e51b815260040161027b9061142a565b6104fc6000610a97565b565b60008163ffffffff168363ffffffff161061055b5760405162461bcd60e51b815260206004820152601b60248201527f526573657276652f73746172742d6c6573732d7468656e2d656e640000000000604482015260640161027b565b605f54605e5462ffffff91821691600160e01b9091041660008061057e83610af2565b9150915060008061058e85610b6d565b9150915060006105a2848387868b8f610beb565b905060006105b4858488878c8f610beb565b90506105c08282611461565b985050505050505050505b92915050565b6104fc6106fb565b600080546001600160a01b036201000090910416331461060b5760405162461bcd60e51b815260040161027b9061142a565b61061482610c92565b90505b919050565b6000546001600160a01b036201000090910416331461064d5760405162461bcd60e51b815260040161027b9061142a565b6001600160a01b0381166106b15760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d6164604482015264647265737360d81b606482015260840161027b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b605f54605e54605d546040516370a0823160e01b815230600482015262ffffff93841693600160e01b909304909216916000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190611489565b605e549091506001600160e01b031660008061079d85610af2565b9150915080600001516001600160e01b0316836001600160e01b0316856107c491906114a2565b111561095e574260006107d785876113ff565b90508163ffffffff16836020015163ffffffff16146108b3576040518060400160405280826001600160e01b031681526020018363ffffffff1681525060608862ffffff1662ffffff811061082e5761082e6114ba565b825160209093015163ffffffff16600160e01b026001600160e01b039093169290921791015561086462ffffff80891690610d57565b605e805462ffffff60e01b1916600160e01b62ffffff9384160217905588811610156108ae576108958860016114d0565b605f805462ffffff191662ffffff929092169190911790555b610918565b6040518060400160405280826001600160e01b031681526020018363ffffffff1681525060608562ffffff1662ffffff81106108f1576108f16114ba565b825160209093015163ffffffff16600160e01b026001600160e01b03909316929092179101555b604080516001600160e01b038084168252871660208201527f21d81d5d656869e8ce3ba8d65526a2f0dbbcd3d36f5f9999eb7c84360e45eced910160405180910390a150505b505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261043b908490610d74565b600054610100900460ff166109df5760405162461bcd60e51b815260040161027b906114ee565b6109e882610e49565b6001600160a01b038116610a4c5760405162461bcd60e51b815260206004820152602560248201527f526573657276652f746f6b656e2d63616e2d6e6f742d62652d7a65726f2d6164604482015264647265737360d81b606482015260840161027b565b605d80546001600160a01b0319166001600160a01b0383169081179091556040517ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e90600090a25050565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610b0e604080518082019091526000808252602082015290565b610b1e62ffffff80851690610e7c565b915060608262ffffff1662ffffff8110610b3a57610b3a6114ba565b604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff166020820152919391925050565b6000610b89604080518082019091526000808252602082015290565b82915060608262ffffff1662ffffff8110610ba657610ba66114ba565b604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1660208201819052909150610be65760009150606082610b3a565b915091565b60004262ffffff8416610c02576000915050610c88565b8263ffffffff16876020015163ffffffff161115610c24576000915050610c88565b8263ffffffff16886020015163ffffffff1611610c445750508551610c88565b600080610c5660608989888a88610ea4565b915091508463ffffffff16816020015163ffffffff161415610c7d57519250610c88915050565b50519150610c889050565b9695505050505050565b602f546000906001600160a01b03908116908316811415610d015760405162461bcd60e51b815260206004820152602360248201527f4d616e61676561626c652f6578697374696e672d6d616e616765722d6164647260448201526265737360e81b606482015260840161027b565b602f80546001600160a01b0319166001600160a01b0385811691821790925560405190918316907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a350600192915050565b6000610d6d610d678460016114a2565b83611071565b9392505050565b6000610dc9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661107d9092919063ffffffff16565b9050805160001480610dea575080806020019051810190610dea9190611539565b61043b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161027b565b600054610100900460ff16610e705760405162461bcd60e51b815260040161027b906114ee565b610e7981611094565b50565b600081610e8b575060006105cb565b610d6d6001610e9a84866114a2565b610d67919061155b565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260008662ffffff1690506000818962ffffff1610610eef578862ffffff16610f0a565b6001610f0062ffffff8816846114a2565b610f0a919061155b565b905060005b6002610f1b83856114a2565b610f259190611588565b90508a610f37828962ffffff16611071565b62ffffff1662ffffff8110610f4e57610f4e6114ba565b604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff166020820181905290955080610f9657610f8e8260016114a2565b935050610f0f565b8b610fa6838a62ffffff16610d57565b62ffffff1662ffffff8110610fbd57610fbd6114ba565b604080518082019091529101546001600160e01b038116825263ffffffff600160e01b9091048116602083015290955060009061100290838116908c908b906110c416565b905080801561102b575061102b8660200151898c63ffffffff166110c49092919063ffffffff16565b15611037575050611063565b8061104e5761104760018461155b565b935061105c565b6110598360016114a2565b94505b5050610f0f565b505050965096945050505050565b6000610d6d828461159c565b606061108c8484600085611195565b949350505050565b600054610100900460ff166110bb5760405162461bcd60e51b815260040161027b906114ee565b610e7981610a97565b60008163ffffffff168463ffffffff16111580156110ee57508163ffffffff168363ffffffff1611155b1561110a578263ffffffff168463ffffffff1611159050610d6d565b60008263ffffffff168563ffffffff16116111395761113463ffffffff86166401000000006115b0565b611141565b8463ffffffff165b64ffffffffff16905060008363ffffffff168563ffffffff16116111795761117463ffffffff86166401000000006115b0565b611181565b8463ffffffff165b64ffffffffff169091111595945050505050565b6060824710156111f65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161027b565b600080866001600160a01b031685876040516112129190611600565b60006040518083038185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b509150915061126587838387611270565b979650505050505050565b606083156112dc5782516112d5576001600160a01b0385163b6112d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161027b565b508161108c565b61108c83838151156112f15781518083602001fd5b8060405162461bcd60e51b815260040161027b919061161c565b6001600160a01b0381168114610e7957600080fd5b6000806040838503121561133357600080fd5b823561133e8161130b565b946020939093013593505050565b6000806040838503121561135f57600080fd5b823561136a8161130b565b9150602083013561137a8161130b565b809150509250929050565b803563ffffffff8116811461061757600080fd5b600080604083850312156113ac57600080fd5b6113b583611385565b91506113c360208401611385565b90509250929050565b6000602082840312156113de57600080fd5b8135610d6d8161130b565b634e487b7160e01b600052601160045260246000fd5b60006001600160e01b03828116848216808303821115611421576114216113e9565b01949350505050565b60208082526018908201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604082015260600190565b60006001600160e01b0383811690831681811015611481576114816113e9565b039392505050565b60006020828403121561149b57600080fd5b5051919050565b600082198211156114b5576114b56113e9565b500190565b634e487b7160e01b600052603260045260246000fd5b600062ffffff808316818516808303821115611421576114216113e9565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561154b57600080fd5b81518015158114610d6d57600080fd5b60008282101561156d5761156d6113e9565b500390565b634e487b7160e01b600052601260045260246000fd5b60008261159757611597611572565b500490565b6000826115ab576115ab611572565b500690565b600064ffffffffff808316818516808303821115611421576114216113e9565b60005b838110156115eb5781810151838201526020016115d3565b838111156115fa576000848401525b50505050565b600082516116128184602087016115d0565b9190910192915050565b602081526000825180602084015261163b8160408501602087016115d0565b601f01601f1916919091016040019291505056fea264697066735822122008697e55b8e727737dd610a00024060eb25640667c5c88c171960cc12a75035b64736f6c634300080a0033