6080604052620000126012600a62000688565b6200002290633b9aca0062000699565b600681905562000044906103e8906200003d90603062000458565b90620004ef565b60075560065462000060906103e8906200003d90603062000458565b6008556064600a819055600b819055600c556011805461ffff60a01b1916600160a81b1790556006546103e8906200009a90600462000699565b620000a69190620006b3565b601255601e6014556064601555600160185560006019556000601a556000601b556000601c55601c54601a54601854601954601b54620000e79190620006d6565b620000f39190620006d6565b620000ff9190620006d6565b6200010b9190620006d6565b601d556064601e553480156200012057600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002069190620006ec565b600480546001600160a01b0319166001600160a01b039283161781556002546040805163c45a015560e01b81529051919093169263c45a015592818101926020929091908290030181865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a9190620006ec565b600480546040516364e329cb60e11b81526001600160a01b0391821692810192909252306024830152919091169063c9c65396906044016020604051808303816000875af1158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003079190620006ec565b600380546001600160a01b039283166001600160a01b03199182161782553060008181526005602090815260408083206002548816845282528083206000199055600d8054861633908117909155600e805487167399be0715a8178424ac26b9ab630aa1675a5d1fb1178155600f8054881683179055601080548816831790556011805490971661dead1790965580845260178352818420805460ff1990811660019081179092559754891685528285208054891682179055865489168552828520805489168217905594845281842080548816861790558084526016835281842080548816861790559454909616825285822080549095169092179093556006548284526009909152838320819055925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200044a91815260200190565b60405180910390a362000767565b6000826000036200046c57506000620004e9565b60006200047a838562000699565b905082620004898583620006b3565b14620004e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200053960201b60201c565b600081836200055d5760405162461bcd60e51b8152600401620004dd919062000717565b5060006200056c8486620006b3565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005cc578160001904821115620005b057620005b062000575565b80851615620005be57918102915b93841c939080029062000590565b509250929050565b600082620005e557506001620004e9565b81620005f457506000620004e9565b81600181146200060d5760028114620006185762000638565b6001915050620004e9565b60ff8411156200062c576200062c62000575565b50506001821b620004e9565b5060208310610133831016604e8410600b84101617156200065d575081810a620004e9565b6200066983836200058b565b806000190482111562000680576200068062000575565b029392505050565b6000620004e660ff841683620005d4565b8082028115828204841417620004e957620004e962000575565b600082620006d157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004e957620004e962000575565b600060208284031215620006ff57600080fd5b81516001600160a01b0381168114620004e657600080fd5b600060208083528351808285015260005b81811015620007465785810183015185820160400152820162000728565b506000604082860101526040601f19601f8301168501019250505092915050565b611ebd80620007776000396000f3fe6080604052600436106101f15760003560e01c806370a082311161010d578063a8b08982116100a0578063ded1e4381161006f578063ded1e438146105b1578063df20fd49146105d1578063f2fde38b146105f1578063f429389014610611578063f887ea401461062657600080fd5b8063a8b089821461050b578063a9059cbb1461052b578063b2bdfa7b1461054b578063dd62ed3e1461056b57600080fd5b8063893d20e8116100dc578063893d20e8146104775780638da5cb5b146104a957806395d89b41146104c75780639865d01a146104f657600080fd5b806370a0823114610400578063715018a61461043657806378109e541461044b5780637d1db4a51461046157600080fd5b8063269cdf29116101855780635526566911610154578063552656691461038a578063571ac8b01461039f5780635d83e1d5146103bf5780636ddd1713146103df57600080fd5b8063269cdf291461030e57806330c9a6a01461032e578063313ce5671461034e578063486c2eb61461036a57600080fd5b8063095ea7b3116101c1578063095ea7b3146102a357806318160ddd146102c35780631df4ccfc146102d857806323b872dd146102ee57600080fd5b806299d386146101fd5780630445b6671461021457806306fdde031461023d57806308fd3d051461027257600080fd5b366101f857005b600080fd5b34801561020957600080fd5b50610212610646565b005b34801561022057600080fd5b5061022a60125481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b50604080518082019091526003815262426c7560e81b60208201525b6040516102349190611ae8565b34801561027e57600080fd5b5060115461029390600160a01b900460ff1681565b6040519015158152602001610234565b3480156102af57600080fd5b506102936102be366004611b52565b61068e565b3480156102cf57600080fd5b5060065461022a565b3480156102e457600080fd5b5061022a601d5481565b3480156102fa57600080fd5b50610293610309366004611b7c565b6106fb565b34801561031a57600080fd5b50610293610329366004611b52565b6107bd565b34801561033a57600080fd5b5061022a610349366004611bb8565b6108eb565b34801561035a57600080fd5b5060405160128152602001610234565b34801561037657600080fd5b50610212610385366004611bd1565b610932565b34801561039657600080fd5b5061022a610a0a565b3480156103ab57600080fd5b506102936103ba366004611c36565b610a7b565b3480156103cb57600080fd5b506102126103da366004611bb8565b610a89565b3480156103eb57600080fd5b5060115461029390600160a81b900460ff1681565b34801561040c57600080fd5b5061022a61041b366004611c36565b6001600160a01b031660009081526009602052604090205490565b34801561044257600080fd5b50610212610b17565b34801561045757600080fd5b5061022a60085481565b34801561046d57600080fd5b5061022a60075481565b34801561048357600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610234565b3480156104b557600080fd5b506000546001600160a01b0316610491565b3480156104d357600080fd5b50604080518082019091526006815265424c55424c5560d01b6020820152610265565b34801561050257600080fd5b50610212610b8b565b34801561051757600080fd5b50600354610491906001600160a01b031681565b34801561053757600080fd5b50610293610546366004611b52565b610bce565b34801561055757600080fd5b50600054610491906001600160a01b031681565b34801561057757600080fd5b5061022a610586366004611c51565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105bd57600080fd5b506102936105cc366004611c84565b610bdb565b3480156105dd57600080fd5b506102126105ec366004611cb4565b610bef565b3480156105fd57600080fd5b5061021261060c366004611c36565b610c82565b34801561061d57600080fd5b50610212610d6c565b34801561063257600080fd5b50600254610491906001600160a01b031681565b6000546001600160a01b031633146106795760405162461bcd60e51b815260040161067090611cd2565b60405180910390fd5b6011805460ff60a01b1916600160a01b179055565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106e99086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600560209081526040808320338452909152812054600019146107a8576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610783918490610da8565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6107b3848484610de2565b90505b9392505050565b600081600003610832576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f9190611d07565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a1600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190611d20565b60006106f56108f8610a0a565b6003546001600160a01b031660009081526009602052604090205461092c90610925906002905b90611194565b8590611194565b90611216565b6000546001600160a01b0316331461095c5760405162461bcd60e51b815260040161067090611cd2565b600d80546001600160a01b038781166001600160a01b031992831617909255600e80548784169083168117909155600f80548785169084168117909155601180548786169085168117909155601080549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b60096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5461dead60009081527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785546006549192610a76929091610a709190611258565b90611258565b905090565b60006106f58260001961068e565b6000546001600160a01b03163314610ab35760405162461bcd60e51b815260040161067090611cd2565b6001811015610ac157600080fd5b6103e881600654610ad29190611d53565b610adc9190611d6a565b60088190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610b415760405162461bcd60e51b815260040161067090611cd2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bb55760405162461bcd60e51b815260040161067090611cd2565b6d314dc6448d9338c15b0a000000006007819055600855565b60006107b6338484610de2565b600082610be7836108eb565b119392505050565b6000546001600160a01b03163314610c195760405162461bcd60e51b815260040161067090611cd2565b6011805460ff60a81b1916600160a81b8415158102919091179182905560128390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000546001600160a01b03163314610cac5760405162461bcd60e51b815260040161067090611cd2565b6001600160a01b038116610d115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610670565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610da5573d6000803e3d6000fd5b50565b60008184841115610dcc5760405162461bcd60e51b81526004016106709190611ae8565b506000610dd98486611d8c565b95945050505050565b60135460009060ff1615610e0257610dfb84848461129a565b90506107b6565b6001600160a01b03841660009081526001602052604090205460ff16158015610e4457506001600160a01b03831660009081526001602052604090205460ff16155b15610e9957601154600160a01b900460ff16610e995760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610670565b6001600160a01b03841660009081526016602052604090205460ff1680610ed857506001600160a01b03831660009081526016602052604090205460ff165b15610ee857610dfb84848461129a565b6001600160a01b03841660009081526001602052604090205460ff16158015610f1a57506001600160a01b0383163014155b8015610f3157506001600160a01b03831661dead14155b8015610f4b57506003546001600160a01b03848116911614155b8015610f6557506011546001600160a01b03848116911614155b8015610f7f5750600e546001600160a01b03848116911614155b8015610fa457506001600160a01b03831660009081526017602052604090205460ff16155b15611045576001600160a01b038316600090815260096020526040902054600854610fcf8483611d9f565b11156110435760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610670565b505b61104f84836113a2565b61105761140f565b1561106457611064611465565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546110b6918490610da8565b6001600160a01b038516600090815260096020908152604080832093909355601690529081205460ff168061110357506001600160a01b03841660009081526016602052604090205460ff165b6111175761111285848661184c565b611119565b825b6001600160a01b03851660009081526009602052604090205490915061113f9082611a02565b6001600160a01b038086166000818152600960205260409081902093909355915190871690600080516020611e68833981519152906111819085815260200190565b60405180910390a3506001949350505050565b6000826000036111a6575060006106f5565b60006111b28385611d53565b9050826111bf8583611d6a565b146107b65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610670565b60006107b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a61565b60006107b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610da8565b6000806112a78585611a8f565b6112b157826112c9565b6018546112bf906001611258565b6112c99084611d53565b90506113318160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060096000896001600160a01b03166001600160a01b0316815260200190815260200160002054610da89092919063ffffffff16565b6001600160a01b0380871660009081526009602052604080822093909355908616815220546113609084611a02565b6001600160a01b038086166000818152600960205260409081902093909355915190871690600080516020611e68833981519152906111819087815260200190565b600754811115806113cb57506001600160a01b03821660009081526017602052604090205460ff165b61140b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610670565b5050565b6003546000906001600160a01b03163314801590611430575060135460ff16155b80156114455750601154600160a81b900460ff165b8015610a7657505060125430600090815260096020526040902054101590565b6013805460ff1916600117905560145460155460009161148491610bdb565b61149057601854611493565b60005b905060006114b7600261092c601d5461092c8660125461119490919063ffffffff16565b905060006114d08260125461125890919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061150a5761150a611db2565b6001600160a01b03928316602091820292909201015260045482519116908290600190811061153b5761153b611db2565b6001600160a01b03928316602091820292909201015260025460405163791ac94760e01b81524792919091169063791ac94790611585908690600090879030904290600401611dc8565b600060405180830381600087803b15801561159f57600080fd5b505af11580156115b3573d6000803e3d6000fd5b5050505060006115cc824761125890919063ffffffff16565b905060006115e76115de886002611216565b601d5490611258565b905060006115fc600261092c8481878d611194565b905060006116198361092c6019548761119490919063ffffffff16565b905060006116368461092c601b548861119490919063ffffffff16565b905060006116538561092c601a548961119490919063ffffffff16565b600e546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146116a5576040519150601f19603f3d011682016040523d82523d6000602084013e6116aa565b606091505b5050600f546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146116fa576040519150601f19603f3d011682016040523d82523d6000602084013e6116ff565b606091505b50506010546040519192506001600160a01b0316908490600081818185875af1925050503d806000811461174f576040519150601f19603f3d011682016040523d82523d6000602084013e611754565b606091505b5060009250508b15905061183457600254600d5460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af11580156117d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117f79190611e39565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506013805460ff1916905550505050505050505050565b600c546003546000919082906001600160a01b039081169085160361189d57600a54600e546001600160a01b03166000908152600960205260409020549092506118969082611d8c565b90506118b9565b6003546001600160a01b03908116908716036118b957600b5491505b60006118e6601e5460646118cd9190611d53565b61092c8561091f601d548b61119490919063ffffffff16565b90506000611905601d5461092c601c548561119490919063ffffffff16565b905060006119138383611258565b306000908152600960205260409020549091506119309082611a02565b30600090815260096020526040808220929092556011546001600160a01b03168152205461195e9083611a02565b6011546001600160a01b0390811660009081526009602090815260409182902093909355518381523092918c1691600080516020611e68833981519152910160405180910390a381156119eb576006546119b89083611258565b6006556040518281526000906001600160a01b038b1690600080516020611e688339815191529060200160405180910390a35b6119f58884611258565b9998505050505050505050565b600080611a0f8385611d9f565b9050838110156107b65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610670565b60008183611a825760405162461bcd60e51b81526004016106709190611ae8565b506000610dd98486611d6a565b6003546000906001600160a01b038381169116148015611abc5750600e546001600160a01b038481169116145b8015611ad057506001600160a01b03831615155b80156107b65750506001600160a01b03161515919050565b600060208083528351808285015260005b81811015611b1557858101830151858201604001528201611af9565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611b4d57600080fd5b919050565b60008060408385031215611b6557600080fd5b611b6e83611b36565b946020939093013593505050565b600080600060608486031215611b9157600080fd5b611b9a84611b36565b9250611ba860208501611b36565b9150604084013590509250925092565b600060208284031215611bca57600080fd5b5035919050565b600080600080600060a08688031215611be957600080fd5b611bf286611b36565b9450611c0060208701611b36565b9350611c0e60408701611b36565b9250611c1c60608701611b36565b9150611c2a60808701611b36565b90509295509295909350565b600060208284031215611c4857600080fd5b6107b682611b36565b60008060408385031215611c6457600080fd5b611c6d83611b36565b9150611c7b60208401611b36565b90509250929050565b60008060408385031215611c9757600080fd5b50508035926020909101359150565b8015158114610da557600080fd5b60008060408385031215611cc757600080fd5b8235611b6e81611ca6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611d1957600080fd5b5051919050565b600060208284031215611d3257600080fd5b81516107b681611ca6565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106f5576106f5611d3d565b600082611d8757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106f5576106f5611d3d565b808201808211156106f5576106f5611d3d565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e185784516001600160a01b031683529383019391830191600101611df3565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611e4e57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122006fdd65d389f0cac1bfce5a56fb97d17dda13839c26abc03437a947827c99ace64736f6c63430008130033