0x6080604052600f60015534801561001557600080fd5b50610021600033610027565b506100d3565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100c9576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100cd565b5060005b92915050565b611229806100e26000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806354f141c4116100b25780639f2524ee11610081578063a2facc2911610066578063a2facc29146103b7578063d547741f146103c1578063e6ca9da4146103d457600080fd5b80639f2524ee14610347578063a217fddf146103af57600080fd5b806354f141c4146102825780636b0dd90f1461028a57806391d14854146102dc5780639e8d31d51461032057600080fd5b80631959a002116100ee5780631959a002146101b9578063248a9ca3146102375780632f2ff15d1461025a57806336568abe1461026f57600080fd5b806301ffc9a714610120578063049261dd1461014857806306f5296e1461015f5780630ed7e96a1461018a575b600080fd5b61013361012e366004610fb7565b6103e7565b60405190151581526020015b60405180910390f35b61015160015481565b60405190815260200161013f565b61015161016d366004611029565b600360209081526000928352604080842090915290825290205481565b61019d610198366004611029565b610480565b6040805160ff909316835261ffff90911660208301520161013f565b61020d6101c7366004611053565b60046020526000908152604090205467ffffffffffffffff8082169168010000000000000000810490911690700100000000000000000000000000000000900460ff1683565b6040805167ffffffffffffffff948516815293909216602084015260ff169082015260600161013f565b61015161024536600461106e565b60009081526020819052604090206001015490565b61026d610268366004611087565b61087f565b005b61026d61027d366004611087565b6108aa565b610151601e81565b61019d610298366004611029565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600260209081526040808320938352929052205460ff81169161010090910461ffff1690565b6101336102ea366004611087565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101517f8c93699475be54d1d73bbbabee1213ba5867c90fcebb8234a4274f68c8da497781565b61038b610355366004611029565b600260209081526000928352604080842090915290825290205460ff8082169161ffff6101008204169163010000009091041683565b6040805160ff909416845261ffff909216602084015215159082015260600161013f565b610151600081565b6101516201518081565b61026d6103cf366004611087565b610908565b61026d6103e23660046110b3565b61092d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b3360009081527f18a8a1369a70c6dcffd8b2e3fc8c4cd952a415c5a31f654562b2947b61fbd1136020526040812054819060ff1661051f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d75737420626520656469746f7200000000000000000000000000000000000060448201526064015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff8516600090815260046020526040902054700100000000000000000000000000000000900460ff16146105c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f216d617820766f746500000000000000000000000000000000000000000000006044820152606401610516565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832086845290915290208054610100900461ffff16610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d757374206861766520766f74650000000000000000000000000000000000006044820152606401610516565b80546301000000900460ff16156106da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d757374206e6f7420636c61696d6564000000000000000000000000000000006044820152606401610516565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff16630100000017815573ffffffffffffffffffffffffffffffffffffffff8516600090815260046020526040902080546001919060089061075690849067ffffffffffffffff6801000000000000000090910416611138565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090208054600191906010906107cb90849060ff70010000000000000000000000000000000090910416611160565b92506101000a81548160ff021916908360ff1602179055506000601e856107f29190611179565b82546040805173ffffffffffffffffffffffffffffffffffffffff8a1681526020810189905290810183905260ff8216606082015261010090910461ffff1660808201529091507f0f4710ecc6d34dea6ae4759aff1d63e4d5e61dcd52ef92407d5e4bbca5bdcff79060a00160405180910390a1505460ff81169561010090910461ffff16945092505050565b60008281526020819052604090206001015461089a81610d69565b6108a48383610d76565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146108f9576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109038282610e72565b505050565b60008281526020819052604090206001015461092381610d69565b6108a48383610e72565b3360009081527f18a8a1369a70c6dcffd8b2e3fc8c4cd952a415c5a31f654562b2947b61fbd113602052604090205460ff166109c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d75737420626520656469746f720000000000000000000000000000000000006044820152606401610516565b6000620151806109d8621a5e00426111b4565b6109e29190611179565b905060006109f1601e83611179565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600260209081526040808320868452909152902054909150610100900461ffff1615610a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d757374206e6f20766f74652073616d652064617900000000000000000000006044820152606401610516565b6040805160608101825260ff808716825261ffff8087166020808501918252600085870181815273ffffffffffffffffffffffffffffffffffffffff8d16808352600284528883208b84528452888320975188549551925115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff93909716610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000909616971696909617939093179290921692909217909355908252600381528282208483529052908120805460019290610b7a9084906111c7565b909155505073ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260408120805460019290610bbf90849067ffffffffffffffff16611138565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555073ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020805460019190601090610c3490849060ff700100000000000000000000000000000000909104166111da565b82546101009290920a60ff81810219909316918316021790915560015473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040902054700100000000000000000000000000000000900490911611159050610cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f216d617820766f746500000000000000000000000000000000000000000000006044820152606401610516565b6040805173ffffffffffffffffffffffffffffffffffffffff871681526020810184905290810182905260ff8516606082015261ffff841660808201527fe12a23cd91a9f9de87b3e599bcd1d21e663828965099b93b8612b68bff19a6709060a00160405180910390a15050505050565b610d738133610f2d565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610e6a5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610e083390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161047a565b50600061047a565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610e6a5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161047a565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610fb3576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610516565b5050565b600060208284031215610fc957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ff957600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461102457600080fd5b919050565b6000806040838503121561103c57600080fd5b61104583611000565b946020939093013593505050565b60006020828403121561106557600080fd5b610ff982611000565b60006020828403121561108057600080fd5b5035919050565b6000806040838503121561109a57600080fd5b823591506110aa60208401611000565b90509250929050565b6000806000606084860312156110c857600080fd5b6110d184611000565b9250602084013560ff811681146110e757600080fd5b9150604084013561ffff811681146110fe57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561115957611159611109565b5092915050565b60ff828116828216039081111561047a5761047a611109565b6000826111af577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561047a5761047a611109565b8082018082111561047a5761047a611109565b60ff818116838216019081111561047a5761047a61110956fea26469706673582212204f5948fbb944bfd75251e2b2f7aa8798eafbaf80abd7b8e48b1bd93e5e27f51964736f6c63430008140033