60c0604052600a805462ffffff19166001908117909155600c805460ff191690911790553480156200003057600080fd5b506040805180820182526012815271119bdc9ad31a599d0810d95c9d1a599a595960721b602080830191825283518085019094526004845263131a599d60e21b9084015281519192916200008791600391620007cb565b5080516200009d906004906020840190620007cb565b5050506000620000b26200044960201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d620001228160016200044d565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200016857600080fd5b505afa1580156200017d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a3919062000871565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000871565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027057600080fd5b505af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000871565b6001600160a01b031660a0819052620002c69060016200044d565b60a0516001600160a01b03166000908152601760205260409020805460ff191660011790556019600081816b033b2e3c9fd0803ce800000060646200030d826002620008b2565b620003199190620008d4565b60075560646200032b826002620008b2565b620003379190620008d4565b6009556127106200034a826005620008b2565b620003569190620008d4565b600855600e859055600f8490556200036f8486620008f7565b600d5560118390556012829055620003888284620008f7565b601055600554600680546001600160a01b0319166001600160a01b039092169182179055620003b9906001620004c7565b620003c6306001620004c7565b620003d561dead6001620004c7565b620003f4620003ec6005546001600160a01b031690565b60016200044d565b620004013060016200044d565b6200041061dead60016200044d565b62000431620004276005546001600160a01b031690565b608051836200053d565b6200043d338262000665565b5050505050506200094f565b3390565b6005546001600160a01b031633146200049c5760405162461bcd60e51b8152602060048201819052602482015260008051602062002a6683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620005125760405162461bcd60e51b8152602060048201819052602482015260008051602062002a66833981519152604482015260640162000493565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b038316620005a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000493565b6001600160a01b038216620006045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000493565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000493565b620006d9816002546200076160201b62000c6c1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200070c91839062000c6c62000761821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620007708385620008f7565b905083811015620007c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000493565b9392505050565b828054620007d99062000912565b90600052602060002090601f016020900481019282620007fd576000855562000848565b82601f106200081857805160ff191683800117855562000848565b8280016001018555821562000848579182015b82811115620008485782518255916020019190600101906200082b565b50620008569291506200085a565b5090565b5b808211156200085657600081556001016200085b565b6000602082840312156200088457600080fd5b81516001600160a01b0381168114620007c457600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008cf57620008cf6200089c565b500290565b600082620008f257634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200090d576200090d6200089c565b500190565b600181811c908216806200092757607f821691505b602082108114156200094957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516120b9620009ad600039600081816103f101528181610a020152610fcd0152600081816102e801528181610f8f015281816119c701528181611a8f01528181611acb01528181611b450152611ba201526120b96000f3fe60806040526004361061023f5760003560e01c80637bce5a041161012e578063c0246668116100ab578063e2f456051161006f578063e2f45605146106f8578063f11a24d31461070e578063f2fde38b14610724578063f637434214610744578063f8b45b051461075a57600080fd5b8063c02466681461064c578063c876d0b91461066c578063c8c8ebe414610686578063d85ba0631461069c578063dd62ed3e146106b257600080fd5b80639a7a23d6116100f25780639a7a23d61461059d578063a457c2d7146105bd578063a9059cbb146105dd578063b62496f5146105fd578063bbc0c7421461062d57600080fd5b80637bce5a04146105295780638a8c523c1461053f5780638da5cb5b14610554578063921369131461057257806395d89b411461058857600080fd5b806339509351116101bc5780636ddd1713116101805780636ddd17131461047c57806370a082311461049c578063715018a6146104d25780637571336a146104e957806375f0a8741461050957600080fd5b806339509351146103bf57806349bd5a5e146103df5780634a62bb65146104135780634fbee1931461042d5780636a486a8e1461046657600080fd5b80631a8145bb116102035780631a8145bb146103415780631f3fed8f1461035757806323b872dd1461036d57806327c8f8351461038d578063313ce567146103a357600080fd5b806306fdde031461024b578063095ea7b31461027657806310d5de53146102a65780631694505e146102d657806318160ddd1461032257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b50610260610770565b60405161026d9190611c5d565b60405180910390f35b34801561028257600080fd5b50610296610291366004611cca565b610802565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611cf6565b60166020526000908152604090205460ff1681565b3480156102e257600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026d565b34801561032e57600080fd5b506002545b60405190815260200161026d565b34801561034d57600080fd5b5061033360145481565b34801561036357600080fd5b5061033360135481565b34801561037957600080fd5b50610296610388366004611d13565b610819565b34801561039957600080fd5b5061030a61dead81565b3480156103af57600080fd5b506040516012815260200161026d565b3480156103cb57600080fd5b506102966103da366004611cca565b610882565b3480156103eb57600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041f57600080fd5b50600a546102969060ff1681565b34801561043957600080fd5b50610296610448366004611cf6565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561047257600080fd5b5061033360105481565b34801561048857600080fd5b50600a546102969062010000900460ff1681565b3480156104a857600080fd5b506103336104b7366004611cf6565b6001600160a01b031660009081526020819052604090205490565b3480156104de57600080fd5b506104e76108b8565b005b3480156104f557600080fd5b506104e7610504366004611d54565b610935565b34801561051557600080fd5b5060065461030a906001600160a01b031681565b34801561053557600080fd5b50610333600e5481565b34801561054b57600080fd5b506104e761098a565b34801561056057600080fd5b506005546001600160a01b031661030a565b34801561057e57600080fd5b5061033360115481565b34801561059457600080fd5b506102606109c7565b3480156105a957600080fd5b506104e76105b8366004611d54565b6109d6565b3480156105c957600080fd5b506102966105d8366004611cca565b610ad0565b3480156105e957600080fd5b506102966105f8366004611cca565b610b1f565b34801561060957600080fd5b50610296610618366004611cf6565b60176020526000908152604090205460ff1681565b34801561063957600080fd5b50600a5461029690610100900460ff1681565b34801561065857600080fd5b506104e7610667366004611d54565b610b2c565b34801561067857600080fd5b50600c546102969060ff1681565b34801561069257600080fd5b5061033360075481565b3480156106a857600080fd5b50610333600d5481565b3480156106be57600080fd5b506103336106cd366004611d92565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561070457600080fd5b5061033360085481565b34801561071a57600080fd5b50610333600f5481565b34801561073057600080fd5b506104e761073f366004611cf6565b610b81565b34801561075057600080fd5b5061033360125481565b34801561076657600080fd5b5061033360095481565b60606003805461077f90611dc0565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab90611dc0565b80156107f85780601f106107cd576101008083540402835291602001916107f8565b820191906000526020600020905b8154815290600101906020018083116107db57829003601f168201915b5050505050905090565b600061080f338484610cd2565b5060015b92915050565b6000610826848484610df7565b610878843361087385604051806060016040528060288152602001612037602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906115eb565b610cd2565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161080f9185906108739086610c6c565b6005546001600160a01b031633146108eb5760405162461bcd60e51b81526004016108e290611dfb565b60405180910390fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461095f5760405162461bcd60e51b81526004016108e290611dfb565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109b45760405162461bcd60e51b81526004016108e290611dfb565b600a805462ffff00191662010100179055565b60606004805461077f90611dc0565b6005546001600160a01b03163314610a005760405162461bcd60e51b81526004016108e290611dfb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610aa85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e2565b6001600160a01b0382166000908152601760205260409020805460ff19168215151790555050565b600061080f33846108738560405180606001604052806025815260200161205f602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906115eb565b600061080f338484610df7565b6005546001600160a01b03163314610b565760405162461bcd60e51b81526004016108e290611dfb565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610bab5760405162461bcd60e51b81526004016108e290611dfb565b6001600160a01b038116610c105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e2565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c798385611e46565b905083811015610ccb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e2565b9392505050565b6001600160a01b038316610d345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e2565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610e1d5760405162461bcd60e51b81526004016108e290611e5e565b6001600160a01b038216610e435760405162461bcd60e51b81526004016108e290611ea3565b80610e5957610e5483836000611625565b505050565b600a5460ff1615611316576005546001600160a01b03848116911614801590610e9057506005546001600160a01b03838116911614155b8015610ea457506001600160a01b03821615155b8015610ebb57506001600160a01b03821661dead14155b8015610ed15750600554600160a01b900460ff16155b1561131657600a54610100900460ff16610f69576001600160a01b03831660009081526015602052604090205460ff1680610f2457506001600160a01b03821660009081526015602052604090205460ff165b610f695760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e2565b600c5460ff16156110b0576005546001600160a01b03838116911614801590610fc457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561100257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156110b057326000908152600b6020526040902054431161109d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016108e2565b326000908152600b602052604090204390555b6001600160a01b03831660009081526017602052604090205460ff1680156110f157506001600160a01b03821660009081526016602052604090205460ff16155b156111d5576007548111156111665760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016108e2565b6009546001600160a01b03831660009081526020819052604090205461118c9083611e46565b11156111d05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e2565b611316565b6001600160a01b03821660009081526017602052604090205460ff16801561121657506001600160a01b03831660009081526016602052604090205460ff16155b1561128c576007548111156111d05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016108e2565b6001600160a01b03821660009081526016602052604090205460ff16611316576009546001600160a01b0383166000908152602081905260409020546112d29083611e46565b11156113165760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e2565b30600090815260208190526040902054600854811080159081906113425750600a5462010000900460ff165b80156113585750600554600160a01b900460ff16155b801561137d57506001600160a01b03851660009081526017602052604090205460ff16155b80156113a257506001600160a01b03851660009081526015602052604090205460ff16155b80156113c757506001600160a01b03841660009081526015602052604090205460ff16155b156113f5576005805460ff60a01b1916600160a01b1790556113e761172e565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526015602052604090205460ff600160a01b90920482161591168061144357506001600160a01b03851660009081526015602052604090205460ff165b1561144c575060005b600081156115d7576001600160a01b03861660009081526017602052604090205460ff16801561147e57506000601054115b1561150c576114a3606461149d6010548861186d90919063ffffffff16565b906118ec565b9050601054601254826114b69190611ee6565b6114c09190611f05565b601460008282546114d19190611e46565b90915550506010546011546114e69083611ee6565b6114f09190611f05565b601360008282546115019190611e46565b909155506115b99050565b6001600160a01b03871660009081526017602052604090205460ff16801561153657506000600d54115b156115b957611555606461149d600d548861186d90919063ffffffff16565b9050600d54600f54826115689190611ee6565b6115729190611f05565b601460008282546115839190611e46565b9091555050600d54600e546115989083611ee6565b6115a29190611f05565b601360008282546115b39190611e46565b90915550505b80156115ca576115ca873083611625565b6115d48186611f27565b94505b6115e2878787611625565b50505050505050565b6000818484111561160f5760405162461bcd60e51b81526004016108e29190611c5d565b50600061161c8486611f27565b95945050505050565b6001600160a01b03831661164b5760405162461bcd60e51b81526004016108e290611e5e565b6001600160a01b0382166116715760405162461bcd60e51b81526004016108e290611ea3565b6116ae81604051806060016040528060268152602001612011602691396001600160a01b03861660009081526020819052604090205491906115eb565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546116dd9082610c6c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610dea565b30600090815260208190526040812054905060006013546014546117529190611e46565b90506000821580611761575081155b1561176b57505050565b60006002836014548661177e9190611ee6565b6117889190611f05565b6117929190611f05565b905060006117a0858361192e565b9050476117ac82611970565b60006117b8478361192e565b905060006117d58761149d6013548561186d90919063ffffffff16565b905060006117e38284611f27565b60006014819055601355905085158015906117fe5750600081115b1561180d5761180d8682611b3f565b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461185a576040519150601f19603f3d011682016040523d82523d6000602084013e61185f565b606091505b505050505050505050505050565b60008261187c57506000610813565b60006118888385611ee6565b9050826118958583611f05565b14610ccb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e2565b6000610ccb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c2f565b6000610ccb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115eb565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119a5576119a5611f3e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1e57600080fd5b505afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a569190611f54565b81600181518110611a6957611a69611f3e565b60200260200101906001600160a01b031690816001600160a01b031681525050611ab4307f000000000000000000000000000000000000000000000000000000000000000084610cd2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611b09908590600090869030904290600401611f71565b600060405180830381600087803b158015611b2357600080fd5b505af1158015611b37573d6000803e3d6000fd5b505050505050565b611b6a307f000000000000000000000000000000000000000000000000000000000000000084610cd2565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c289190611fe2565b5050505050565b60008183611c505760405162461bcd60e51b81526004016108e29190611c5d565b50600061161c8486611f05565b600060208083528351808285015260005b81811015611c8a57858101830151858201604001528201611c6e565b81811115611c9c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611cc757600080fd5b50565b60008060408385031215611cdd57600080fd5b8235611ce881611cb2565b946020939093013593505050565b600060208284031215611d0857600080fd5b8135610ccb81611cb2565b600080600060608486031215611d2857600080fd5b8335611d3381611cb2565b92506020840135611d4381611cb2565b929592945050506040919091013590565b60008060408385031215611d6757600080fd5b8235611d7281611cb2565b915060208301358015158114611d8757600080fd5b809150509250929050565b60008060408385031215611da557600080fd5b8235611db081611cb2565b91506020830135611d8781611cb2565b600181811c90821680611dd457607f821691505b60208210811415611df557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611e5957611e59611e30565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615611f0057611f00611e30565b500290565b600082611f2257634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611f3957611f39611e30565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f6657600080fd5b8151610ccb81611cb2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fc15784516001600160a01b031683529383019391830191600101611f9c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ff757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e5a76fee61aea0c42c4722ec384a7110317d3f4a40629b125f7c2e2e03d5b1d164736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572