6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620005b9565b620000459066017e9d8602b400620005d1565b600555620000566009600a620005b9565b62000068906507a6fd8f6a00620005d1565b600655620000796009600a620005b9565b6200008b906507a6fd8f6a00620005d1565b6007556000600d556008600e556000600f5560026010556000601155601154600f54600d54600e54601054620000c29190620005eb565b620000ce9190620005eb565b620000da9190620005eb565b620000e69190620005eb565b60125560646013819055601481815560158290556016829055601c55601d556020805461ffff60a01b1916600160a81b179055600554612710906200012d906096620005d1565b62000139919062000601565b6021553480156200014957600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000624565b600280546001600160a01b0319166001600160a01b03928316179055601e546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b4919062000624565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032c919062000624565b602080546001600160a01b039283166001600160a01b031991821681178355601f805483169091179055306000818152600984526040808220601e54871683528552808220600019905533808352600a8652818320805460ff199081166001908117909255601980548a1686528486208054831684179055601880548b1687528587208054841685179055848752600b8a52858720805484168517905589548b168752858720805484168517905581548b16875285872080548416851790558054909a1686528486208054831684179055958552838520805490911690911790556017805486168217905586548516733197cdd606e2768e15b9c1dbf1bc0c8b1f30a16a17909655825484168617909255601a8054841686179055601b8054909316851790925560055484835260089093528082208390555190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200049691815260200190565b60405180910390a36200064f565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004fb578160001904821115620004df57620004df620004a4565b80851615620004ed57918102915b93841c9390800290620004bf565b509250929050565b6000826200051457506001620005b3565b816200052357506000620005b3565b81600181146200053c5760028114620005475762000567565b6001915050620005b3565b60ff8411156200055b576200055b620004a4565b50506001821b620005b3565b5060208310610133831016604e8410600b84101617156200058c575081810a620005b3565b620005988383620004ba565b8060001904821115620005af57620005af620004a4565b0290505b92915050565b6000620005ca60ff84168362000503565b9392505050565b8082028115828204841417620005b357620005b3620004a4565b80820180821115620005b357620005b3620004a4565b6000826200061f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200063757600080fd5b81516001600160a01b0381168114620005ca57600080fd5b6123b9806200065f6000396000f3fe60806040526004361061023f5760003560e01c80638a4068dd1161012e578063ccf8c036116100ab578063dd62ed3e1161006f578063dd62ed3e146106a9578063ec7cd01a146106ef578063f2fde38b1461070f578063f6a78e171461072f578063f887ea401461074457600080fd5b8063ccf8c03614610614578063cec10c1114610634578063d148b74c14610654578063d51ed1c814610669578063d78e139d1461068957600080fd5b80639acb773e116100f25780639acb773e14610574578063a8aa1b3114610594578063a9059cbb146105b4578063b2bdfa7b146105d4578063ba08f418146105f457600080fd5b80638a4068dd146104de5780638a8c523c146104f35780638da5cb5b14610508578063918924761461052657806395d89b411461054657600080fd5b80632b112e49116101bc578063715018a611610180578063715018a61461044b57806377b54bad1461046057806378109e54146104805780637d1db4a514610496578063893d20e8146104ac57600080fd5b80632b112e49146103ae578063313ce567146103c35780634d07912a146103df5780636ddd1713146103f457806370a082311461041557600080fd5b8063095ea7b311610203578063095ea7b3146103235780631161ae391461034357806318160ddd146103635780631df4ccfc1461037857806323b872dd1461038e57600080fd5b806304368f651461024b5780630445b6671461026d5780630621472c1461029657806306fdde03146102c657806308fd3d051461030257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004611ddd565b610764565b005b34801561027957600080fd5b5061028360215481565b6040519081526020015b60405180910390f35b3480156102a257600080fd5b506102b66102b1366004611e20565b6107cb565b604051901515815260200161028d565b3480156102d257600080fd5b5060408051808201909152600a81526929a0a620a6a0a72222a960b11b60208201525b60405161028d9190611e3b565b34801561030e57600080fd5b506020546102b690600160a01b900460ff1681565b34801561032f57600080fd5b506102b661033e366004611e89565b6107df565b34801561034f57600080fd5b506102b661035e366004611ea5565b61084b565b34801561036f57600080fd5b50600554610283565b34801561038457600080fd5b5061028360125481565b34801561039a57600080fd5b506102b66103a9366004611ec7565b61085f565b3480156103ba57600080fd5b50610283610921565b3480156103cf57600080fd5b506040516009815260200161028d565b3480156103eb57600080fd5b5061026b610973565b34801561040057600080fd5b506020546102b690600160a81b900460ff1681565b34801561042157600080fd5b50610283610430366004611e20565b6001600160a01b031660009081526008602052604090205490565b34801561045757600080fd5b5061026b610a1e565b34801561046c57600080fd5b506102b661047b366004611e89565b610a92565b34801561048c57600080fd5b5061028360075481565b3480156104a257600080fd5b5061028360065481565b3480156104b857600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161028d565b3480156104ea57600080fd5b5061026b610b92565b3480156104ff57600080fd5b5061026b610bdd565b34801561051457600080fd5b506000546001600160a01b03166104c6565b34801561053257600080fd5b5061026b610541366004611f03565b610c2d565b34801561055257600080fd5b5060408051808201909152600581526453414c4c5960d81b60208201526102f5565b34801561058057600080fd5b5061026b61058f366004611f46565b610cf3565b3480156105a057600080fd5b506020546104c6906001600160a01b031681565b3480156105c057600080fd5b506102b66105cf366004611e89565b610d48565b3480156105e057600080fd5b506000546104c6906001600160a01b031681565b34801561060057600080fd5b5061026b61060f366004611f93565b610d55565b34801561062057600080fd5b5061026b61062f366004611f46565b610deb565b34801561064057600080fd5b5061026b61064f36600461206a565b610e53565b34801561066057600080fd5b5061026b610e8e565b34801561067557600080fd5b50610283610684366004612096565b610ec2565b34801561069557600080fd5b5061026b6106a4366004612096565b610f0a565b3480156106b557600080fd5b506102836106c43660046120af565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106fb57600080fd5b5061026b61070a366004611f46565b610f59565b34801561071b57600080fd5b5061026b61072a366004611e20565b610fae565b34801561073b57600080fd5b5061026b611098565b34801561075057600080fd5b50601e546104c6906001600160a01b031681565b6000546001600160a01b031633146107975760405162461bcd60e51b815260040161078e906120e2565b60405180910390fd5b6020805460ff60a81b1916600160a81b841515021790556107ba6009600a612211565b6107c49082612220565b6021555050565b60006107d9826000196107df565b92915050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061083a9086815260200190565b60405180910390a350600192915050565b60008261085783610ec2565b119392505050565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461090c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546108e7918490611104565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61091784848461113e565b90505b9392505050565b6004546001600160a01b031660009081526008602052604081205461096e906003546001600160a01b03166000908152600860205260409020546109689060055490611531565b90611531565b905090565b6000546001600160a01b0316331461099d5760405162461bcd60e51b815260040161078e906120e2565b6000600d8190556002600e819055600f82905560108290556011829055819081906109c89082612237565b6109d29190612237565b6109dc9190612237565b6109e69190612237565b60125560646013819055601581905560145560006016556005546103e890610a0f906002612220565b610a19919061224a565b602155565b6000546001600160a01b03163314610a485760405162461bcd60e51b815260040161078e906120e2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604081205460ff16610aae57600080fd5b81600003610b21576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e919061226c565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190612285565b336000908152600b602052604090205460ff16610bae57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610bda573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610c075760405162461bcd60e51b815260040161078e906120e2565b6020805460ff60a01b1916600160a01b17905560c860155561012c60145561015e601655565b6000546001600160a01b03163314610c575760405162461bcd60e51b815260040161078e906120e2565b600d8690556010859055600e849055600f8390556011829055610c8882610c82858188818c8c611573565b90611573565b6012556013819055610c9b60058261224a565b60125410610ceb5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161078e565b505050505050565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b815260040161078e906120e2565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600061091a33848461113e565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b815260040161078e906120e2565b60005b8251811015610de65781600c6000858481518110610da257610da26122a2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610dde816122b8565b915050610d82565b505050565b6000546001600160a01b03163314610e155760405162461bcd60e51b815260040161078e906120e2565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b6000546001600160a01b03163314610e7d5760405162461bcd60e51b815260040161078e906120e2565b601491909155601591909155601655565b6000546001600160a01b03163314610eb85760405162461bcd60e51b815260040161078e906120e2565b610ec06115d2565b565b60006107d9610ecf610921565b602080546001600160a01b0316600090815260089091526040902054610f0490610efd906002905b90611a29565b8590611a29565b90611aab565b601a5447906001600160a01b03166108fc6064610f278585612220565b610f31919061224a565b6040518115909202916000818181858888f19350505050158015610de6573d6000803e3d6000fd5b6000546001600160a01b03163314610f835760405162461bcd60e51b815260040161078e906120e2565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610fd85760405162461bcd60e51b815260040161078e906120e2565b6001600160a01b03811661103d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110c25760405162461bcd60e51b815260040161078e906120e2565b6110ce6009600a612211565b6110df9066017e9d8602b400612220565b6007556110ee6009600a612211565b6110ff9066017e9d8602b400612220565b600655565b600081848411156111285760405162461bcd60e51b815260040161078e9190611e3b565b50600061113584866122d1565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff1615801561118057506001600160a01b0383166000908152600c602052604090205460ff16155b6111bc5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b604482015260640161078e565b60225460ff16156111d9576111d2848484611aed565b905061091a565b6001600160a01b03841660009081526001602052604090205460ff1615801561121b57506001600160a01b03831660009081526001602052604090205460ff16155b1561127057602054600160a01b900460ff166112705760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161078e565b6001600160a01b03841660009081526001602052604090205460ff161580156112a257506001600160a01b0383163014155b80156112bc57506003546001600160a01b03848116911614155b80156112d657506020546001600160a01b03848116911614155b80156112f05750601b546001600160a01b03848116911614155b801561130a57506018546001600160a01b03848116911614155b801561132f57506001600160a01b0383166000908152600b602052604090205460ff16155b156113d0576001600160a01b03831660009081526008602052604090205460075461135a8483612237565b11156113ce5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161078e565b505b6113da8483611bd3565b6113e2611c40565b156113ef576113ef6115d2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611441918490611104565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061148e57506001600160a01b0384166000908152600a602052604090205460ff165b6114a25761149d858486611c96565b6114a4565b825b6001600160a01b0385166000908152600860205260409020549091506114ca9082611573565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151e9085815260200190565b60405180910390a3506001949350505050565b600061091a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611104565b6000806115808385612237565b90508381101561091a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078e565b6022805460ff19166001179055601c54601d546000916115f19161084b565b6115fd57600d54611600565b60005b905060006116246002610f04601254610f0486602154611a2990919063ffffffff16565b9050600061163d8260215461153190919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611677576116776122a2565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116a8576116a86122a2565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac947906116f29086906000908790309042906004016122e4565b600060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506000611739824761153190919063ffffffff16565b9050600061175461174b886002611aab565b60125490611531565b905060006117696002610f048481878d611a29565b9050600061178683610f04600e5487611a2990919063ffffffff16565b905060006117a384610f0460105488611a2990919063ffffffff16565b905060006117c085610f04600f5489611a2990919063ffffffff16565b905060006117dd86610f046011548a611a2990919063ffffffff16565b6018546040519192506000916001600160a01b039091169086908381818185875af1925050503d806000811461182f576040519150601f19603f3d011682016040523d82523d6000602084013e611834565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611884576040519150601f19603f3d011682016040523d82523d6000602084013e611889565b606091505b5050601a546040519192506001600160a01b0316908590600081818185875af1925050503d80600081146118d9576040519150601f19603f3d011682016040523d82523d6000602084013e6118de565b606091505b5050601b546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461192e576040519150601f19603f3d011682016040523d82523d6000602084013e611933565b606091505b50909150508b15611a1057601e5460175460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af11580156119ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119d39190612355565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff191690555050505050505050505050565b600082600003611a3b575060006107d9565b6000611a478385612220565b905082611a54858361224a565b1461091a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078e565b600061091a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d91565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b3e918490611104565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b6d9083611573565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bc19086815260200190565b60405180910390a35060019392505050565b60065481111580611bfc57506001600160a01b0382166000908152600b602052604090205460ff165b611c3c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161078e565b5050565b6020546000906001600160a01b03163314801590611c61575060225460ff16155b8015611c765750602054600160a81b900460ff165b801561096e57505060215430600090815260086020526040902054101590565b601654602054600091906001600160a01b0390811690841603611cbc5750601454611cd7565b6020546001600160a01b0390811690861603611cd757506015545b6000611d046013546064611ceb9190612220565b610f0484610ef76012548a611a2990919063ffffffff16565b306000908152600860205260409020549091508190611d239082611573565b30600081815260086020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d749085815260200190565b60405180910390a3611d868683611531565b979650505050505050565b60008183611db25760405162461bcd60e51b815260040161078e9190611e3b565b506000611135848661224a565b8015158114610bda57600080fd5b8035611dd881611dbf565b919050565b60008060408385031215611df057600080fd5b8235611dfb81611dbf565b946020939093013593505050565b80356001600160a01b0381168114611dd857600080fd5b600060208284031215611e3257600080fd5b61091a82611e09565b600060208083528351808285015260005b81811015611e6857858101830151858201604001528201611e4c565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e9c57600080fd5b611dfb83611e09565b60008060408385031215611eb857600080fd5b50508035926020909101359150565b600080600060608486031215611edc57600080fd5b611ee584611e09565b9250611ef360208501611e09565b9150604084013590509250925092565b60008060008060008060c08789031215611f1c57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215611f5957600080fd5b611f6283611e09565b91506020830135611f7281611dbf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611fa657600080fd5b823567ffffffffffffffff80821115611fbe57600080fd5b818501915085601f830112611fd257600080fd5b8135602082821115611fe657611fe6611f7d565b8160051b604051601f19603f8301168101818110868211171561200b5761200b611f7d565b60405292835281830193508481018201928984111561202957600080fd5b948201945b8386101561204e5761203f86611e09565b8552948201949382019361202e565b965061205d9050878201611dcd565b9450505050509250929050565b60008060006060848603121561207f57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120a857600080fd5b5035919050565b600080604083850312156120c257600080fd5b6120cb83611e09565b91506120d960208401611e09565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561216857816000190482111561214e5761214e612117565b8085161561215b57918102915b93841c9390800290612132565b509250929050565b60008261217f575060016107d9565b8161218c575060006107d9565b81600181146121a257600281146121ac576121c8565b60019150506107d9565b60ff8411156121bd576121bd612117565b50506001821b6107d9565b5060208310610133831016604e8410600b84101617156121eb575081810a6107d9565b6121f5838361212d565b806000190482111561220957612209612117565b029392505050565b600061091a60ff841683612170565b80820281158282048414176107d9576107d9612117565b808201808211156107d9576107d9612117565b60008261226757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561227e57600080fd5b5051919050565b60006020828403121561229757600080fd5b815161091a81611dbf565b634e487b7160e01b600052603260045260246000fd5b6000600182016122ca576122ca612117565b5060010190565b818103818111156107d9576107d9612117565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123345784516001600160a01b03168352938301939183019160010161230f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561236a57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220964d02d3f73443c1f8dc991cc3bf3c61bfdeae735aebd6af7314be0f6f96bdf064736f6c63430008130033