60806040526b033b2e3c9fd0803ce80000006006553480156200002157600080fd5b5060405162001ca138038062001ca183398101604081905262000044916200024b565b8151829082906200005d906003906020850190620000ee565b50805162000073906004906020840190620000ee565b505050620000906200008a6200009860201b60201c565b6200009c565b505062000308565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000fc90620002b5565b90600052602060002090601f0160209004810192826200012057600085556200016b565b82601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b600082601f830112620001a657600080fd5b81516001600160401b0380821115620001c357620001c3620002f2565b604051601f8301601f19908116603f01168101908282118183101715620001ee57620001ee620002f2565b816040528381526020925086838588010111156200020b57600080fd5b600091505b838210156200022f578582018301518183018401529082019062000210565b83821115620002415760008385830101525b9695505050505050565b600080604083850312156200025f57600080fd5b82516001600160401b03808211156200027757600080fd5b620002858683870162000194565b935060208501519150808211156200029c57600080fd5b50620002ab8582860162000194565b9150509250929050565b600181811c90821680620002ca57607f821691505b60208210811415620002ec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61198980620003186000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146103bb578063e7a324dc146103f4578063f1127ed81461041b578063f2fde38b1461047257600080fd5b8063b4b5ea571461038c578063c3cda5201461039f578063d5abeb01146103b257600080fd5b8063782d6fe11461031a5780637ecebe001461032d5780638da5cb5b1461034d57806395d89b411461035e578063a457c2d714610366578063a9059cbb1461037957600080fd5b8063395093511161014b5780635c19a95c116101255780635c19a95c1461029b5780636fcfff45146102ae57806370a08231146102e9578063715018a61461031257600080fd5b8063395093511461022f57806340c10f1914610242578063587cde1e1461025757600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806320606b70146101e657806323b872dd1461020d578063313ce56714610220575b600080fd5b61019b610485565b6040516101a89190611778565b60405180910390f35b6101c46101bf3660046116ae565b610517565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101d87f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6101c461021b366004611672565b61052e565b604051601281526020016101a8565b6101c461023d3660046116ae565b6105dd565b6102556102503660046116ae565b610619565b005b610283610265366004611624565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b0390911681526020016101a8565b6102556102a9366004611624565b6106ec565b6102d46102bc366004611624565b60096020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101a8565b6101d86102f7366004611624565b6001600160a01b031660009081526020819052604090205490565b6102556106f9565b6101d86103283660046116ae565b61072f565b6101d861033b366004611624565b600a6020526000908152604090205481565b6005546001600160a01b0316610283565b61019b610998565b6101c46103743660046116ae565b6109a7565b6101c46103873660046116ae565b610a40565b6101d861039a366004611624565b610a4d565b6102556103ad3660046116d8565b610ac2565b6101d860065481565b6101d86103c936600461163f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101d87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b610456610429366004611738565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016101a8565b610255610480366004611624565b610d9c565b606060038054610494906118af565b80601f01602080910402602001604051908101604052809291908181526020018280546104c0906118af565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b6000610524338484610e34565b5060015b92915050565b600061053b848484610f58565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105c55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105d28533858403610e34565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610524918590610614908690611802565b610e34565b6005546001600160a01b031633146106435760405162461bcd60e51b81526004016105bc906117cd565b6006548161065060025490565b61065a9190611802565b11156106b95760405162461bcd60e51b815260206004820152602860248201527f534d415254494e553a3a6d696e743a2063616e6e6f7420657863656564206d616044820152677820737570706c7960c01b60648201526084016105bc565b6106c38282611128565b6001600160a01b038083166000908152600760205260408120546106e8921683611207565b5050565b6106f6338261136b565b50565b6005546001600160a01b031633146107235760405162461bcd60e51b81526004016105bc906117cd565b61072d60006113e4565b565b60004382106107945760405162461bcd60e51b815260206004820152602b60248201527f534d415254494e553a3a6765745072696f72566f7465733a206e6f742079657460448201526a0819195d195c9b5a5b995960aa1b60648201526084016105bc565b6001600160a01b03831660009081526009602052604090205463ffffffff16806107c2576000915050610528565b6001600160a01b038416600090815260086020526040812084916107e760018561188a565b63ffffffff90811682526020820192909252604001600020541611610850576001600160a01b03841660009081526008602052604081209061082a60018461188a565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610528565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff1683101561088b576000915050610528565b60008061089960018461188a565b90505b8163ffffffff168163ffffffff16111561096157600060026108be848461188a565b6108c89190611842565b6108d2908361188a565b6001600160a01b038816600090815260086020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610935576020015194506105289350505050565b805163ffffffff1687111561094c5781935061095a565b61095760018361188a565b92505b505061089c565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b606060048054610494906118af565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105bc565b610a363385858403610e34565b5060019392505050565b6000610524338484610f58565b6001600160a01b03811660009081526009602052604081205463ffffffff1680610a78576000610abb565b6001600160a01b038316600090815260086020526040812090610a9c60018461188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610aed610485565b80519060200120610afb4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c9d5760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015269207369676e617475726560b01b60648201526084016105bc565b6001600160a01b0381166000908152600a60205260408120805491610cc1836118ea565b919050558914610d225760405162461bcd60e51b815260206004820152602660248201527f534d415254494e553a3a64656c656761746542795369673a20696e76616c6964604482015265206e6f6e636560d01b60648201526084016105bc565b87421115610d855760405162461bcd60e51b815260206004820152602a60248201527f534d415254494e553a3a64656c656761746542795369673a207369676e6174756044820152691c9948195e1c1a5c995960b21b60648201526084016105bc565b610d8f818b61136b565b505050505b505050505050565b6005546001600160a01b03163314610dc65760405162461bcd60e51b81526004016105bc906117cd565b6001600160a01b038116610e2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105bc565b6106f6816113e4565b6001600160a01b038316610e965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105bc565b6001600160a01b038216610ef75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fbc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105bc565b6001600160a01b03821661101e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105bc565b6001600160a01b038316600090815260208190526040902054818110156110965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105bc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906110cd908490611802565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111991815260200190565b60405180910390a35b50505050565b6001600160a01b03821661117e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bc565b80600260008282546111909190611802565b90915550506001600160a01b038216600090815260208190526040812080548392906111bd908490611802565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b816001600160a01b0316836001600160a01b0316141580156112295750600081115b15611366576001600160a01b038316156112cc576001600160a01b03831660009081526009602052604081205463ffffffff1690816112695760006112ac565b6001600160a01b03851660009081526008602052604081209061128d60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006112ba8483611873565b90506112c886848484611436565b5050505b6001600160a01b03821615611366576001600160a01b03821660009081526009602052604081205463ffffffff16908161130757600061134a565b6001600160a01b03841660009081526008602052604081209061132b60018561188a565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006113588483611802565b9050610d9485848484611436565b505050565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611122828483611207565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061145a4360405180606001604052806038815260200161191c603891396115d8565b905060008463ffffffff161180156114b457506001600160a01b038516600090815260086020526040812063ffffffff83169161149860018861188a565b63ffffffff908116825260208201929092526040016000205416145b156114fd576001600160a01b038516600090815260086020526040812083916114de60018861188a565b63ffffffff16815260208101919091526040016000206001015561158d565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600883528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561155c90859061181a565b6001600160a01b0386166000908152600960205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106116005760405162461bcd60e51b81526004016105bc9190611778565b509192915050565b80356001600160a01b038116811461161f57600080fd5b919050565b60006020828403121561163657600080fd5b610abb82611608565b6000806040838503121561165257600080fd5b61165b83611608565b915061166960208401611608565b90509250929050565b60008060006060848603121561168757600080fd5b61169084611608565b925061169e60208501611608565b9150604084013590509250925092565b600080604083850312156116c157600080fd5b6116ca83611608565b946020939093013593505050565b60008060008060008060c087890312156116f157600080fd5b6116fa87611608565b95506020870135945060408701359350606087013560ff8116811461171e57600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561174b57600080fd5b61175483611608565b9150602083013563ffffffff8116811461176d57600080fd5b809150509250929050565b600060208083528351808285015260005b818110156117a557858101830151858201604001528201611789565b818111156117b7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561181557611815611905565b500190565b600063ffffffff80831681851680830382111561183957611839611905565b01949350505050565b600063ffffffff8084168061186757634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60008282101561188557611885611905565b500390565b600063ffffffff838116908316818110156118a7576118a7611905565b039392505050565b600181811c908216806118c357607f821691505b602082108114156118e457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156118fe576118fe611905565b5060010190565b634e487b7160e01b600052601160045260246000fdfe534d415254494e553a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220dda7b6d53dd2d4ba0532197384eac97a45517680475897ed6e57588993a950ed64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009536d6172742d496e7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534d494e55000000000000000000000000000000000000000000000000000000