60806040526001805460ff60a01b1916905534801561001d57600080fd5b506040516119733803806119738339818101604052602081101561004057600080fd5b5051600080546001600160a01b0319166001600160a01b0383169081178255660aa87bee53800060069081559082526008602090815260409092206607222fb4d4ffff1990819055905461009b926100a4811b6116a017901c565b6007555061010e565b60008082116100fa576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161010557fe5b04949350505050565b6118568061011d6000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c80638456cb591161011a578063a9059cbb116100ad578063dd62ed3e1161007c578063dd62ed3e1461053b578063eb392a2614610569578063f06fc10314610595578063f2fde38b146105c7578063fe3ce413146105ed576101fa565b8063a9059cbb146104f7578063c2e4d2c114610523578063d3a666461461052b578063d4ee1d9014610533576101fa565b80639f09c43a116100e95780639f09c43a14610477578063a2948cdf1461049d578063a457c2d7146104a5578063a5131b4f146104d1576101fa565b80638456cb59146104575780638da5cb5b1461045f57806395d89b41146104675780639ba842b21461046f576101fa565b8063395093511161019257806370a082311161016157806370a08231146103fe57806379ba5097146104245780637a43e23f1461042c5780637d8452f01461044f576101fa565b8063395093511461039a5780633f4ba83a146103c65780633fbb2c01146103d05780635c975abb146103f6576101fa565b806318160ddd116101ce57806318160ddd146102fc57806323b872dd146103045780632ea503a91461033a578063313ce5671461037c576101fa565b8062ec44de146101ff57806306fdde03146102395780630799f2d3146102b6578063095ea7b3146102d0575b600080fd5b6102256004803603602081101561021557600080fd5b50356001600160a01b0316610613565b604080519115158252519081900360200190f35b610241610628565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027b578181015183820152602001610263565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102be61064c565b60408051918252519081900360200190f35b610225600480360360408110156102e657600080fd5b506001600160a01b038135169060200135610652565b6102be6106b9565b6102256004803603606081101561031a57600080fd5b506001600160a01b038135811691602081013590911690604001356106bf565b6103606004803603602081101561035057600080fd5b50356001600160a01b0316610924565b604080516001600160a01b039092168252519081900360200190f35b6103846109a6565b6040805160ff9092168252519081900360200190f35b610225600480360360408110156103b057600080fd5b506001600160a01b0381351690602001356109ab565b6103ce610a44565b005b6102be600480360360208110156103e657600080fd5b50356001600160a01b0316610aa9565b610225610abb565b6102be6004803603602081101561041457600080fd5b50356001600160a01b0316610acb565b6103ce610af9565b6102256004803603604081101561044257600080fd5b5080359060200135610b74565b6102be610d32565b6103ce610d38565b610360610da4565b610241610db3565b6102be610dd3565b6102be6004803603602081101561048d57600080fd5b50356001600160a01b0316610dd9565b6102be610deb565b610225600480360360408110156104bb57600080fd5b506001600160a01b038135169060200135610df1565b6102be600480360360208110156104e757600080fd5b50356001600160a01b0316610ee0565b6102256004803603604081101561050d57600080fd5b506001600160a01b038135169060200135610f9b565b6102be611254565b61036061125a565b610360611269565b6102be6004803603604081101561055157600080fd5b506001600160a01b0381358116916020013516611278565b6102256004803603604081101561057f57600080fd5b506001600160a01b0381351690602001356112a3565b610225600480360360608110156105ab57600080fd5b506001600160a01b038135169060208101359060400135611364565b6103ce600480360360208110156105dd57600080fd5b50356001600160a01b0316611443565b6102be6004803603602081101561060357600080fd5b50356001600160a01b031661147c565b600f6020526000908152604090205460ff1681565b60405180604001604052806008815260200167547275616d706c6560c01b81525081565b600b5481565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60065490565b600154600090600160a01b900460ff16156106d957600080fd5b6001600160a01b0384166000908152600f602052604090205460ff1615610912576001600160a01b038416600090815260116020908152604080832054601090925290912054141561073a5761073084848461148e565b506001905061091d565b6001600160a01b038416600090815260126020526040902054610766906213c68063ffffffff6115ed16565b4210156107b2576040805162461bcd60e51b81526020600482015260156024820152747a65726f206379636c652069732072756e6e696e6760581b604482015290519081900360640190fd5b60006107bd85610ee0565b6001600160a01b038616600090815260116020526040812054919250906107fe906064906107f290600363ffffffff61164716565b9063ffffffff6116a016565b6001600160a01b038716600090815260116020908152604080832054601090925290912054919250141561083157600080fd5b610841818363ffffffff61164716565b6001600160a01b038716600090815260106020526040902054141561086557600080fd5b610875818363ffffffff61164716565b6001600160a01b038716600090815260106020526040902054101561090b576001600160a01b03861660009081526010602052604090205484906108c090829063ffffffff6115ed16565b6001600160a01b03881660009081526010602081815260408084208590556011825290922054915210156108f357600080fd5b6108fe87878761148e565b506001935050505061091d565b505061091d565b61073084848461148e565b9392505050565b600080546001600160a01b0316331461093c57600080fd5b600580546001600160a01b0319166001600160a01b03848116919091179182905560408051929091168252517fcf8935b4177984087307bb28b1231a42b983c76a8b315ca5cb5a8f4f1932fa43916020908290030190a1506005546001600160a01b03165b919050565b600981565b3360009081526009602090815260408083206001600160a01b03861684529091528120546109df908363ffffffff6115ed16565b3360008181526009602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000546001600160a01b03163314610a5b57600080fd5b600154600160a01b900460ff16610a7157600080fd5b6001805460ff60a01b191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60126020526000908152604090205481565b600154600160a01b900460ff1681565b6007546001600160a01b03821660009081526008602052604081205490916106b3919063ffffffff6116a016565b6001546001600160a01b03163314610b1057600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6005546000906001600160a01b0316610bd4576040805162461bcd60e51b815260206004820152601a60248201527f7265626173652061646472657373206e6f742073657420796574000000000000604482015290519081900360640190fd5b6005546001600160a01b03163314610c33576040805162461bcd60e51b815260206004820152601d60248201527f4e6f742063616c6c65642062792072656261736520636f6e7472616374000000604482015290519081900360640190fd5b81610c7857600654604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a25060016106b3565b6000821215610ca457610c9c610c8d8361170a565b6006549063ffffffff61173216565b600655610cbb565b600654610cb7908363ffffffff6115ed16565b6006555b6006546001600160801b031015610cd8576001600160801b036006555b600654610cee906607222fb4d4ffff19906116a0565b600755600654604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a250600192915050565b600a5481565b6000546001600160a01b03163314610d4f57600080fd5b600154600160a01b900460ff1615610d6657600080fd5b6001805460ff60a01b1916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000546001600160a01b031681565b604051806040016040528060048152602001631513541360e21b81525081565b600c5481565b60116020526000908152604090205481565b600d5481565b3360009081526009602090815260408083206001600160a01b0386168452909152812054808310610e45573360009081526009602090815260408083206001600160a01b0388168452909152812055610e7a565b610e55818463ffffffff61173216565b3360009081526009602090815260408083206001600160a01b03891684529091529020555b3360008181526009602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b0381166000908152600f602052604081205460ff16610f0557600080fd5b6001600160a01b038216600090815260126020526040812054610f2f90429063ffffffff61173216565b90506213c6808111610f455760009150506109a1565b6213c68081118015610f5b575063028c96808111155b15610f7f576000610f75826213c68063ffffffff6116a016565b92506109a1915050565b63028c9680811115610f955760229150506109a1565b50919050565b600154600090600160a01b900460ff1615610fb557600080fd5b336000908152600f602052604090205460ff16156112495733600090815260116020908152604080832054601090925290912054141561100457610ffa33848461178f565b50600190506106b3565b33600090815260126020526040902054611027906213c68063ffffffff6115ed16565b421015611073576040805162461bcd60e51b81526020600482015260156024820152745a65726f206379636c652069732072756e6e696e6760581b604482015290519081900360640190fd5b600061107e33610ee0565b33600090815260116020526040812054919250906110aa906064906107f290600363ffffffff61164716565b336000908152601160209081526040808320546010909252909120549192501415611112576040805162461bcd60e51b8152602060048201526013602482015272185b1b081d1bdad95b9cc81c995b19585cd959606a1b604482015290519081900360640190fd5b611122818363ffffffff61164716565b336000908152601060205260409020541415611185576040805162461bcd60e51b815260206004820152601e60248201527f74686973206379636c6520616c6c20746f6b656e732072656c65617365640000604482015290519081900360640190fd5b611195818363ffffffff61164716565b336000908152601060205260409020541015611242573360009081526010602052604090205484906111ce90829063ffffffff6115ed16565b33600090815260106020818152604080842085905560118252909220549152101561122a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806117d3602e913960400191505060405180910390fd5b61123533878761178f565b50600193505050506106b3565b50506106b3565b610ffa33848461178f565b600e5481565b6005546001600160a01b031681565b6001546001600160a01b031681565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b600154600090600160a01b900460ff16156112bd57600080fd5b6000546001600160a01b031633146112d457600080fd5b6001600160a01b0383166000908152600f60209081526040808320805460ff191660011790556011909152902054611312908363ffffffff6115ed16565b6001600160a01b0384166000908152601160209081526040808320939093556012905220429055600b5461134c908363ffffffff6115ed16565b600b5561135a33848461178f565b5060019392505050565b600154600090600160a01b900460ff161561137e57600080fd5b6000546001600160a01b0316331461139557600080fd5b81600114156113c557600a546113b1908463ffffffff6115ed16565b600a556113bf33858561178f565b5061091d565b81600214156113ef57600c546113e1908463ffffffff6115ed16565b600c556113bf33858561178f565b816003141561141957600d5461140b908463ffffffff6115ed16565b600d556113bf33858561178f565b81600414156101fa57600e54611435908463ffffffff6115ed16565b600e556113bf33858561178f565b6000546001600160a01b0316331461145a57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60106020526000908152604090205481565b6000826001600160a01b0381166114a457600080fd5b6001600160a01b0381163014156114ba57600080fd5b6001600160a01b03851660009081526009602090815260408083203384529091529020546114ee908463ffffffff61173216565b6001600160a01b038616600090815260096020908152604080832033845290915281209190915560075461152990859063ffffffff61164716565b6001600160a01b038716600090815260086020526040902054909150611555908263ffffffff61173216565b6001600160a01b03808816600090815260086020526040808220939093559087168152205461158a908263ffffffff6115ed16565b6001600160a01b0380871660008181526008602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350600195945050505050565b60008282018381101561091d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082611656575060006106b3565b8282028284828161166357fe5b041461091d5760405162461bcd60e51b81526004018080602001828103825260218152602001806118016021913960400191505060405180910390fd5b60008082116116f6576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161170157fe5b04949350505050565b6000600160ff1b82141561171d57600080fd5b6000821261172b57816106b3565b5060000390565b600082821115611789576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826001600160a01b0381166117a557600080fd5b6001600160a01b0381163014156117bb57600080fd5b60006115296007548561164790919063ffffffff1656fe746f6b656e732072656c6561736564206172652067726561746572207468656e20696e6974616c20746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158203ae598c600a32813c04155c9e876fb5436600a2e06664e0ff36f5322e761735364736f6c63430005100032000000000000000000000000abef059ae67c986bf4a60d26d00ffb7e3480fc46