0x60806040526000600355600060045560006005556276a70060065562278d0060075534801561002d57600080fd5b50604051611cfa380380611cfa8339818101604052604081101561005057600080fd5b508051602090910151600160009081556100686100f4565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805460ff60a01b19169055600280546001600160a01b039384166001600160a01b031991821617909155600a80549290931691161790556100f8565b3390565b611bf3806101076000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c806370a082311161011a5780638da5cb5b116100ad578063cd3daf9d1161007c578063cd3daf9d14610464578063df136d651461046c578063e9fad8ee14610474578063ebe2b12b1461047c578063f2fde38b14610484576101fa565b80638da5cb5b1461041a578063a694fc3a14610422578063c8f33c911461043f578063cc1a378f14610447576101fa565b806380faa57d116100e957806380faa57d146103b85780638456cb59146103c05780638980f11f146103c85780638b876347146103f4576101fa565b806370a082311461037a578063715018a6146103a057806372f702f3146103a85780637b0a47ee146103b0576101fa565b80632e1a7d4d116101925780633d18b912116101615780633d18b912146103455780633f4ba83a1461034d578063556f6e6b146103555780635c975abb14610372576101fa565b80632e1a7d4d146102f957806331a9186a14610318578063386a9525146103205780633c6b16ab14610328576101fa565b80631ad25ffb116101ce5780631ad25ffb146102895780631c1f78eb146102af578063204f83f9146102b757806320bd514c146102bf576101fa565b80628cc262146101ff5780630700037d146102375780630f4ef8a61461025d57806318160ddd14610281575b600080fd5b6102256004803603602081101561021557600080fd5b50356001600160a01b03166104aa565b60408051918252519081900360200190f35b6102256004803603602081101561024d57600080fd5b50356001600160a01b0316610528565b61026561053a565b604080516001600160a01b039092168252519081900360200190f35b610225610549565b6102256004803603602081101561029f57600080fd5b50356001600160a01b0316610550565b610225610562565b610225610580565b6102e5600480360360208110156102d557600080fd5b50356001600160a01b0316610586565b604080519115158252519081900360200190f35b6103166004803603602081101561030f57600080fd5b50356105aa565b005b610225610787565b61022561078d565b6103166004803603602081101561033e57600080fd5b5035610793565b610316610900565b610316610b62565b6103166004803603602081101561036b57600080fd5b5035610bdd565b6102e5610ca1565b6102256004803603602081101561039057600080fd5b50356001600160a01b0316610cb1565b610316610ccc565b610265610d78565b610225610d87565b610225610d8d565b610316610d9b565b610316600480360360408110156103de57600080fd5b506001600160a01b038135169060200135610e10565b6102256004803603602081101561040a57600080fd5b50356001600160a01b0316610f23565b610265610f35565b6103166004803603602081101561043857600080fd5b5035610f44565b6102256111c8565b6103166004803603602081101561045d57600080fd5b50356111ce565b6102256112ab565b6102256112f9565b6103166112ff565b61022561133c565b6103166004803603602081101561049a57600080fd5b50356001600160a01b0316611342565b6001600160a01b0381166000908152600c6020908152604080832054600b909252822054610522919061051c90670de0b6b3a764000090610516906104f7906104f16112ab565b90611445565b6001600160a01b0388166000908152600f6020526040902054906114a2565b90611502565b90611569565b92915050565b600c6020526000908152604090205481565b600a546001600160a01b031681565b600e545b90565b600d6020526000908152604090205481565b600061057b6006546004546114a290919063ffffffff16565b905090565b60075481565b6007546001600160a01b0382166000908152600d6020526040902054014211919050565b60026000541415610602576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005561060f6115c3565b6106176112ab565b600955610622610d8d565b6008556001600160a01b038116156106695761063d816104aa565b6001600160a01b0382166000908152600c6020908152604080832093909355600954600b909152919020555b600082116106b2576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b600e546106bf9083611445565b600e556106f282600f60006106d26115c3565b6001600160a01b0316815260208101919091526040016000205490611445565b600f60006106fe6115c3565b6001600160a01b031681526020810191909152604001600020556107366107236115c3565b6002546001600160a01b031690846115c7565b61073e6115c3565b6001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a250506001600055565b60055481565b60065481565b61079b6115c3565b6001600160a01b03166107ac610f35565b6001600160a01b0316146107f5576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b60006107ff6112ab565b60095561080a610d8d565b6008556001600160a01b0381161561085157610825816104aa565b6001600160a01b0382166000908152600c6020908152604080832093909355600954600b909152919020555b600354421061087057600654610868908390611502565b6004556108b3565b6003546000906108809042611445565b90506000610899600454836114a290919063ffffffff16565b6006549091506108ad906105168684611569565b60045550505b4260088190556006546108c69190611569565b6003556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b60026000541415610958576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556109656115c3565b61096d6112ab565b600955610978610d8d565b6008556001600160a01b038116156109bf57610993816104aa565b6001600160a01b0382166000908152600c6020908152604080832093909355600954600b909152919020555b600754600d60006109ce6115c3565b6001600160a01b03166001600160a01b0316815260200190815260200160002054014211610a43576040805162461bcd60e51b815260206004820152601f60248201527f4e6f7420656c696769626c6520746f2067657420726577617264732079657400604482015290519081900360640190fd5b6000600c6000610a516115c3565b6001600160a01b0316815260208101919091526040016000205490508015610b59576000600c6000610a816115c3565b6001600160a01b039081168252602082019290925260400160002091909155600a541663e4e103dc610ab16115c3565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50505050610b186115c3565b6001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b50506001600055565b610b6a6115c3565b6001600160a01b0316610b7b610f35565b6001600160a01b031614610bc4576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b60055415610bd3576005546004555b610bdb61161e565b565b610be56115c3565b6001600160a01b0316610bf6610f35565b6001600160a01b031614610c3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b6000610c496112ab565b600955610c54610d8d565b6008556001600160a01b03811615610c9b57610c6f816104aa565b6001600160a01b0382166000908152600c6020908152604080832093909355600954600b909152919020555b50600355565b600154600160a01b900460ff1690565b6001600160a01b03166000908152600f602052604090205490565b610cd46115c3565b6001600160a01b0316610ce5610f35565b6001600160a01b031614610d2e576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b6002546001600160a01b031681565b60045481565b600061057b426003546116c1565b610da36115c3565b6001600160a01b0316610db4610f35565b6001600160a01b031614610dfd576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b6004805460055560009055610bdb6116d7565b610e186115c3565b6001600160a01b0316610e29610f35565b6001600160a01b031614610e72576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b6002546001600160a01b0383811691161415610ebf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b9d6021913960400191505060405180910390fd5b610edb610eca610f35565b6001600160a01b03841690836115c7565b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b600b6020526000908152604090205481565b6001546001600160a01b031690565b60026000541415610f9c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055610fa9610ca1565b15610fee576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b610ff66115c3565b610ffe6112ab565b600955611009610d8d565b6008556001600160a01b0381161561105057611024816104aa565b6001600160a01b0382166000908152600c6020908152604080832093909355600954600b909152919020555b60008211611096576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600e546110a39083611569565b600e556110d682600f60006110b66115c3565b6001600160a01b0316815260208101919091526040016000205490611569565b600f60006110e26115c3565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600d60006111126115c3565b6001600160a01b031681526020810191909152604001600020546111585742600d600061113d6115c3565b6001600160a01b031681526020810191909152604001600020555b6111776111636115c3565b6002546001600160a01b0316903085611760565b61117f6115c3565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a250506001600055565b60085481565b6111d66115c3565b6001600160a01b03166111e7610f35565b6001600160a01b031614611230576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b60035442116112705760405162461bcd60e51b8152600401808060200182810382526058815260200180611a8e6058913960600191505060405180910390fd5b60068190556040805182815290517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39181900360200190a150565b6000600e54600014156112c1575060095461054d565b61057b6112f0600e54610516670de0b6b3a76400006112ea6004546112ea6008546104f1610d8d565b906114a2565b60095490611569565b60095481565b611334600f600061130e6115c3565b6001600160a01b03166001600160a01b03168152602001908152602001600020546105aa565b610bdb610900565b60035481565b61134a6115c3565b6001600160a01b031661135b610f35565b6001600160a01b0316146113a4576040805162461bcd60e51b81526020600482018190526024820152600080516020611b53833981519152604482015290519081900360640190fd5b6001600160a01b0381166113e95760405162461bcd60e51b8152600401808060200182810382526026815260200180611ae66026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008282111561149c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826114b157506000610522565b828202828482816114be57fe5b04146114fb5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b326021913960400191505060405180910390fd5b9392505050565b6000808211611558576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161156157fe5b049392505050565b6000828201838110156114fb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526116199084906117c0565b505050565b611626610ca1565b61166e576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116a46115c3565b604080516001600160a01b039092168252519081900360200190a1565b60008183106116d057816114fb565b5090919050565b6116df610ca1565b15611724576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116a46115c3565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526117ba9085906117c0565b50505050565b6000611815826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118719092919063ffffffff16565b8051909150156116195780806020019051602081101561183457600080fd5b50516116195760405162461bcd60e51b815260040180806020018281038252602a815260200180611b73602a913960400191505060405180910390fd5b60606118808484600085611888565b949350505050565b6060824710156118c95760405162461bcd60e51b8152600401808060200182810382526026815260200180611b0c6026913960400191505060405180910390fd5b6118d2856119e3565b611923576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106119615780518252601f199092019160209182019101611942565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146119c3576040519150601f19603f3d011682016040523d82523d6000602084013e6119c8565b606091505b50915091506119d88282866119e9565b979650505050505050565b3b151590565b606083156119f85750816114fb565b825115611a085782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a52578181015183820152602001611a3a565b50505050905090810190601f168015611a7f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea2646970667358221220e3b1242aaf5797a69d015a71deed61f84eda943f8dd008b271bb3bfa78bfeb1864736f6c63430007060033000000000000000000000000d225d64ae6c0784413e9054b832c9a52a19fbfe50000000000000000000000005a5eca9a065f4543ae0b30e25e29e2de33966d94