60806040523480156200001157600080fd5b5073036721e5a769cc48b3189efbb9cce4471e8a48b16040518060400160405280600a8152602001690436865636b73205046560b41b815250604051806040016040528060098152602001680434845434b535046560bc1b815250818181600090816200007f9190620001c5565b5060016200008e8282620001c5565b5050600680546001600160a01b0319166001600160a01b03959095169490941790935550620000c89150620000c290503390565b620000ce565b62000291565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014b57607f821691505b6020821081036200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001c057600081815260208120601f850160051c810160208610156200019b5750805b601f850160051c820191505b81811015620001bc57828155600101620001a7565b5050505b505050565b81516001600160401b03811115620001e157620001e162000120565b620001f981620001f2845462000136565b8462000172565b602080601f831160018114620002315760008415620002185750858301515b600019600386901b1c1916600185901b178555620001bc565b600085815260208120601f198616915b82811015620002625788860151825594840194600190910190840162000241565b5085821015620002815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61111880620002a16000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806370a08231116100cd578063a22cb46511610081578063c87b56dd11610066578063c87b56dd146102c4578063e985e9c5146102d7578063f2fde38b146102ed57600080fd5b8063a22cb465146102a3578063b88d4fde146102b157600080fd5b80638ada6b0f116100b25780638ada6b0f146102775780638da5cb5b1461028a57806395d89b411461029b57600080fd5b806370a082311461024e578063715018a61461026f57600080fd5b80632941e0451161012457806344b285db1161010957806344b285db1461021557806356d3163d146102285780636352211e1461023b57600080fd5b80632941e0451461020257806342842e0e146101ef57600080fd5b8063081812fc11610155578063081812fc146101ae578063095ea7b3146101da57806323b872dd146101ef57600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004610d4a565b610300565b60405190151581526020015b60405180910390f35b6101a161039d565b6040516101909190610d9f565b6101c26101bc366004610dd2565b50600090565b6040516001600160a01b039091168152602001610190565b6101ed6101e8366004610e00565b61042f565b005b6101ed6101fd366004610e2c565b610461565b6101ed610210366004610dd2565b61046f565b6101a1610223366004610dd2565b610518565b6101ed610236366004610e6d565b6105a4565b6101c2610249366004610dd2565b6105ce565b61026161025c366004610e6d565b610638565b604051908152602001610190565b6101ed6106d2565b6008546101c2906001600160a01b031681565b6007546001600160a01b03166101c2565b6101a16106e6565b6101ed6101e8366004610e8a565b6101ed6102bf366004610f37565b6106f5565b6101a16102d2366004610dd2565b610704565b6101846102e5366004610fe6565b600092915050565b6101ed6102fb366004610e6d565b61076a565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061036357506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061039757507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600080546103ac90611014565b80601f01602080910402602001604051908101604052809291908181526020018280546103d890611014565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b6040517fa6e340d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61046a8161046f565b505050565b6000818152600260205260408120546001600160a01b031690610491836107fa565b9050806001600160a01b0316826001600160a01b0316036104de576040517f7ad8e2f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166104f65761046a8184610885565b6001600160a01b03811661050d5761046a83610a10565b61046a828285610aa5565b6008546040517f44b285db000000000000000000000000000000000000000000000000000000008152600481018390526060916001600160a01b0316906344b285db906024015b600060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610397919081019061104e565b6105ac610c9e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260408120546001600160a01b0316806103975760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064015b60405180910390fd5b60006001600160a01b0382166106b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161062f565b506001600160a01b031660009081526003602052604090205490565b6106da610c9e565b6106e46000610cf8565b565b6060600180546103ac90611014565b6106fe8261046f565b50505050565b6008546060906001600160a01b0316638c4c1b2f83610738816000908152600260205260409020546001600160a01b031690565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440161055f565b610772610c9e565b6001600160a01b0381166107ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161062f565b6107f781610cf8565b50565b6006546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b031690636352211e90602401602060405180830381865afa925050508015610879575060408051601f3d908101601f19168201909252610876918101906110c5565b60015b61039757506000919050565b6001600160a01b0382166108db5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161062f565b6000818152600260205260409020546001600160a01b0316156109405760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161062f565b6000818152600260205260409020546001600160a01b0316156109a55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161062f565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610a1b826105ce565b9050610a26826105ce565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316610ab8826105ce565b6001600160a01b031614610b1c5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161062f565b6001600160a01b038216610b975760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161062f565b826001600160a01b0316610baa826105ce565b6001600160a01b031614610c0e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161062f565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146106e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215610d5c57600080fd5b81356001600160e01b031981168114610d7457600080fd5b9392505050565b60005b83811015610d96578181015183820152602001610d7e565b50506000910152565b6020815260008251806020840152610dbe816040850160208701610d7b565b601f01601f19169190910160400192915050565b600060208284031215610de457600080fd5b5035919050565b6001600160a01b03811681146107f757600080fd5b60008060408385031215610e1357600080fd5b8235610e1e81610deb565b946020939093013593505050565b600080600060608486031215610e4157600080fd5b8335610e4c81610deb565b92506020840135610e5c81610deb565b929592945050506040919091013590565b600060208284031215610e7f57600080fd5b8135610d7481610deb565b60008060408385031215610e9d57600080fd5b8235610ea881610deb565b915060208301358015158114610ebd57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610f0757610f07610ec8565b604052919050565b600067ffffffffffffffff821115610f2957610f29610ec8565b50601f01601f191660200190565b60008060008060808587031215610f4d57600080fd5b8435610f5881610deb565b93506020850135610f6881610deb565b925060408501359150606085013567ffffffffffffffff811115610f8b57600080fd5b8501601f81018713610f9c57600080fd5b8035610faf610faa82610f0f565b610ede565b818152886020838501011115610fc457600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610ff957600080fd5b823561100481610deb565b91506020830135610ebd81610deb565b600181811c9082168061102857607f821691505b60208210810361104857634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561106057600080fd5b815167ffffffffffffffff81111561107757600080fd5b8201601f8101841361108857600080fd5b8051611096610faa82610f0f565b8181528560208385010111156110ab57600080fd5b6110bc826020830160208601610d7b565b95945050505050565b6000602082840312156110d757600080fd5b8151610d7481610deb56fea2646970667358221220b2d913a0e474dc05904f73db1524ae66616f0f8cdb17a641d04864057b628a1664736f6c63430008140033