0x608060405234801561000f575f80fd5b5061001861001d565b6100d9565b5f54610100900460ff16156100885760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146100d7575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610d73806100e65f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063715018a611610093578063a4317ef411610063578063a4317ef4146101c8578063e1de7c80146101fc578063f2fde38b14610205578063fe904b7a14610218575f80fd5b8063715018a6146101895780638b68c4a9146101915780638da5cb5b146101a45780639a9f738c146101b5575f80fd5b806351cff8d9116100ce57806351cff8d9146101235780635c19a95c1461013857806366d003ac1461014b5780636b56979b14610176575f80fd5b80630d662a1f146100f457806316d3bfbb1461011057806321d8096b1461011b575b5f80fd5b6100fd60985481565b6040519081526020015b60405180910390f35b6100fd6301e1338081565b6100fd610220565b610136610131366004610b94565b61023b565b005b610136610146366004610b94565b61033e565b60995461015e906001600160a01b031681565b6040516001600160a01b039091168152602001610107565b610136610184366004610bb4565b6103d5565b610136610583565b609a5461015e906001600160a01b031681565b6033546001600160a01b031661015e565b6101366101c3366004610c13565b610596565b609a546101e390600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610107565b6100fd60975481565b610136610213366004610b94565b61064d565b6100fd6106c3565b5f60985461022c6106d5565b6102369190610c4d565b905090565b6099546001600160a01b031633146102665760405163e5816e1960e01b815260040160405180910390fd5b61026e610772565b5f610277610220565b9050805f036102995760405163f90c7ee560e01b815260040160405180910390fd5b8060985f8282546102aa9190610c66565b909155505f90506001600160a01b038316156102c657826102d3565b6099546001600160a01b03165b604080516001600160a01b0383168152602081018590529192507fa2bd9fcfcdba69f52bcd9a520846ad4bd685b187483f53efc42d035b2ddebff0910160405180910390a1609a5461032f906001600160a01b031682846107cb565b505061033b6001606555565b50565b6099546001600160a01b031633146103695760405163e5816e1960e01b815260040160405180910390fd5b610371610772565b609a546040516317066a5760e21b81526001600160a01b03838116600483015290911690635c19a95c906024015f604051808303815f87803b1580156103b5575f80fd5b505af11580156103c7573d5f803e3d5ffd5b5050505061033b6001606555565b5f54610100900460ff16158080156103f357505f54600160ff909116105b8061040c5750303b15801561040c57505f5460ff166001145b6104745760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610495575f805461ff0019166101001790555b6001600160a01b03841615806104b257506001600160a01b038316155b806104c5575067ffffffffffffffff8216155b156104e3576040516322ee6ae760e01b815260040160405180910390fd5b6104ec85610833565b609980546001600160a01b0319166001600160a01b0385811691909117909155609a80549186166001600160e01b031990921691909117600160a01b67ffffffffffffffff851602179055801561057c575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b61058b610884565b6105945f610833565b565b61059e610772565b806001600160801b03165f036105c7576040516322ee6ae760e01b815260040160405180910390fd5b806001600160801b031660975f8282546105e19190610c66565b90915550506040516001600160801b03821681527fd5cae025fa70f93147df3628885f9ddd7976bb7dd8a8ec1f2abe24ec194b981a9060200160405180910390a1609a54610643906001600160a01b031633306001600160801b0385166108de565b61033b6001606555565b610655610884565b6001600160a01b0381166106ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046b565b61033b81610833565b6106d26301e133806004610c79565b81565b6097545f908082036106e8575f91505090565b609a54600160a01b900467ffffffffffffffff1661070a6301e1338082610c66565b421015610719575f9250505090565b6107286301e133806004610c79565b6107329082610c66565b421061073e5750919050565b61074d6301e133806004610c79565b6107578242610c4d565b6107619084610c79565b61076b9190610c90565b9250505090565b6002606554036107c45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161046b565b6002606555565b6040516001600160a01b03831660248201526044810182905261082e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261091c565b505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6033546001600160a01b031633146105945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046b565b6040516001600160a01b03808516602483015283166044820152606481018290526109169085906323b872dd60e01b906084016107f7565b50505050565b5f610970826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109ef9092919063ffffffff16565b905080515f14806109905750808060200190518101906109909190610caf565b61082e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161046b565b60606109fd84845f85610a05565b949350505050565b606082471015610a665760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161046b565b5f80866001600160a01b03168587604051610a819190610cf0565b5f6040518083038185875af1925050503d805f8114610abb576040519150601f19603f3d011682016040523d82523d5f602084013e610ac0565b606091505b5091509150610ad187838387610adc565b979650505050505050565b60608315610b4a5782515f03610b43576001600160a01b0385163b610b435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046b565b50816109fd565b6109fd8383815115610b5f5781518083602001fd5b8060405162461bcd60e51b815260040161046b9190610d0b565b80356001600160a01b0381168114610b8f575f80fd5b919050565b5f60208284031215610ba4575f80fd5b610bad82610b79565b9392505050565b5f805f8060808587031215610bc7575f80fd5b610bd085610b79565b9350610bde60208601610b79565b9250610bec60408601610b79565b9150606085013567ffffffffffffffff81168114610c08575f80fd5b939692955090935050565b5f60208284031215610c23575f80fd5b81356001600160801b0381168114610bad575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c6057610c60610c39565b92915050565b80820180821115610c6057610c60610c39565b8082028115828204841417610c6057610c60610c39565b5f82610caa57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610cbf575f80fd5b81518015158114610bad575f80fd5b5f5b83811015610ce8578181015183820152602001610cd0565b50505f910152565b5f8251610d01818460208701610cce565b9190910192915050565b602081525f8251806020840152610d29816040850160208701610cce565b601f01601f1916919091016040019291505056fea2646970667358221220371dbb6a61778cdf8740922f6cb6ab79117a9123eb9cce64bf20f432808d3a4d64736f6c63430008180033