diff --git a/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2.py b/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2.py index ac0380bae..f97af7955 100644 --- a/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2.py +++ b/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2.py @@ -24,7 +24,7 @@ package='imrpc', syntax='proto3', serialized_options=None, - serialized_pb=_b('\nCgithub.com/longhorn/longhorn-instance-manager/pkg/imrpc/proxy.proto\x12\x05imrpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x41github.com/longhorn/longhorn-engine/proto/ptypes/controller.proto\x1a@github.com/longhorn/longhorn-engine/proto/ptypes/syncagent.proto\x1a\x44github.com/longhorn/longhorn-instance-manager/pkg/imrpc/common.proto\"\x88\x01\n\x12ProxyEngineRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x37\n\x14\x62\x61\x63kend_store_driver\x18\x02 \x01(\x0e\x32\x19.imrpc.BackendStoreDriver\x12\x13\n\x0b\x65ngine_name\x18\x03 \x01(\t\x12\x13\n\x0bvolume_name\x18\x04 \x01(\t\"D\n\x1a\x45ngineVersionProxyResponse\x12&\n\x07version\x18\x01 \x01(\x0b\x32\x15.ptypes.VersionOutput\">\n\x1c\x45ngineVolumeGetProxyResponse\x12\x1e\n\x06volume\x18\x01 \x01(\x0b\x32\x0e.ptypes.Volume\"\x81\x01\n\x19\x45ngineVolumeExpandRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12+\n\x06\x65xpand\x18\x02 \x01(\x0b\x32\x1b.ptypes.VolumeExpandRequest\"\x97\x01\n EngineVolumeFrontendStartRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12:\n\x0e\x66rontend_start\x18\x02 \x01(\x0b\x32\".ptypes.VolumeFrontendStartRequest\"\x8e\x01\n\x1b\x45ngineVolumeSnapshotRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x36\n\x0fsnapshot_volume\x18\x02 \x01(\x0b\x32\x1d.ptypes.VolumeSnapshotRequest\"R\n!EngineVolumeSnapshotProxyResponse\x12-\n\x08snapshot\x18\x01 \x01(\x0b\x32\x1b.ptypes.VolumeSnapshotReply\"\xb6\x01\n/EngineVolumeUnmapMarkSnapChainRemovedSetRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12J\n\x0funmap_mark_snap\x18\x02 \x01(\x0b\x32\x31.ptypes.VolumeUnmapMarkSnapChainRemovedSetRequest\"\xb0\x01\n\x1f\x45ngineSnapshotListProxyResponse\x12@\n\x05\x64isks\x18\x01 \x03(\x0b\x32\x31.imrpc.EngineSnapshotListProxyResponse.DisksEntry\x1aK\n\nDisksEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.imrpc.EngineSnapshotDiskInfo:\x02\x38\x01\"\xd6\x02\n\x16\x45ngineSnapshotDiskInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06parent\x18\x02 \x01(\t\x12=\n\x08\x63hildren\x18\x03 \x03(\x0b\x32+.imrpc.EngineSnapshotDiskInfo.ChildrenEntry\x12\x0f\n\x07removed\x18\x04 \x01(\x08\x12\x14\n\x0cuser_created\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\t\x12\x0c\n\x04size\x18\x07 \x01(\t\x12\x39\n\x06labels\x18\x08 \x03(\x0b\x32).imrpc.EngineSnapshotDiskInfo.LabelsEntry\x1a/\n\rChildrenEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"d\n\x1b\x45ngineSnapshotRevertRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\"r\n\x1a\x45ngineSnapshotPurgeRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x1b\n\x13skip_if_in_progress\x18\x02 \x01(\x08\"\xc7\x01\n&EngineSnapshotPurgeStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineSnapshotPurgeStatusProxyResponse.StatusEntry\x1aR\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.ptypes.SnapshotPurgeStatusResponse:\x02\x38\x01\"\x8b\x02\n\x1a\x45ngineSnapshotCloneRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x1b\n\x13\x66rom_engine_address\x18\x02 \x01(\t\x12\x15\n\rsnapshot_name\x18\x03 \x01(\t\x12%\n\x1d\x65xport_backing_image_if_exist\x18\x04 \x01(\x08\x12%\n\x1d\x66ile_sync_http_client_timeout\x18\x05 \x01(\x05\x12\x18\n\x10\x66rom_engine_name\x18\x06 \x01(\t\x12\x18\n\x10\x66rom_volume_name\x18\x07 \x01(\t\"\xc7\x01\n&EngineSnapshotCloneStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineSnapshotCloneStatusProxyResponse.StatusEntry\x1aR\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.ptypes.SnapshotCloneStatusResponse:\x02\x38\x01\"e\n\x1b\x45ngineSnapshotRemoveRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\r\n\x05names\x18\x02 \x03(\t\"\xa4\x03\n\x1b\x45ngineSnapshotBackupRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04\x65nvs\x18\x08 \x03(\t\x12\x13\n\x0b\x62\x61\x63kup_name\x18\x02 \x01(\t\x12\x15\n\rsnapshot_name\x18\x03 \x01(\t\x12\x15\n\rbackup_target\x18\x04 \x01(\t\x12\x1a\n\x12\x62\x61\x63king_image_name\x18\x05 \x01(\t\x12\x1e\n\x16\x62\x61\x63king_image_checksum\x18\x06 \x01(\t\x12>\n\x06labels\x18\x07 \x03(\x0b\x32..imrpc.EngineSnapshotBackupRequest.LabelsEntry\x12\x1a\n\x12\x63ompression_method\x18\t \x01(\t\x12\x18\n\x10\x63oncurrent_limit\x18\n \x01(\x05\x12\x1a\n\x12storage_class_name\x18\x0b \x01(\t\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"_\n!EngineSnapshotBackupProxyResponse\x12\x11\n\tbackup_id\x18\x01 \x01(\t\x12\x0f\n\x07replica\x18\x02 \x01(\t\x12\x16\n\x0eis_incremental\x18\x03 \x01(\x08\"\xa0\x01\n!EngineSnapshotBackupStatusRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x13\n\x0b\x62\x61\x63kup_name\x18\x02 \x01(\t\x12\x17\n\x0freplica_address\x18\x03 \x01(\t\x12\x14\n\x0creplica_name\x18\x04 \x01(\t\"\x9d\x01\n\'EngineSnapshotBackupStatusProxyResponse\x12\x12\n\nbackup_url\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x10\n\x08progress\x18\x03 \x01(\x05\x12\x15\n\rsnapshot_name\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x17\n\x0freplica_address\x18\x06 \x01(\t\"\xaf\x01\n\x1a\x45ngineBackupRestoreRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04\x65nvs\x18\x02 \x03(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\t\x12\x13\n\x0bvolume_name\x18\x05 \x01(\t\x12\x18\n\x10\x63oncurrent_limit\x18\x06 \x01(\x05\"5\n EngineBackupRestoreProxyResponse\x12\x11\n\ttaskError\x18\x01 \x01(\x0c\"\xc4\x01\n&EngineBackupRestoreStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineBackupRestoreStatusProxyResponse.StatusEntry\x1aO\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .imrpc.EngineBackupRestoreStatus:\x02\x38\x01\"\xc0\x01\n\x19\x45ngineBackupRestoreStatus\x12\x14\n\x0cis_restoring\x18\x01 \x01(\x08\x12\x15\n\rlast_restored\x18\x02 \x01(\t\x12 \n\x18\x63urrent_restoring_backup\x18\x03 \x01(\t\x12\x10\n\x08progress\x18\x04 \x01(\x05\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12\x10\n\x08\x66ilename\x18\x06 \x01(\t\x12\r\n\x05state\x18\x07 \x01(\t\x12\x12\n\nbackup_url\x18\x08 \x01(\t\"\xf0\x01\n\x17\x45ngineReplicaAddRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x0f\n\x07restore\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x14\n\x0c\x63urrent_size\x18\x05 \x01(\x03\x12\x11\n\tfast_sync\x18\x06 \x01(\x08\x12%\n\x1d\x66ile_sync_http_client_timeout\x18\x07 \x01(\x05\x12\x14\n\x0creplica_name\x18\x08 \x01(\t\"P\n\x1e\x45ngineReplicaListProxyResponse\x12.\n\x0creplica_list\x18\x01 \x01(\x0b\x32\x18.ptypes.ReplicaListReply\"\x8b\x01\n!EngineReplicaVerifyRebuildRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x14\n\x0creplica_name\x18\x03 \x01(\t\"\xca\x01\n\'EngineReplicaRebuildStatusProxyResponse\x12J\n\x06status\x18\x01 \x03(\x0b\x32:.imrpc.EngineReplicaRebuildStatusProxyResponse.StatusEntry\x1aS\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.ptypes.ReplicaRebuildStatusResponse:\x02\x38\x01\"\x84\x01\n\x1a\x45ngineReplicaRemoveRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x14\n\x0creplica_name\x18\x03 \x01(\t\"\x95\x01\n\x1e\x45ngineReplicaModeUpdateRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12!\n\x04mode\x18\x03 \x01(\x0e\x32\x13.ptypes.ReplicaMode\"{\n\x19\x45ngineSnapshotHashRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x15\n\rsnapshot_name\x18\x02 \x01(\t\x12\x0e\n\x06rehash\x18\x03 \x01(\x08\"q\n\x1f\x45ngineSnapshotHashStatusRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x15\n\rsnapshot_name\x18\x02 \x01(\t\"\xc4\x01\n%EngineSnapshotHashStatusProxyResponse\x12H\n\x06status\x18\x01 \x03(\x0b\x32\x38.imrpc.EngineSnapshotHashStatusProxyResponse.StatusEntry\x1aQ\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".ptypes.SnapshotHashStatusResponse:\x02\x38\x01\"A\n\x1d\x45ngineMetricsGetProxyResponse\x12 \n\x07metrics\x18\x01 \x01(\x0b\x32\x0f.ptypes.Metrics2\xcd\x12\n\x12ProxyEngineService\x12P\n\x10ServerVersionGet\x12\x19.imrpc.ProxyEngineRequest\x1a!.imrpc.EngineVersionProxyResponse\x12K\n\tVolumeGet\x12\x19.imrpc.ProxyEngineRequest\x1a#.imrpc.EngineVolumeGetProxyResponse\x12H\n\x0cVolumeExpand\x12 .imrpc.EngineVolumeExpandRequest\x1a\x16.google.protobuf.Empty\x12V\n\x13VolumeFrontendStart\x12\'.imrpc.EngineVolumeFrontendStartRequest\x1a\x16.google.protobuf.Empty\x12K\n\x16VolumeFrontendShutdown\x12\x19.imrpc.ProxyEngineRequest\x1a\x16.google.protobuf.Empty\x12t\n\"VolumeUnmapMarkSnapChainRemovedSet\x12\x36.imrpc.EngineVolumeUnmapMarkSnapChainRemovedSetRequest\x1a\x16.google.protobuf.Empty\x12^\n\x0eVolumeSnapshot\x12\".imrpc.EngineVolumeSnapshotRequest\x1a(.imrpc.EngineVolumeSnapshotProxyResponse\x12Q\n\x0cSnapshotList\x12\x19.imrpc.ProxyEngineRequest\x1a&.imrpc.EngineSnapshotListProxyResponse\x12L\n\x0eSnapshotRevert\x12\".imrpc.EngineSnapshotRevertRequest\x1a\x16.google.protobuf.Empty\x12J\n\rSnapshotPurge\x12!.imrpc.EngineSnapshotPurgeRequest\x1a\x16.google.protobuf.Empty\x12_\n\x13SnapshotPurgeStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineSnapshotPurgeStatusProxyResponse\x12J\n\rSnapshotClone\x12!.imrpc.EngineSnapshotCloneRequest\x1a\x16.google.protobuf.Empty\x12_\n\x13SnapshotCloneStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineSnapshotCloneStatusProxyResponse\x12L\n\x0eSnapshotRemove\x12\".imrpc.EngineSnapshotRemoveRequest\x1a\x16.google.protobuf.Empty\x12H\n\x0cSnapshotHash\x12 .imrpc.EngineSnapshotHashRequest\x1a\x16.google.protobuf.Empty\x12j\n\x12SnapshotHashStatus\x12&.imrpc.EngineSnapshotHashStatusRequest\x1a,.imrpc.EngineSnapshotHashStatusProxyResponse\x12^\n\x0eSnapshotBackup\x12\".imrpc.EngineSnapshotBackupRequest\x1a(.imrpc.EngineSnapshotBackupProxyResponse\x12p\n\x14SnapshotBackupStatus\x12(.imrpc.EngineSnapshotBackupStatusRequest\x1a..imrpc.EngineSnapshotBackupStatusProxyResponse\x12[\n\rBackupRestore\x12!.imrpc.EngineBackupRestoreRequest\x1a\'.imrpc.EngineBackupRestoreProxyResponse\x12_\n\x13\x42\x61\x63kupRestoreStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineBackupRestoreStatusProxyResponse\x12\x44\n\nReplicaAdd\x12\x1e.imrpc.EngineReplicaAddRequest\x1a\x16.google.protobuf.Empty\x12O\n\x0bReplicaList\x12\x19.imrpc.ProxyEngineRequest\x1a%.imrpc.EngineReplicaListProxyResponse\x12\x64\n\x17ReplicaRebuildingStatus\x12\x19.imrpc.ProxyEngineRequest\x1a..imrpc.EngineReplicaRebuildStatusProxyResponse\x12X\n\x14ReplicaVerifyRebuild\x12(.imrpc.EngineReplicaVerifyRebuildRequest\x1a\x16.google.protobuf.Empty\x12J\n\rReplicaRemove\x12!.imrpc.EngineReplicaRemoveRequest\x1a\x16.google.protobuf.Empty\x12R\n\x11ReplicaModeUpdate\x12%.imrpc.EngineReplicaModeUpdateRequest\x1a\x16.google.protobuf.Empty\x12M\n\nMetricsGet\x12\x19.imrpc.ProxyEngineRequest\x1a$.imrpc.EngineMetricsGetProxyResponseb\x06proto3') + serialized_pb=_b('\nCgithub.com/longhorn/longhorn-instance-manager/pkg/imrpc/proxy.proto\x12\x05imrpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x41github.com/longhorn/longhorn-engine/proto/ptypes/controller.proto\x1a@github.com/longhorn/longhorn-engine/proto/ptypes/syncagent.proto\x1a\x44github.com/longhorn/longhorn-instance-manager/pkg/imrpc/common.proto\"\x88\x01\n\x12ProxyEngineRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x37\n\x14\x62\x61\x63kend_store_driver\x18\x02 \x01(\x0e\x32\x19.imrpc.BackendStoreDriver\x12\x13\n\x0b\x65ngine_name\x18\x03 \x01(\t\x12\x13\n\x0bvolume_name\x18\x04 \x01(\t\"D\n\x1a\x45ngineVersionProxyResponse\x12&\n\x07version\x18\x01 \x01(\x0b\x32\x15.ptypes.VersionOutput\">\n\x1c\x45ngineVolumeGetProxyResponse\x12\x1e\n\x06volume\x18\x01 \x01(\x0b\x32\x0e.ptypes.Volume\"\x81\x01\n\x19\x45ngineVolumeExpandRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12+\n\x06\x65xpand\x18\x02 \x01(\x0b\x32\x1b.ptypes.VolumeExpandRequest\"\x97\x01\n EngineVolumeFrontendStartRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12:\n\x0e\x66rontend_start\x18\x02 \x01(\x0b\x32\".ptypes.VolumeFrontendStartRequest\"\x8e\x01\n\x1b\x45ngineVolumeSnapshotRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x36\n\x0fsnapshot_volume\x18\x02 \x01(\x0b\x32\x1d.ptypes.VolumeSnapshotRequest\"R\n!EngineVolumeSnapshotProxyResponse\x12-\n\x08snapshot\x18\x01 \x01(\x0b\x32\x1b.ptypes.VolumeSnapshotReply\"\xb6\x01\n/EngineVolumeUnmapMarkSnapChainRemovedSetRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12J\n\x0funmap_mark_snap\x18\x02 \x01(\x0b\x32\x31.ptypes.VolumeUnmapMarkSnapChainRemovedSetRequest\"\xb0\x01\n\x1f\x45ngineSnapshotListProxyResponse\x12@\n\x05\x64isks\x18\x01 \x03(\x0b\x32\x31.imrpc.EngineSnapshotListProxyResponse.DisksEntry\x1aK\n\nDisksEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.imrpc.EngineSnapshotDiskInfo:\x02\x38\x01\"\xd6\x02\n\x16\x45ngineSnapshotDiskInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06parent\x18\x02 \x01(\t\x12=\n\x08\x63hildren\x18\x03 \x03(\x0b\x32+.imrpc.EngineSnapshotDiskInfo.ChildrenEntry\x12\x0f\n\x07removed\x18\x04 \x01(\x08\x12\x14\n\x0cuser_created\x18\x05 \x01(\x08\x12\x0f\n\x07\x63reated\x18\x06 \x01(\t\x12\x0c\n\x04size\x18\x07 \x01(\t\x12\x39\n\x06labels\x18\x08 \x03(\x0b\x32).imrpc.EngineSnapshotDiskInfo.LabelsEntry\x1a/\n\rChildrenEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"d\n\x1b\x45ngineSnapshotRevertRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\"r\n\x1a\x45ngineSnapshotPurgeRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x1b\n\x13skip_if_in_progress\x18\x02 \x01(\x08\"\xc7\x01\n&EngineSnapshotPurgeStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineSnapshotPurgeStatusProxyResponse.StatusEntry\x1aR\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.ptypes.SnapshotPurgeStatusResponse:\x02\x38\x01\"\x8b\x02\n\x1a\x45ngineSnapshotCloneRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x1b\n\x13\x66rom_engine_address\x18\x02 \x01(\t\x12\x15\n\rsnapshot_name\x18\x03 \x01(\t\x12%\n\x1d\x65xport_backing_image_if_exist\x18\x04 \x01(\x08\x12%\n\x1d\x66ile_sync_http_client_timeout\x18\x05 \x01(\x05\x12\x18\n\x10\x66rom_engine_name\x18\x06 \x01(\t\x12\x18\n\x10\x66rom_volume_name\x18\x07 \x01(\t\"\xc7\x01\n&EngineSnapshotCloneStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineSnapshotCloneStatusProxyResponse.StatusEntry\x1aR\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.ptypes.SnapshotCloneStatusResponse:\x02\x38\x01\"e\n\x1b\x45ngineSnapshotRemoveRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\r\n\x05names\x18\x02 \x03(\t\"\xa4\x03\n\x1b\x45ngineSnapshotBackupRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04\x65nvs\x18\x08 \x03(\t\x12\x13\n\x0b\x62\x61\x63kup_name\x18\x02 \x01(\t\x12\x15\n\rsnapshot_name\x18\x03 \x01(\t\x12\x15\n\rbackup_target\x18\x04 \x01(\t\x12\x1a\n\x12\x62\x61\x63king_image_name\x18\x05 \x01(\t\x12\x1e\n\x16\x62\x61\x63king_image_checksum\x18\x06 \x01(\t\x12>\n\x06labels\x18\x07 \x03(\x0b\x32..imrpc.EngineSnapshotBackupRequest.LabelsEntry\x12\x1a\n\x12\x63ompression_method\x18\t \x01(\t\x12\x18\n\x10\x63oncurrent_limit\x18\n \x01(\x05\x12\x1a\n\x12storage_class_name\x18\x0b \x01(\t\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"_\n!EngineSnapshotBackupProxyResponse\x12\x11\n\tbackup_id\x18\x01 \x01(\t\x12\x0f\n\x07replica\x18\x02 \x01(\t\x12\x16\n\x0eis_incremental\x18\x03 \x01(\x08\"\xa0\x01\n!EngineSnapshotBackupStatusRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x13\n\x0b\x62\x61\x63kup_name\x18\x02 \x01(\t\x12\x17\n\x0freplica_address\x18\x03 \x01(\t\x12\x14\n\x0creplica_name\x18\x04 \x01(\t\"\x9d\x01\n\'EngineSnapshotBackupStatusProxyResponse\x12\x12\n\nbackup_url\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x10\n\x08progress\x18\x03 \x01(\x05\x12\x15\n\rsnapshot_name\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x17\n\x0freplica_address\x18\x06 \x01(\t\"\xaf\x01\n\x1a\x45ngineBackupRestoreRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x0c\n\x04\x65nvs\x18\x02 \x03(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\t\x12\x13\n\x0bvolume_name\x18\x05 \x01(\t\x12\x18\n\x10\x63oncurrent_limit\x18\x06 \x01(\x05\"5\n EngineBackupRestoreProxyResponse\x12\x11\n\ttaskError\x18\x01 \x01(\x0c\"\xc4\x01\n&EngineBackupRestoreStatusProxyResponse\x12I\n\x06status\x18\x01 \x03(\x0b\x32\x39.imrpc.EngineBackupRestoreStatusProxyResponse.StatusEntry\x1aO\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .imrpc.EngineBackupRestoreStatus:\x02\x38\x01\"\xc0\x01\n\x19\x45ngineBackupRestoreStatus\x12\x14\n\x0cis_restoring\x18\x01 \x01(\x08\x12\x15\n\rlast_restored\x18\x02 \x01(\t\x12 \n\x18\x63urrent_restoring_backup\x18\x03 \x01(\t\x12\x10\n\x08progress\x18\x04 \x01(\x05\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12\x10\n\x08\x66ilename\x18\x06 \x01(\t\x12\r\n\x05state\x18\x07 \x01(\t\x12\x12\n\nbackup_url\x18\x08 \x01(\t\"\xf0\x01\n\x17\x45ngineReplicaAddRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x0f\n\x07restore\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x14\n\x0c\x63urrent_size\x18\x05 \x01(\x03\x12\x11\n\tfast_sync\x18\x06 \x01(\x08\x12%\n\x1d\x66ile_sync_http_client_timeout\x18\x07 \x01(\x05\x12\x14\n\x0creplica_name\x18\x08 \x01(\t\"P\n\x1e\x45ngineReplicaListProxyResponse\x12.\n\x0creplica_list\x18\x01 \x01(\x0b\x32\x18.ptypes.ReplicaListReply\"\x8b\x01\n!EngineReplicaVerifyRebuildRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x14\n\x0creplica_name\x18\x03 \x01(\t\"\xca\x01\n\'EngineReplicaRebuildStatusProxyResponse\x12J\n\x06status\x18\x01 \x03(\x0b\x32:.imrpc.EngineReplicaRebuildStatusProxyResponse.StatusEntry\x1aS\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.ptypes.ReplicaRebuildStatusResponse:\x02\x38\x01\"\x84\x01\n\x1a\x45ngineReplicaRemoveRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12\x14\n\x0creplica_name\x18\x03 \x01(\t\"\x95\x01\n\x1e\x45ngineReplicaModeUpdateRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x17\n\x0freplica_address\x18\x02 \x01(\t\x12!\n\x04mode\x18\x03 \x01(\x0e\x32\x13.ptypes.ReplicaMode\"{\n\x19\x45ngineSnapshotHashRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x15\n\rsnapshot_name\x18\x02 \x01(\t\x12\x0e\n\x06rehash\x18\x03 \x01(\x08\"q\n\x1f\x45ngineSnapshotHashStatusRequest\x12\x37\n\x14proxy_engine_request\x18\x01 \x01(\x0b\x32\x19.imrpc.ProxyEngineRequest\x12\x15\n\rsnapshot_name\x18\x02 \x01(\t\"\xc4\x01\n%EngineSnapshotHashStatusProxyResponse\x12H\n\x06status\x18\x01 \x03(\x0b\x32\x38.imrpc.EngineSnapshotHashStatusProxyResponse.StatusEntry\x1aQ\n\x0bStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".ptypes.SnapshotHashStatusResponse:\x02\x38\x01\"A\n\x1d\x45ngineMetricsGetProxyResponse\x12 \n\x07metrics\x18\x01 \x01(\x0b\x32\x0f.ptypes.Metrics2\x99\x13\n\x12ProxyEngineService\x12P\n\x10ServerVersionGet\x12\x19.imrpc.ProxyEngineRequest\x1a!.imrpc.EngineVersionProxyResponse\x12K\n\tVolumeGet\x12\x19.imrpc.ProxyEngineRequest\x1a#.imrpc.EngineVolumeGetProxyResponse\x12H\n\x0cVolumeExpand\x12 .imrpc.EngineVolumeExpandRequest\x1a\x16.google.protobuf.Empty\x12V\n\x13VolumeFrontendStart\x12\'.imrpc.EngineVolumeFrontendStartRequest\x1a\x16.google.protobuf.Empty\x12K\n\x16VolumeFrontendShutdown\x12\x19.imrpc.ProxyEngineRequest\x1a\x16.google.protobuf.Empty\x12t\n\"VolumeUnmapMarkSnapChainRemovedSet\x12\x36.imrpc.EngineVolumeUnmapMarkSnapChainRemovedSetRequest\x1a\x16.google.protobuf.Empty\x12^\n\x0eVolumeSnapshot\x12\".imrpc.EngineVolumeSnapshotRequest\x1a(.imrpc.EngineVolumeSnapshotProxyResponse\x12Q\n\x0cSnapshotList\x12\x19.imrpc.ProxyEngineRequest\x1a&.imrpc.EngineSnapshotListProxyResponse\x12L\n\x0eSnapshotRevert\x12\".imrpc.EngineSnapshotRevertRequest\x1a\x16.google.protobuf.Empty\x12J\n\rSnapshotPurge\x12!.imrpc.EngineSnapshotPurgeRequest\x1a\x16.google.protobuf.Empty\x12_\n\x13SnapshotPurgeStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineSnapshotPurgeStatusProxyResponse\x12J\n\rSnapshotClone\x12!.imrpc.EngineSnapshotCloneRequest\x1a\x16.google.protobuf.Empty\x12_\n\x13SnapshotCloneStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineSnapshotCloneStatusProxyResponse\x12L\n\x0eSnapshotRemove\x12\".imrpc.EngineSnapshotRemoveRequest\x1a\x16.google.protobuf.Empty\x12H\n\x0cSnapshotHash\x12 .imrpc.EngineSnapshotHashRequest\x1a\x16.google.protobuf.Empty\x12j\n\x12SnapshotHashStatus\x12&.imrpc.EngineSnapshotHashStatusRequest\x1a,.imrpc.EngineSnapshotHashStatusProxyResponse\x12^\n\x0eSnapshotBackup\x12\".imrpc.EngineSnapshotBackupRequest\x1a(.imrpc.EngineSnapshotBackupProxyResponse\x12p\n\x14SnapshotBackupStatus\x12(.imrpc.EngineSnapshotBackupStatusRequest\x1a..imrpc.EngineSnapshotBackupStatusProxyResponse\x12[\n\rBackupRestore\x12!.imrpc.EngineBackupRestoreRequest\x1a\'.imrpc.EngineBackupRestoreProxyResponse\x12_\n\x13\x42\x61\x63kupRestoreStatus\x12\x19.imrpc.ProxyEngineRequest\x1a-.imrpc.EngineBackupRestoreStatusProxyResponse\x12J\n\x18\x43leanupBackupMountPoints\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12\x44\n\nReplicaAdd\x12\x1e.imrpc.EngineReplicaAddRequest\x1a\x16.google.protobuf.Empty\x12O\n\x0bReplicaList\x12\x19.imrpc.ProxyEngineRequest\x1a%.imrpc.EngineReplicaListProxyResponse\x12\x64\n\x17ReplicaRebuildingStatus\x12\x19.imrpc.ProxyEngineRequest\x1a..imrpc.EngineReplicaRebuildStatusProxyResponse\x12X\n\x14ReplicaVerifyRebuild\x12(.imrpc.EngineReplicaVerifyRebuildRequest\x1a\x16.google.protobuf.Empty\x12J\n\rReplicaRemove\x12!.imrpc.EngineReplicaRemoveRequest\x1a\x16.google.protobuf.Empty\x12R\n\x11ReplicaModeUpdate\x12%.imrpc.EngineReplicaModeUpdateRequest\x1a\x16.google.protobuf.Empty\x12M\n\nMetricsGet\x12\x19.imrpc.ProxyEngineRequest\x1a$.imrpc.EngineMetricsGetProxyResponseb\x06proto3') , dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,github_dot_com_dot_longhorn_dot_longhorn__engine_dot_proto_dot_ptypes_dot_controller__pb2.DESCRIPTOR,github_dot_com_dot_longhorn_dot_longhorn__engine_dot_proto_dot_ptypes_dot_syncagent__pb2.DESCRIPTOR,github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_common__pb2.DESCRIPTOR,]) @@ -2330,7 +2330,7 @@ index=0, serialized_options=None, serialized_start=5738, - serialized_end=8119, + serialized_end=8195, methods=[ _descriptor.MethodDescriptor( name='ServerVersionGet', @@ -2512,10 +2512,19 @@ output_type=_ENGINEBACKUPRESTORESTATUSPROXYRESPONSE, serialized_options=None, ), + _descriptor.MethodDescriptor( + name='CleanupBackupMountPoints', + full_name='imrpc.ProxyEngineService.CleanupBackupMountPoints', + index=20, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), _descriptor.MethodDescriptor( name='ReplicaAdd', full_name='imrpc.ProxyEngineService.ReplicaAdd', - index=20, + index=21, containing_service=None, input_type=_ENGINEREPLICAADDREQUEST, output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, @@ -2524,7 +2533,7 @@ _descriptor.MethodDescriptor( name='ReplicaList', full_name='imrpc.ProxyEngineService.ReplicaList', - index=21, + index=22, containing_service=None, input_type=_PROXYENGINEREQUEST, output_type=_ENGINEREPLICALISTPROXYRESPONSE, @@ -2533,7 +2542,7 @@ _descriptor.MethodDescriptor( name='ReplicaRebuildingStatus', full_name='imrpc.ProxyEngineService.ReplicaRebuildingStatus', - index=22, + index=23, containing_service=None, input_type=_PROXYENGINEREQUEST, output_type=_ENGINEREPLICAREBUILDSTATUSPROXYRESPONSE, @@ -2542,7 +2551,7 @@ _descriptor.MethodDescriptor( name='ReplicaVerifyRebuild', full_name='imrpc.ProxyEngineService.ReplicaVerifyRebuild', - index=23, + index=24, containing_service=None, input_type=_ENGINEREPLICAVERIFYREBUILDREQUEST, output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, @@ -2551,7 +2560,7 @@ _descriptor.MethodDescriptor( name='ReplicaRemove', full_name='imrpc.ProxyEngineService.ReplicaRemove', - index=24, + index=25, containing_service=None, input_type=_ENGINEREPLICAREMOVEREQUEST, output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, @@ -2560,7 +2569,7 @@ _descriptor.MethodDescriptor( name='ReplicaModeUpdate', full_name='imrpc.ProxyEngineService.ReplicaModeUpdate', - index=25, + index=26, containing_service=None, input_type=_ENGINEREPLICAMODEUPDATEREQUEST, output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, @@ -2569,7 +2578,7 @@ _descriptor.MethodDescriptor( name='MetricsGet', full_name='imrpc.ProxyEngineService.MetricsGet', - index=26, + index=27, containing_service=None, input_type=_PROXYENGINEREQUEST, output_type=_ENGINEMETRICSGETPROXYRESPONSE, diff --git a/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2_grpc.py b/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2_grpc.py index 6b1ef1a52..a10a023c7 100644 --- a/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2_grpc.py +++ b/integration/rpc/proxy/github/com/longhorn/longhorn_instance_manager/pkg/imrpc/proxy_pb2_grpc.py @@ -115,6 +115,11 @@ def __init__(self, channel): request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.ProxyEngineRequest.SerializeToString, response_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.EngineBackupRestoreStatusProxyResponse.FromString, ) + self.CleanupBackupMountPoints = channel.unary_unary( + '/imrpc.ProxyEngineService/CleanupBackupMountPoints', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) self.ReplicaAdd = channel.unary_unary( '/imrpc.ProxyEngineService/ReplicaAdd', request_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.EngineReplicaAddRequest.SerializeToString, @@ -296,6 +301,13 @@ def BackupRestoreStatus(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def CleanupBackupMountPoints(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def ReplicaAdd(self, request, context): # missing associated documentation comment in .proto file pass @@ -448,6 +460,11 @@ def add_ProxyEngineServiceServicer_to_server(servicer, server): request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.ProxyEngineRequest.FromString, response_serializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.EngineBackupRestoreStatusProxyResponse.SerializeToString, ), + 'CleanupBackupMountPoints': grpc.unary_unary_rpc_method_handler( + servicer.CleanupBackupMountPoints, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), 'ReplicaAdd': grpc.unary_unary_rpc_method_handler( servicer.ReplicaAdd, request_deserializer=github_dot_com_dot_longhorn_dot_longhorn__instance__manager_dot_pkg_dot_imrpc_dot_proxy__pb2.EngineReplicaAddRequest.FromString, diff --git a/pkg/client/proxy_backup.go b/pkg/client/proxy_backup.go index d881cff55..4585061cb 100644 --- a/pkg/client/proxy_backup.go +++ b/pkg/client/proxy_backup.go @@ -4,11 +4,20 @@ import ( "encoding/json" "fmt" + "github.com/golang/protobuf/ptypes/empty" "github.com/pkg/errors" rpc "github.com/longhorn/longhorn-instance-manager/pkg/imrpc" ) +func (c *ProxyClient) CleanupBackupMountPoints() (err error) { + _, err = c.service.CleanupBackupMountPoints(getContextWithGRPCTimeout(c.ctx), &empty.Empty{}) + if err != nil { + return err + } + return nil +} + func (c *ProxyClient) SnapshotBackup(backendStoreDriver, engineName, volumeName, serviceAddress, backupName, snapshotName, backupTarget, backingImageName, backingImageChecksum, compressionMethod string, concurrentLimit int, storageClassName string, labels map[string]string, envs []string) (backupID, replicaAddress string, err error) { diff --git a/pkg/imrpc/proxy.pb.go b/pkg/imrpc/proxy.pb.go index bfca2cf76..a317730e2 100644 --- a/pkg/imrpc/proxy.pb.go +++ b/pkg/imrpc/proxy.pb.go @@ -1985,153 +1985,155 @@ func init() { } var fileDescriptor_c29cfec1128f1245 = []byte{ - // 2335 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x19, 0x4d, 0x73, 0x1c, 0x47, - 0xb5, 0x56, 0xab, 0x95, 0x56, 0x6f, 0xa5, 0xb5, 0xd2, 0x12, 0xca, 0x7a, 0x15, 0x27, 0xd6, 0x38, - 0xf1, 0x47, 0x11, 0xef, 0x16, 0x32, 0x15, 0x6c, 0xe7, 0x62, 0x47, 0x96, 0x6d, 0xc5, 0x16, 0x09, - 0xa3, 0xd8, 0x40, 0x85, 0x64, 0x6a, 0x34, 0xdb, 0xbb, 0x3b, 0x68, 0xbe, 0xe8, 0xe9, 0x15, 0x16, - 0x07, 0x0a, 0x7e, 0x03, 0x55, 0x14, 0x17, 0xaa, 0xb8, 0xf0, 0x07, 0xa0, 0xb8, 0x50, 0x50, 0x1c, - 0x38, 0x73, 0x0f, 0x45, 0xc1, 0x81, 0xbf, 0xc0, 0x1f, 0xa0, 0xfa, 0x6b, 0x76, 0x7a, 0xb6, 0x67, - 0x57, 0x0a, 0x6c, 0xe5, 0x36, 0xf3, 0xfa, 0xf5, 0xfb, 0x7e, 0xaf, 0x5f, 0xbf, 0x86, 0xbd, 0x81, - 0x4f, 0x87, 0xa3, 0xe3, 0x8e, 0x17, 0x87, 0xdd, 0x20, 0x8e, 0x06, 0xc3, 0x98, 0x44, 0xd9, 0xc7, - 0x6d, 0x3f, 0x4a, 0xa9, 0x1b, 0x79, 0xf8, 0x76, 0xe8, 0x46, 0xee, 0x00, 0x93, 0x6e, 0x72, 0x32, - 0xe8, 0xfa, 0x21, 0x49, 0xbc, 0x6e, 0x42, 0xe2, 0x57, 0x67, 0x9d, 0x84, 0xc4, 0x34, 0x46, 0x35, - 0x0e, 0x6a, 0x6f, 0x0f, 0xe2, 0x78, 0x10, 0xe0, 0x2e, 0x07, 0x1e, 0x8f, 0xfa, 0x5d, 0x1c, 0x26, - 0x54, 0xe2, 0xb4, 0x1f, 0x4e, 0x65, 0x84, 0xa3, 0x81, 0x1f, 0xc9, 0x9d, 0xdd, 0x84, 0x9e, 0x25, - 0x38, 0xed, 0x7a, 0x71, 0x44, 0x49, 0x1c, 0x04, 0x98, 0x48, 0x12, 0x0f, 0x2e, 0x4c, 0x22, 0x3d, - 0x8b, 0x3c, 0x77, 0x80, 0x23, 0x2a, 0x29, 0x3c, 0xfa, 0xb2, 0xda, 0x7a, 0x71, 0x18, 0xc6, 0x91, - 0xa0, 0x62, 0xfd, 0xb9, 0x02, 0xe8, 0x63, 0xa6, 0xfe, 0x3e, 0x67, 0x69, 0xe3, 0x1f, 0x8d, 0x70, - 0x4a, 0x51, 0x0b, 0x96, 0xdd, 0x5e, 0x8f, 0xe0, 0x34, 0x6d, 0x55, 0xae, 0x56, 0x6e, 0xae, 0xd8, - 0xea, 0x17, 0x3d, 0x83, 0xcd, 0x63, 0xd7, 0x3b, 0xc1, 0x51, 0xcf, 0x49, 0x69, 0x4c, 0xb0, 0xd3, - 0x23, 0xfe, 0x29, 0x26, 0xad, 0x85, 0xab, 0x95, 0x9b, 0xcd, 0xdd, 0xcb, 0x1d, 0xce, 0xa3, 0xf3, - 0x81, 0x40, 0x39, 0x62, 0x18, 0x8f, 0x38, 0x82, 0x8d, 0x8e, 0x27, 0x60, 0xe8, 0x2d, 0x68, 0x08, - 0x55, 0x9d, 0xc8, 0x0d, 0x71, 0xab, 0xca, 0x59, 0x81, 0x00, 0x7d, 0xdb, 0x0d, 0x31, 0x43, 0x38, - 0x8d, 0x83, 0x51, 0x28, 0x11, 0x16, 0x05, 0x82, 0x00, 0x31, 0x04, 0xeb, 0x10, 0xda, 0x42, 0xf2, - 0x97, 0x98, 0xa4, 0x7e, 0x1c, 0x71, 0x5d, 0x6c, 0x9c, 0x26, 0x71, 0x94, 0x62, 0xd4, 0x85, 0xe5, - 0x53, 0x01, 0xe7, 0x6a, 0x34, 0x76, 0xbf, 0xd6, 0x11, 0xd6, 0xec, 0x48, 0xf4, 0x8f, 0x46, 0x34, - 0x19, 0x51, 0x5b, 0x61, 0x59, 0x8f, 0xe1, 0x0d, 0x49, 0x8e, 0xb3, 0x78, 0x82, 0xa9, 0x4e, 0xf0, - 0x3a, 0x2c, 0x09, 0xe6, 0x92, 0x5e, 0x33, 0xa3, 0xc7, 0xa1, 0xb6, 0x5c, 0xb5, 0x7e, 0x5d, 0x81, - 0xcb, 0x79, 0x42, 0xfb, 0xaf, 0x12, 0x37, 0xea, 0x29, 0xeb, 0x3e, 0x83, 0x4d, 0x1e, 0x72, 0x8e, - 0x54, 0x9e, 0x08, 0xb8, 0xa4, 0xa9, 0x6c, 0x38, 0xe9, 0x16, 0x1b, 0x25, 0x93, 0xae, 0xba, 0x03, - 0x4b, 0x98, 0x53, 0xe7, 0x2e, 0x68, 0xec, 0x6e, 0xeb, 0x22, 0x69, 0x9c, 0x6d, 0x89, 0x6a, 0xfd, - 0xb1, 0x02, 0x57, 0xf3, 0xf2, 0x3d, 0x26, 0x71, 0x44, 0xb9, 0x73, 0x5c, 0x42, 0xe7, 0x22, 0xe6, - 0x01, 0x34, 0xfb, 0x92, 0x89, 0x93, 0x32, 0x2e, 0x52, 0x5c, 0x4b, 0x17, 0xd7, 0x24, 0x88, 0xbd, - 0xd6, 0xcf, 0x43, 0xad, 0xdf, 0x55, 0x60, 0x3b, 0x2f, 0xfc, 0x51, 0xe4, 0x26, 0xe9, 0x30, 0x9e, - 0x8f, 0xdc, 0x8f, 0xe1, 0x52, 0x2a, 0xe9, 0x3b, 0xd2, 0xf5, 0x42, 0xf0, 0x2b, 0xba, 0xe0, 0x05, - 0x21, 0xec, 0xa6, 0xda, 0x25, 0x96, 0xad, 0x1f, 0xc0, 0x8e, 0x49, 0x66, 0x3d, 0xbc, 0xbe, 0x05, - 0x75, 0xb5, 0x4d, 0x4a, 0xbb, 0x5d, 0xc6, 0x25, 0x09, 0xce, 0xec, 0x0c, 0xd9, 0xfa, 0x7b, 0x05, - 0xba, 0x79, 0xf2, 0x2f, 0xa2, 0xd0, 0x4d, 0x0e, 0x5d, 0x72, 0xc2, 0x36, 0xec, 0x0d, 0x5d, 0x3f, - 0xb2, 0x71, 0x18, 0x9f, 0xe2, 0xde, 0x11, 0x9e, 0x8f, 0x99, 0xbe, 0x0f, 0x97, 0x46, 0x8c, 0xa7, - 0x13, 0xba, 0xe4, 0xc4, 0x61, 0x72, 0x49, 0x33, 0x7d, 0x43, 0x57, 0xe0, 0x1c, 0x82, 0xd9, 0x6b, - 0xa3, 0x3c, 0x92, 0xf5, 0xd7, 0x0a, 0xbc, 0x25, 0x98, 0x29, 0xed, 0x9f, 0xfb, 0x69, 0xc1, 0x70, - 0x4f, 0xa0, 0xd6, 0xf3, 0xd3, 0x13, 0x56, 0xad, 0xaa, 0x9c, 0xa9, 0x10, 0x7e, 0xc6, 0xb6, 0xce, - 0x23, 0xb6, 0x67, 0x3f, 0xa2, 0xe4, 0xcc, 0x16, 0xfb, 0xdb, 0xdf, 0x05, 0x18, 0x03, 0xd1, 0x3a, - 0x54, 0x4f, 0xf0, 0x99, 0x2c, 0x81, 0xec, 0x13, 0xdd, 0x81, 0xda, 0xa9, 0x1b, 0x8c, 0xc6, 0x41, - 0x60, 0x62, 0xc4, 0x28, 0x1c, 0x44, 0xfd, 0xd8, 0x16, 0xb8, 0xf7, 0x17, 0xee, 0x56, 0xac, 0xdf, - 0x57, 0x61, 0xcb, 0x8c, 0x85, 0x10, 0x2c, 0xf2, 0xea, 0x26, 0xd8, 0xf0, 0x6f, 0xb4, 0x05, 0x4b, - 0x89, 0x4b, 0x70, 0x24, 0xd2, 0x64, 0xc5, 0x96, 0x7f, 0xe8, 0x09, 0xd4, 0xbd, 0xa1, 0x1f, 0xf4, - 0x08, 0x8e, 0x5a, 0x55, 0xae, 0xeb, 0xd7, 0xa7, 0x8a, 0xd0, 0xd9, 0x93, 0xd8, 0x42, 0xcb, 0x6c, - 0x33, 0xab, 0xf0, 0x44, 0x58, 0x9e, 0x57, 0xd5, 0xba, 0xad, 0x7e, 0xd1, 0x0e, 0xac, 0x8e, 0x52, - 0x4c, 0x1c, 0x8f, 0x60, 0x97, 0xe2, 0x5e, 0xab, 0xc6, 0x97, 0x1b, 0x0c, 0xb6, 0x27, 0x40, 0x6c, - 0xb3, 0x5a, 0x5d, 0x12, 0xc7, 0x83, 0xfc, 0x65, 0xba, 0xa4, 0xfe, 0x4f, 0x70, 0x6b, 0x59, 0xe8, - 0xc2, 0xbe, 0xd1, 0x43, 0x58, 0x0a, 0xdc, 0x63, 0x1c, 0xa4, 0xad, 0x3a, 0x97, 0xf8, 0xd6, 0x74, - 0x89, 0x9f, 0x73, 0x5c, 0x21, 0xaf, 0xdc, 0xd8, 0x7e, 0x1f, 0xd6, 0x34, 0x45, 0x0c, 0x9e, 0xd9, - 0xcc, 0x7b, 0xa6, 0x9e, 0x33, 0x7d, 0xfb, 0x1e, 0x34, 0x72, 0x34, 0x67, 0x6d, 0x5d, 0xc9, 0x7b, - 0xed, 0xa7, 0xaa, 0xd2, 0x8c, 0x13, 0xef, 0x14, 0xcf, 0xa9, 0x42, 0xaa, 0x30, 0x58, 0x18, 0x87, - 0x81, 0xf5, 0xab, 0x8a, 0x3a, 0xdf, 0xb2, 0x82, 0x31, 0x22, 0x03, 0x3c, 0x17, 0xfe, 0xb7, 0x61, - 0x23, 0x3d, 0xf1, 0x13, 0xc7, 0xef, 0x3b, 0x7e, 0xe4, 0x24, 0x24, 0x1e, 0xf0, 0xf3, 0x5f, 0x98, - 0x73, 0x9d, 0x2d, 0x1d, 0xf4, 0x0f, 0xd8, 0x01, 0xcb, 0xe1, 0xd6, 0x3f, 0x2a, 0x70, 0xdd, 0x20, - 0xda, 0x11, 0x75, 0xe9, 0x28, 0xd5, 0xb3, 0xf3, 0x3b, 0xb0, 0x94, 0x72, 0xb0, 0x4c, 0xcf, 0x7b, - 0xc6, 0x00, 0x28, 0xdb, 0xde, 0x11, 0x30, 0x19, 0x10, 0x82, 0x50, 0xfb, 0x73, 0x68, 0xe4, 0xc0, - 0x06, 0x9f, 0xde, 0xd3, 0x13, 0xf5, 0x9a, 0x2a, 0x43, 0x06, 0x6e, 0x8a, 0x51, 0xde, 0xf1, 0xbf, - 0xac, 0x16, 0x0d, 0xbf, 0x17, 0xc4, 0xd1, 0x7c, 0x0c, 0xdf, 0x81, 0x8d, 0x3e, 0x89, 0x43, 0x45, - 0x4b, 0x35, 0x5e, 0x22, 0x0e, 0x5e, 0x63, 0x4b, 0x02, 0xff, 0xa1, 0x6c, 0xc1, 0xae, 0xc1, 0x5a, - 0x76, 0x24, 0xe5, 0xfa, 0xa6, 0x55, 0x05, 0xe4, 0x9d, 0xd3, 0x03, 0xb8, 0x82, 0x5f, 0x25, 0x31, - 0xa1, 0x0e, 0xeb, 0xbb, 0xfc, 0x68, 0xe0, 0xf8, 0xa1, 0x3b, 0xc0, 0xcc, 0xbb, 0xf8, 0x95, 0x9f, - 0x52, 0x99, 0xf5, 0x97, 0x05, 0xd2, 0x07, 0x02, 0xe7, 0x80, 0xa1, 0x1c, 0xf4, 0xf7, 0x19, 0x02, + // 2359 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x19, 0xdb, 0x72, 0x1c, 0x47, + 0xb5, 0x56, 0xab, 0x95, 0x56, 0x67, 0x25, 0x59, 0x69, 0x09, 0x65, 0xbd, 0x8a, 0x13, 0x6b, 0x9c, + 0xf8, 0x52, 0xc4, 0xab, 0xc2, 0xa6, 0x82, 0xed, 0xbc, 0xd8, 0x91, 0x65, 0x5b, 0xb6, 0x45, 0xcc, + 0x28, 0x36, 0x50, 0x21, 0x99, 0x1a, 0xcd, 0xf6, 0xee, 0x0e, 0x9a, 0x1b, 0x3d, 0x3d, 0xc2, 0xe2, + 0x81, 0x82, 0x6f, 0xa0, 0x8a, 0x82, 0x07, 0xaa, 0x78, 0xe1, 0x07, 0xa0, 0x78, 0xa1, 0xa0, 0x78, + 0xe0, 0x27, 0x42, 0x51, 0xf0, 0xc0, 0x2f, 0xf0, 0x03, 0x54, 0xdf, 0x66, 0xa7, 0x67, 0x7b, 0x76, + 0xa5, 0xc0, 0x56, 0xde, 0x66, 0x4e, 0x9f, 0x3e, 0xf7, 0x73, 0xfa, 0xf4, 0x69, 0xd8, 0x1d, 0xf8, + 0x74, 0x98, 0x1d, 0x75, 0xbd, 0x38, 0xdc, 0x09, 0xe2, 0x68, 0x30, 0x8c, 0x49, 0x94, 0x7f, 0xdc, + 0xf4, 0xa3, 0x94, 0xba, 0x91, 0x87, 0x6f, 0x86, 0x6e, 0xe4, 0x0e, 0x30, 0xd9, 0x49, 0x8e, 0x07, + 0x3b, 0x7e, 0x48, 0x12, 0x6f, 0x27, 0x21, 0xf1, 0xeb, 0xd3, 0x6e, 0x42, 0x62, 0x1a, 0xa3, 0x06, + 0x07, 0x75, 0xb6, 0x06, 0x71, 0x3c, 0x08, 0xf0, 0x0e, 0x07, 0x1e, 0x65, 0xfd, 0x1d, 0x1c, 0x26, + 0x54, 0xe2, 0x74, 0x1e, 0x4c, 0x64, 0x84, 0xa3, 0x81, 0x1f, 0xc9, 0x9d, 0x3b, 0x09, 0x3d, 0x4d, + 0x70, 0xba, 0xe3, 0xc5, 0x11, 0x25, 0x71, 0x10, 0x60, 0x22, 0x49, 0xdc, 0x3f, 0x37, 0x89, 0xf4, + 0x34, 0xf2, 0xdc, 0x01, 0x8e, 0xa8, 0xa4, 0xf0, 0xf0, 0xcb, 0x6a, 0xeb, 0xc5, 0x61, 0x18, 0x47, + 0x82, 0x8a, 0xf5, 0x97, 0x1a, 0xa0, 0x17, 0x4c, 0xfd, 0x3d, 0xce, 0xd2, 0xc6, 0x3f, 0xca, 0x70, + 0x4a, 0x51, 0x1b, 0x16, 0xdd, 0x5e, 0x8f, 0xe0, 0x34, 0x6d, 0xd7, 0x2e, 0xd7, 0xae, 0x2f, 0xd9, + 0xea, 0x17, 0x3d, 0x83, 0x8d, 0x23, 0xd7, 0x3b, 0xc6, 0x51, 0xcf, 0x49, 0x69, 0x4c, 0xb0, 0xd3, + 0x23, 0xfe, 0x09, 0x26, 0xed, 0xb9, 0xcb, 0xb5, 0xeb, 0xab, 0xb7, 0x2e, 0x76, 0x39, 0x8f, 0xee, + 0x47, 0x02, 0xe5, 0x90, 0x61, 0x3c, 0xe4, 0x08, 0x36, 0x3a, 0x1a, 0x83, 0xa1, 0x77, 0xa0, 0x25, + 0x54, 0x75, 0x22, 0x37, 0xc4, 0xed, 0x3a, 0x67, 0x05, 0x02, 0xf4, 0x6d, 0x37, 0xc4, 0x0c, 0xe1, + 0x24, 0x0e, 0xb2, 0x50, 0x22, 0xcc, 0x0b, 0x04, 0x01, 0x62, 0x08, 0xd6, 0x01, 0x74, 0x84, 0xe4, + 0xaf, 0x30, 0x49, 0xfd, 0x38, 0xe2, 0xba, 0xd8, 0x38, 0x4d, 0xe2, 0x28, 0xc5, 0x68, 0x07, 0x16, + 0x4f, 0x04, 0x9c, 0xab, 0xd1, 0xba, 0xf5, 0xb5, 0xae, 0xb0, 0x66, 0x57, 0xa2, 0x7f, 0x9c, 0xd1, + 0x24, 0xa3, 0xb6, 0xc2, 0xb2, 0x1e, 0xc1, 0x5b, 0x92, 0x1c, 0x67, 0xf1, 0x18, 0x53, 0x9d, 0xe0, + 0x55, 0x58, 0x10, 0xcc, 0x25, 0xbd, 0xd5, 0x9c, 0x1e, 0x87, 0xda, 0x72, 0xd5, 0xfa, 0x4d, 0x0d, + 0x2e, 0x16, 0x09, 0xed, 0xbd, 0x4e, 0xdc, 0xa8, 0xa7, 0xac, 0xfb, 0x0c, 0x36, 0x78, 0xc8, 0x39, + 0x52, 0x79, 0x22, 0xe0, 0x92, 0xa6, 0xb2, 0xe1, 0xb8, 0x5b, 0x6c, 0x94, 0x8c, 0xbb, 0xea, 0x36, + 0x2c, 0x60, 0x4e, 0x9d, 0xbb, 0xa0, 0x75, 0x6b, 0x4b, 0x17, 0x49, 0xe3, 0x6c, 0x4b, 0x54, 0xeb, + 0x4f, 0x35, 0xb8, 0x5c, 0x94, 0xef, 0x11, 0x89, 0x23, 0xca, 0x9d, 0xe3, 0x12, 0x3a, 0x13, 0x31, + 0xf7, 0x61, 0xb5, 0x2f, 0x99, 0x38, 0x29, 0xe3, 0x22, 0xc5, 0xb5, 0x74, 0x71, 0x4d, 0x82, 0xd8, + 0x2b, 0xfd, 0x22, 0xd4, 0xfa, 0x7d, 0x0d, 0xb6, 0x8a, 0xc2, 0x1f, 0x46, 0x6e, 0x92, 0x0e, 0xe3, + 0xd9, 0xc8, 0xfd, 0x08, 0x2e, 0xa4, 0x92, 0xbe, 0x23, 0x5d, 0x2f, 0x04, 0xbf, 0xa4, 0x0b, 0x5e, + 0x12, 0xc2, 0x5e, 0x55, 0xbb, 0xc4, 0xb2, 0xf5, 0x03, 0xd8, 0x36, 0xc9, 0xac, 0x87, 0xd7, 0xb7, + 0xa0, 0xa9, 0xb6, 0x49, 0x69, 0xb7, 0xaa, 0xb8, 0x24, 0xc1, 0xa9, 0x9d, 0x23, 0x5b, 0x7f, 0xaf, + 0xc1, 0x4e, 0x91, 0xfc, 0xcb, 0x28, 0x74, 0x93, 0x03, 0x97, 0x1c, 0xb3, 0x0d, 0xbb, 0x43, 0xd7, + 0x8f, 0x6c, 0x1c, 0xc6, 0x27, 0xb8, 0x77, 0x88, 0x67, 0x63, 0xa6, 0xef, 0xc3, 0x85, 0x8c, 0xf1, + 0x74, 0x42, 0x97, 0x1c, 0x3b, 0x4c, 0x2e, 0x69, 0xa6, 0x6f, 0xe8, 0x0a, 0x9c, 0x41, 0x30, 0x7b, + 0x25, 0x2b, 0x22, 0x59, 0x7f, 0xab, 0xc1, 0x3b, 0x82, 0x99, 0xd2, 0xfe, 0xb9, 0x9f, 0x96, 0x0c, + 0xf7, 0x18, 0x1a, 0x3d, 0x3f, 0x3d, 0x66, 0xd5, 0xaa, 0xce, 0x99, 0x0a, 0xe1, 0xa7, 0x6c, 0xeb, + 0x3e, 0x64, 0x7b, 0xf6, 0x22, 0x4a, 0x4e, 0x6d, 0xb1, 0xbf, 0xf3, 0x5d, 0x80, 0x11, 0x10, 0xad, + 0x41, 0xfd, 0x18, 0x9f, 0xca, 0x12, 0xc8, 0x3e, 0xd1, 0x6d, 0x68, 0x9c, 0xb8, 0x41, 0x36, 0x0a, + 0x02, 0x13, 0x23, 0x46, 0x61, 0x3f, 0xea, 0xc7, 0xb6, 0xc0, 0xbd, 0x37, 0x77, 0xa7, 0x66, 0xfd, + 0xa1, 0x0e, 0x9b, 0x66, 0x2c, 0x84, 0x60, 0x9e, 0x57, 0x37, 0xc1, 0x86, 0x7f, 0xa3, 0x4d, 0x58, + 0x48, 0x5c, 0x82, 0x23, 0x91, 0x26, 0x4b, 0xb6, 0xfc, 0x43, 0x8f, 0xa1, 0xe9, 0x0d, 0xfd, 0xa0, + 0x47, 0x70, 0xd4, 0xae, 0x73, 0x5d, 0xbf, 0x3e, 0x51, 0x84, 0xee, 0xae, 0xc4, 0x16, 0x5a, 0xe6, + 0x9b, 0x59, 0x85, 0x27, 0xc2, 0xf2, 0xbc, 0xaa, 0x36, 0x6d, 0xf5, 0x8b, 0xb6, 0x61, 0x39, 0x4b, + 0x31, 0x71, 0x3c, 0x82, 0x5d, 0x8a, 0x7b, 0xed, 0x06, 0x5f, 0x6e, 0x31, 0xd8, 0xae, 0x00, 0xb1, + 0xcd, 0x6a, 0x75, 0x41, 0x1c, 0x0f, 0xf2, 0x97, 0xe9, 0x92, 0xfa, 0x3f, 0xc1, 0xed, 0x45, 0xa1, + 0x0b, 0xfb, 0x46, 0x0f, 0x60, 0x21, 0x70, 0x8f, 0x70, 0x90, 0xb6, 0x9b, 0x5c, 0xe2, 0x1b, 0x93, + 0x25, 0x7e, 0xce, 0x71, 0x85, 0xbc, 0x72, 0x63, 0xe7, 0x43, 0x58, 0xd1, 0x14, 0x31, 0x78, 0x66, + 0xa3, 0xe8, 0x99, 0x66, 0xc1, 0xf4, 0x9d, 0xbb, 0xd0, 0x2a, 0xd0, 0x9c, 0xb6, 0x75, 0xa9, 0xe8, + 0xb5, 0x9f, 0xaa, 0x4a, 0x33, 0x4a, 0xbc, 0x13, 0x3c, 0xa3, 0x0a, 0xa9, 0xc2, 0x60, 0x6e, 0x14, + 0x06, 0xd6, 0xaf, 0x6a, 0xea, 0x7c, 0xcb, 0x0b, 0x46, 0x46, 0x06, 0x78, 0x26, 0xfc, 0x6f, 0xc2, + 0x7a, 0x7a, 0xec, 0x27, 0x8e, 0xdf, 0x77, 0xfc, 0xc8, 0x49, 0x48, 0x3c, 0xe0, 0xe7, 0xbf, 0x30, + 0xe7, 0x1a, 0x5b, 0xda, 0xef, 0xef, 0xb3, 0x03, 0x96, 0xc3, 0xad, 0x7f, 0xd4, 0xe0, 0xaa, 0x41, + 0xb4, 0x43, 0xea, 0xd2, 0x2c, 0xd5, 0xb3, 0xf3, 0x3b, 0xb0, 0x90, 0x72, 0xb0, 0x4c, 0xcf, 0xbb, + 0xc6, 0x00, 0xa8, 0xda, 0xde, 0x15, 0x30, 0x19, 0x10, 0x82, 0x50, 0xe7, 0x73, 0x68, 0x15, 0xc0, + 0x06, 0x9f, 0xde, 0xd5, 0x13, 0xf5, 0x8a, 0x2a, 0x43, 0x06, 0x6e, 0x8a, 0x51, 0xd1, 0xf1, 0xbf, + 0xac, 0x97, 0x0d, 0xbf, 0x1b, 0xc4, 0xd1, 0x6c, 0x0c, 0xdf, 0x85, 0xf5, 0x3e, 0x89, 0x43, 0x45, + 0x4b, 0x35, 0x5e, 0x22, 0x0e, 0xde, 0x60, 0x4b, 0x02, 0xff, 0x81, 0x6c, 0xc1, 0xae, 0xc0, 0x4a, + 0x7e, 0x24, 0x15, 0xfa, 0xa6, 0x65, 0x05, 0xe4, 0x9d, 0xd3, 0x7d, 0xb8, 0x84, 0x5f, 0x27, 0x31, + 0xa1, 0x0e, 0xeb, 0xbb, 0xfc, 0x68, 0xe0, 0xf8, 0xa1, 0x3b, 0xc0, 0xcc, 0xbb, 0xf8, 0xb5, 0x9f, + 0x52, 0x99, 0xf5, 0x17, 0x05, 0xd2, 0x47, 0x02, 0x67, 0x9f, 0xa1, 0xec, 0xf7, 0xf7, 0x18, 0x02, 0xa3, 0xd0, 0xf7, 0x03, 0xec, 0xb0, 0xc6, 0xd3, 0x19, 0x52, 0x9a, 0x38, 0x5e, 0xe0, 0xe3, 0x88, - 0x3a, 0xd4, 0x0f, 0x71, 0x3c, 0xa2, 0xbc, 0x30, 0xd4, 0xec, 0xcb, 0x0c, 0xe9, 0xe8, 0x2c, 0xf2, - 0x9e, 0x52, 0x9a, 0xec, 0x71, 0x8c, 0x4f, 0x04, 0x02, 0xba, 0x09, 0xeb, 0x79, 0xc5, 0xb8, 0xac, - 0xa2, 0x5e, 0x34, 0xc7, 0x5a, 0x71, 0x69, 0x15, 0x66, 0xbe, 0xd9, 0x5b, 0x1e, 0x63, 0xbe, 0x1c, - 0x37, 0x7c, 0x93, 0x61, 0xc7, 0x1d, 0xf3, 0xe5, 0xc3, 0xae, 0x6c, 0xfb, 0x7c, 0xc2, 0x2e, 0xc7, - 0xcd, 0x14, 0x76, 0x3f, 0xab, 0x4c, 0x16, 0x1c, 0x56, 0x95, 0xe7, 0x12, 0x77, 0x9b, 0x50, 0x63, - 0x86, 0x66, 0x91, 0x56, 0x65, 0x65, 0x8f, 0xff, 0x58, 0x5f, 0x2c, 0x16, 0x45, 0x60, 0xc1, 0x31, - 0x4a, 0xe6, 0x55, 0xf3, 0x70, 0x74, 0x2a, 0x0e, 0x86, 0x15, 0x9b, 0x7f, 0xb3, 0x9e, 0xff, 0x98, - 0x73, 0x74, 0x72, 0xe5, 0x10, 0x04, 0x88, 0x07, 0xcb, 0xb9, 0xe2, 0xff, 0x1a, 0xac, 0x49, 0x2a, - 0xd4, 0x25, 0x03, 0x4c, 0xe5, 0xdd, 0x61, 0x55, 0x00, 0x3f, 0xe1, 0x30, 0xf4, 0x2e, 0x20, 0x3d, - 0x3b, 0x38, 0xb9, 0x1a, 0xc7, 0x5c, 0x3f, 0xce, 0xe5, 0x04, 0x27, 0xf9, 0x4d, 0xd8, 0xd2, 0xb1, - 0xbd, 0x21, 0xf6, 0x4e, 0xd2, 0x51, 0x28, 0x83, 0x7a, 0x33, 0xbf, 0x63, 0x4f, 0xae, 0xa1, 0xc7, - 0xd9, 0xe9, 0xb7, 0xcc, 0xa3, 0xb0, 0x63, 0x8c, 0x42, 0xcd, 0xc6, 0xa6, 0x23, 0x10, 0xdd, 0x06, - 0xe4, 0xc5, 0x61, 0xc2, 0x2a, 0x80, 0x1f, 0x47, 0x4e, 0x88, 0xe9, 0x30, 0xee, 0xb5, 0x56, 0x44, - 0x91, 0xc8, 0xad, 0x1c, 0xf2, 0x05, 0x74, 0x0b, 0xd6, 0xbd, 0x38, 0xf2, 0x46, 0x84, 0xb5, 0x0d, - 0x4e, 0xe0, 0x87, 0x3e, 0x6d, 0x01, 0x4f, 0xd8, 0x4b, 0x63, 0xf8, 0x73, 0x06, 0x66, 0x56, 0x60, - 0x57, 0x39, 0xae, 0x51, 0xe0, 0xa6, 0xa9, 0xb0, 0x42, 0x43, 0x58, 0x41, 0xae, 0xec, 0xb1, 0x05, - 0x66, 0x85, 0xff, 0xe5, 0x34, 0xfd, 0x79, 0x45, 0x35, 0xc1, 0xba, 0xda, 0x7a, 0xda, 0x6e, 0xc3, - 0x8a, 0xf4, 0x9c, 0xdf, 0x93, 0x74, 0xeb, 0x02, 0x70, 0xd0, 0x13, 0x6d, 0x4b, 0x12, 0xf8, 0x9e, - 0x2b, 0xc9, 0xab, 0x5f, 0xf4, 0x0e, 0x34, 0xfd, 0xd4, 0xf1, 0x23, 0x8f, 0xe0, 0x10, 0x47, 0xd4, - 0x0d, 0x78, 0x58, 0xd4, 0xed, 0x35, 0x3f, 0x3d, 0x18, 0x03, 0xad, 0x7f, 0x96, 0xc8, 0xa0, 0x72, - 0x72, 0x0e, 0x41, 0x3e, 0x33, 0xa0, 0x6f, 0xc0, 0x25, 0xa9, 0x45, 0x56, 0xfc, 0x45, 0x48, 0x37, - 0x25, 0x58, 0x55, 0xfe, 0x1d, 0x58, 0x55, 0x88, 0xb9, 0xfb, 0x70, 0x43, 0xc2, 0x78, 0x7d, 0xfc, - 0x57, 0x05, 0x6e, 0x94, 0xeb, 0xa7, 0x5b, 0xfa, 0x0a, 0x48, 0x29, 0x9c, 0x11, 0x09, 0xa4, 0xa9, - 0xa5, 0xed, 0x5f, 0x90, 0x80, 0x39, 0x12, 0x13, 0x12, 0x13, 0xe5, 0x48, 0xfe, 0x83, 0xda, 0x50, - 0xcf, 0x7a, 0x83, 0x2a, 0x0f, 0xa8, 0xec, 0x7f, 0x32, 0x33, 0x17, 0x0d, 0x99, 0xb9, 0x09, 0x35, - 0x56, 0x4d, 0x55, 0x9e, 0x89, 0x1f, 0x93, 0x0d, 0x96, 0x4c, 0x36, 0xb0, 0xfe, 0x93, 0xb5, 0x44, - 0x2a, 0x67, 0xf8, 0x1c, 0x62, 0xae, 0xe5, 0x69, 0x21, 0x57, 0x9e, 0xd6, 0xa1, 0xca, 0xac, 0x25, - 0x1c, 0xc4, 0x3e, 0x59, 0xaf, 0xae, 0xd5, 0x18, 0xf9, 0x57, 0x1c, 0x5e, 0xd4, 0x8a, 0xc3, 0x0b, - 0x63, 0x8e, 0x2e, 0x19, 0x73, 0xd4, 0x7a, 0xa0, 0xee, 0xeb, 0x9a, 0xd2, 0xba, 0x3b, 0xdf, 0x80, - 0x15, 0xea, 0xa6, 0x27, 0xfb, 0xdc, 0x67, 0x4c, 0xdf, 0x55, 0x7b, 0x0c, 0xb0, 0xbe, 0xc8, 0x0e, - 0x4e, 0x8d, 0xc4, 0xc5, 0x0f, 0xce, 0x59, 0xdb, 0x8d, 0x07, 0xe7, 0xa7, 0xb3, 0x0e, 0xce, 0xf7, - 0xf4, 0x83, 0xf3, 0xea, 0x2c, 0x96, 0xf9, 0xba, 0xf2, 0x9b, 0x05, 0x35, 0x6d, 0x31, 0x20, 0xb2, - 0xa4, 0xf1, 0x53, 0x87, 0x70, 0x98, 0x1f, 0x0d, 0x38, 0xd3, 0xba, 0xdd, 0xf0, 0x53, 0x5b, 0x81, - 0x58, 0xdc, 0x06, 0x6e, 0x4a, 0x25, 0x12, 0xee, 0xc9, 0x88, 0x5f, 0x65, 0x40, 0x49, 0xac, 0x87, - 0xee, 0x42, 0x4b, 0xb9, 0x2a, 0x23, 0xe6, 0x88, 0x6c, 0x91, 0xd1, 0xb0, 0x25, 0xd7, 0x33, 0xc2, - 0x42, 0x1c, 0x2d, 0x65, 0x16, 0x0b, 0x29, 0x93, 0x25, 0x59, 0xad, 0x90, 0x64, 0xac, 0xad, 0xca, - 0x75, 0x4c, 0xd9, 0xff, 0x38, 0x7f, 0x96, 0xf3, 0xf9, 0xa3, 0xe7, 0x72, 0xbd, 0x90, 0xcb, 0xd6, - 0xbf, 0x17, 0xe0, 0x75, 0x15, 0xdb, 0x2a, 0x9d, 0xe6, 0x92, 0x32, 0x86, 0x3c, 0x5e, 0x30, 0xd6, - 0x32, 0x5e, 0xc9, 0xb9, 0x69, 0x65, 0xa1, 0x56, 0xbf, 0xd9, 0x1d, 0x92, 0x99, 0xaa, 0x2a, 0xef, - 0x90, 0x3b, 0xb0, 0xaa, 0x8c, 0xcf, 0xd7, 0x6a, 0x7c, 0xad, 0x21, 0x61, 0x47, 0x0c, 0x65, 0x1b, - 0x56, 0xfa, 0xcc, 0x89, 0xac, 0x5f, 0xe5, 0x46, 0xab, 0xdb, 0x75, 0x06, 0x60, 0xbd, 0xe9, 0xec, - 0x66, 0x76, 0x79, 0x56, 0x33, 0x5b, 0xac, 0xbd, 0xf5, 0xc9, 0xda, 0xfb, 0x19, 0xbc, 0xa9, 0xd9, - 0x78, 0x72, 0x4e, 0xf1, 0xfe, 0x98, 0x48, 0xe0, 0x67, 0x26, 0x6e, 0xa9, 0x2e, 0x31, 0xb7, 0x4f, - 0x4c, 0x78, 0x14, 0x79, 0x06, 0xb1, 0xfe, 0x94, 0x1d, 0x5d, 0x12, 0xef, 0x25, 0x26, 0x7e, 0xff, - 0xcc, 0xc6, 0xc7, 0x23, 0x3f, 0xf8, 0x8a, 0xbd, 0x59, 0xb4, 0x4e, 0x75, 0xda, 0xc9, 0x24, 0xc5, - 0x97, 0x82, 0x9b, 0x2a, 0x90, 0x5d, 0xa8, 0x40, 0xf7, 0xb5, 0x72, 0x30, 0x73, 0xbf, 0xb1, 0x04, - 0x39, 0xb3, 0x4a, 0xd0, 0x7d, 0xbd, 0x04, 0xbd, 0x5d, 0xf0, 0x8a, 0xc6, 0xce, 0xd4, 0xbc, 0xff, - 0x21, 0x3b, 0x99, 0xb2, 0x1d, 0x73, 0xeb, 0xdd, 0xff, 0x9f, 0x8e, 0xf9, 0x4b, 0xa5, 0x10, 0xb7, - 0x87, 0x71, 0x0f, 0xbf, 0x48, 0x7a, 0x2e, 0xfd, 0x8a, 0x65, 0xbf, 0x01, 0x8b, 0x61, 0xdc, 0x13, - 0x32, 0x37, 0x77, 0x37, 0x0a, 0xfe, 0x60, 0x52, 0xda, 0x1c, 0xc1, 0xfa, 0x6d, 0x36, 0x6e, 0x57, - 0x4d, 0xcf, 0x53, 0x37, 0x1d, 0xce, 0x45, 0xf8, 0x89, 0x16, 0x67, 0xc1, 0xd0, 0xe2, 0x6c, 0xc1, - 0x12, 0xc1, 0x43, 0x37, 0x1d, 0xca, 0xd2, 0x26, 0xff, 0xac, 0x5f, 0x4c, 0x8c, 0x32, 0x99, 0x9c, - 0x73, 0x6c, 0x3d, 0xcf, 0x23, 0x2d, 0xeb, 0x0c, 0xde, 0x29, 0x93, 0x4a, 0x4f, 0xcb, 0x8f, 0x0b, - 0x69, 0x79, 0xd7, 0x78, 0x97, 0x29, 0xd9, 0x6d, 0x4c, 0xca, 0xcf, 0x66, 0x25, 0xe5, 0x5d, 0x3d, - 0x29, 0xad, 0xe2, 0x85, 0x3a, 0x6f, 0xc0, 0xc9, 0x94, 0xfc, 0x10, 0xae, 0x08, 0xd9, 0x0e, 0x31, - 0x25, 0xbe, 0x97, 0x4e, 0x3c, 0xe8, 0xdc, 0x82, 0xe5, 0x50, 0x2c, 0x49, 0x03, 0x5f, 0x52, 0x0c, - 0xe4, 0x0e, 0x5b, 0xad, 0xef, 0xfe, 0x0d, 0x69, 0x4f, 0x65, 0x47, 0x98, 0x9c, 0xfa, 0x1e, 0xb3, - 0xc9, 0x3a, 0xfb, 0xc4, 0x44, 0x3e, 0x29, 0x3d, 0xc1, 0x14, 0x95, 0x7b, 0xa9, 0xbd, 0xa3, 0x99, - 0xcc, 0xf8, 0x6a, 0xf5, 0x0c, 0x56, 0xb2, 0xe7, 0xa7, 0x69, 0xa4, 0xae, 0xe9, 0xa4, 0xcc, 0x2f, - 0x56, 0x4f, 0x61, 0x35, 0xff, 0x10, 0x84, 0xae, 0x1a, 0x36, 0x69, 0x6f, 0x44, 0xed, 0xad, 0x8e, - 0x78, 0xfb, 0xec, 0xa8, 0xb7, 0xcf, 0xce, 0x7e, 0x98, 0xd0, 0x33, 0xf4, 0x12, 0x36, 0x0c, 0x6f, - 0x34, 0xe8, 0x86, 0x81, 0xa0, 0xe9, 0x15, 0xa7, 0x94, 0xee, 0x33, 0xd8, 0x2a, 0xec, 0x1a, 0x8e, - 0x68, 0x2f, 0xfe, 0x71, 0x34, 0x4d, 0xf7, 0x32, 0x62, 0x14, 0xac, 0xd9, 0x0f, 0x0d, 0xe8, 0x3d, - 0x83, 0xcc, 0xe7, 0x78, 0x99, 0x28, 0xe5, 0xfa, 0x39, 0x34, 0xf5, 0xf7, 0x19, 0x64, 0x19, 0x38, - 0x14, 0x9e, 0x88, 0xda, 0x37, 0xa7, 0xe0, 0x14, 0x1b, 0xf2, 0xd5, 0xfc, 0x23, 0xc6, 0x34, 0xc3, - 0x5c, 0x3f, 0xdf, 0xd3, 0x07, 0x7a, 0x0e, 0x4d, 0x7d, 0xa6, 0x5d, 0x10, 0xd9, 0x38, 0xf0, 0x2e, - 0x35, 0xc0, 0x87, 0xb0, 0xa6, 0x0d, 0x56, 0xd1, 0x4e, 0xf9, 0x88, 0x77, 0x16, 0x2d, 0x07, 0x36, - 0x0c, 0x43, 0xda, 0x69, 0x3a, 0xdf, 0xbe, 0xd0, 0x3c, 0x39, 0x2f, 0x2c, 0x1f, 0xc7, 0x95, 0x08, - 0x9b, 0x1f, 0xf8, 0x9e, 0x47, 0xd8, 0xdc, 0x68, 0xef, 0xe2, 0xc2, 0x96, 0x0e, 0x31, 0x35, 0x3f, - 0xb1, 0x78, 0x2c, 0xf5, 0x53, 0xae, 0xd7, 0x28, 0x15, 0xf7, 0xe9, 0x38, 0x90, 0x58, 0xe1, 0x2c, - 0x54, 0x03, 0xc3, 0xe1, 0x59, 0x4a, 0xe9, 0x87, 0x80, 0x26, 0x4b, 0x30, 0xba, 0x3e, 0xe3, 0x40, - 0x50, 0x54, 0xdf, 0xbd, 0xc8, 0xc1, 0xc1, 0xd2, 0x4b, 0x1f, 0x66, 0x94, 0xd8, 0x40, 0x1b, 0xa2, - 0x15, 0xd2, 0x6b, 0xda, 0xc4, 0x29, 0x81, 0x4d, 0xd3, 0xb0, 0x04, 0x4d, 0xa3, 0xa0, 0xeb, 0xd3, - 0x99, 0x89, 0xa9, 0x73, 0xfc, 0x14, 0xd6, 0xb4, 0xab, 0x6a, 0x21, 0x04, 0x4d, 0x93, 0x8d, 0xf6, - 0x8d, 0x72, 0x14, 0x9d, 0xb8, 0x03, 0x1b, 0xa6, 0x7b, 0xf0, 0xb9, 0x63, 0x72, 0xe6, 0x7c, 0xe0, - 0x11, 0xc0, 0xf8, 0x16, 0x89, 0xde, 0x34, 0xf5, 0xe6, 0xe3, 0xeb, 0x65, 0x69, 0x04, 0x7d, 0x04, - 0x8d, 0xdc, 0x7d, 0x67, 0x9a, 0x78, 0xef, 0x98, 0x38, 0x4c, 0x96, 0xb4, 0x1e, 0xbc, 0xae, 0xb7, - 0xea, 0x7e, 0x34, 0x98, 0xad, 0x7b, 0xe7, 0x62, 0x57, 0x0b, 0xf4, 0x3d, 0xd8, 0x34, 0x5d, 0xbf, - 0x0a, 0xc1, 0x32, 0xe5, 0x86, 0x36, 0xad, 0x88, 0x6a, 0x17, 0x87, 0x42, 0x50, 0x98, 0x2e, 0x15, - 0xa5, 0xb4, 0x6c, 0x78, 0x6d, 0xa2, 0x99, 0x47, 0x46, 0x3b, 0x4e, 0x34, 0xfb, 0xa5, 0x34, 0x0f, - 0x01, 0xc6, 0x6d, 0xd4, 0x34, 0x93, 0xbe, 0xad, 0xf1, 0x29, 0x69, 0xbd, 0x8e, 0x97, 0x38, 0xf9, - 0x3b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x70, 0xc8, 0xae, 0x8e, 0xb7, 0x25, 0x00, 0x00, + 0x3a, 0xd4, 0x0f, 0x71, 0x9c, 0x51, 0x5e, 0x18, 0x1a, 0xf6, 0x45, 0x86, 0x74, 0x78, 0x1a, 0x79, + 0x4f, 0x28, 0x4d, 0x76, 0x39, 0xc6, 0x27, 0x02, 0x01, 0x5d, 0x87, 0xb5, 0xa2, 0x62, 0x5c, 0x56, + 0x51, 0x2f, 0x56, 0x47, 0x5a, 0x71, 0x69, 0x15, 0x66, 0xb1, 0xd9, 0x5b, 0x1c, 0x61, 0xbe, 0x1a, + 0x35, 0x7c, 0xe3, 0x61, 0xc7, 0x1d, 0xf3, 0xe5, 0xc3, 0xae, 0x6a, 0xfb, 0x6c, 0xc2, 0xae, 0xc0, + 0xcd, 0x14, 0x76, 0x3f, 0xab, 0x8d, 0x17, 0x1c, 0x56, 0x95, 0x67, 0x12, 0x77, 0x1b, 0xd0, 0x60, + 0x86, 0x66, 0x91, 0x56, 0x67, 0x65, 0x8f, 0xff, 0x58, 0x5f, 0xcc, 0x97, 0x45, 0x60, 0xc1, 0x91, + 0x25, 0xb3, 0xaa, 0x79, 0x38, 0x3a, 0x11, 0x07, 0xc3, 0x92, 0xcd, 0xbf, 0x59, 0xcf, 0x7f, 0xc4, + 0x39, 0x3a, 0x85, 0x72, 0x08, 0x02, 0xc4, 0x83, 0xe5, 0x4c, 0xf1, 0x7f, 0x05, 0x56, 0x24, 0x15, + 0xea, 0x92, 0x01, 0xa6, 0xf2, 0xee, 0xb0, 0x2c, 0x80, 0x9f, 0x70, 0x18, 0x7a, 0x1f, 0x90, 0x9e, + 0x1d, 0x9c, 0x5c, 0x83, 0x63, 0xae, 0x1d, 0x15, 0x72, 0x82, 0x93, 0xfc, 0x26, 0x6c, 0xea, 0xd8, + 0xde, 0x10, 0x7b, 0xc7, 0x69, 0x16, 0xca, 0xa0, 0xde, 0x28, 0xee, 0xd8, 0x95, 0x6b, 0xe8, 0x51, + 0x7e, 0xfa, 0x2d, 0xf2, 0x28, 0xec, 0x1a, 0xa3, 0x50, 0xb3, 0xb1, 0xe9, 0x08, 0x44, 0x37, 0x01, + 0x79, 0x71, 0x98, 0xb0, 0x0a, 0xe0, 0xc7, 0x91, 0x13, 0x62, 0x3a, 0x8c, 0x7b, 0xed, 0x25, 0x51, + 0x24, 0x0a, 0x2b, 0x07, 0x7c, 0x01, 0xdd, 0x80, 0x35, 0x2f, 0x8e, 0xbc, 0x8c, 0xb0, 0xb6, 0xc1, + 0x09, 0xfc, 0xd0, 0xa7, 0x6d, 0xe0, 0x09, 0x7b, 0x61, 0x04, 0x7f, 0xce, 0xc0, 0xcc, 0x0a, 0xec, + 0x2a, 0xc7, 0x35, 0x0a, 0xdc, 0x34, 0x15, 0x56, 0x68, 0x09, 0x2b, 0xc8, 0x95, 0x5d, 0xb6, 0xc0, + 0xac, 0xf0, 0xbf, 0x9c, 0xa6, 0x3f, 0xaf, 0xa9, 0x26, 0x58, 0x57, 0x5b, 0x4f, 0xdb, 0x2d, 0x58, + 0x92, 0x9e, 0xf3, 0x7b, 0x92, 0x6e, 0x53, 0x00, 0xf6, 0x7b, 0xa2, 0x6d, 0x49, 0x02, 0xdf, 0x73, + 0x25, 0x79, 0xf5, 0x8b, 0xde, 0x83, 0x55, 0x3f, 0x75, 0xfc, 0xc8, 0x23, 0x38, 0xc4, 0x11, 0x75, + 0x03, 0x1e, 0x16, 0x4d, 0x7b, 0xc5, 0x4f, 0xf7, 0x47, 0x40, 0xeb, 0x9f, 0x15, 0x32, 0xa8, 0x9c, + 0x9c, 0x41, 0x90, 0x4f, 0x0d, 0xe8, 0x6b, 0x70, 0x41, 0x6a, 0x91, 0x17, 0x7f, 0x11, 0xd2, 0xab, + 0x12, 0xac, 0x2a, 0xff, 0x36, 0x2c, 0x2b, 0xc4, 0xc2, 0x7d, 0xb8, 0x25, 0x61, 0xbc, 0x3e, 0xfe, + 0xab, 0x06, 0xd7, 0xaa, 0xf5, 0xd3, 0x2d, 0x7d, 0x09, 0xa4, 0x14, 0x4e, 0x46, 0x02, 0x69, 0x6a, + 0x69, 0xfb, 0x97, 0x24, 0x60, 0x8e, 0xc4, 0x84, 0xc4, 0x44, 0x39, 0x92, 0xff, 0xa0, 0x0e, 0x34, + 0xf3, 0xde, 0xa0, 0xce, 0x03, 0x2a, 0xff, 0x1f, 0xcf, 0xcc, 0x79, 0x43, 0x66, 0x6e, 0x40, 0x83, + 0x55, 0x53, 0x95, 0x67, 0xe2, 0xc7, 0x64, 0x83, 0x05, 0x93, 0x0d, 0xac, 0xff, 0xe4, 0x2d, 0x91, + 0xca, 0x19, 0x3e, 0x87, 0x98, 0x69, 0x79, 0x9a, 0x2b, 0x94, 0xa7, 0x35, 0xa8, 0x33, 0x6b, 0x09, + 0x07, 0xb1, 0x4f, 0xd6, 0xab, 0x6b, 0x35, 0x46, 0xfe, 0x95, 0x87, 0x17, 0x8d, 0xf2, 0xf0, 0xc2, + 0x98, 0xa3, 0x0b, 0xc6, 0x1c, 0xb5, 0xee, 0xab, 0xfb, 0xba, 0xa6, 0xb4, 0xee, 0xce, 0xb7, 0x60, + 0x89, 0xba, 0xe9, 0xf1, 0x1e, 0xf7, 0x19, 0xd3, 0x77, 0xd9, 0x1e, 0x01, 0xac, 0x2f, 0xf2, 0x83, + 0x53, 0x23, 0x71, 0xfe, 0x83, 0x73, 0xda, 0x76, 0xe3, 0xc1, 0xf9, 0xe9, 0xb4, 0x83, 0xf3, 0x03, + 0xfd, 0xe0, 0xbc, 0x3c, 0x8d, 0x65, 0xb1, 0xae, 0xfc, 0x76, 0x4e, 0x4d, 0x5b, 0x0c, 0x88, 0x2c, + 0x69, 0xfc, 0xd4, 0x21, 0x1c, 0xe6, 0x47, 0x03, 0xce, 0xb4, 0x69, 0xb7, 0xfc, 0xd4, 0x56, 0x20, + 0x16, 0xb7, 0x81, 0x9b, 0x52, 0x89, 0x84, 0x7b, 0x32, 0xe2, 0x97, 0x19, 0x50, 0x12, 0xeb, 0xa1, + 0x3b, 0xd0, 0x56, 0xae, 0xca, 0x89, 0x39, 0x22, 0x5b, 0x64, 0x34, 0x6c, 0xca, 0xf5, 0x9c, 0xb0, + 0x10, 0x47, 0x4b, 0x99, 0xf9, 0x52, 0xca, 0xe4, 0x49, 0xd6, 0x28, 0x25, 0x19, 0x6b, 0xab, 0x0a, + 0x1d, 0x53, 0xfe, 0x3f, 0xca, 0x9f, 0xc5, 0x62, 0xfe, 0xe8, 0xb9, 0xdc, 0x2c, 0xe5, 0xb2, 0xf5, + 0xef, 0x39, 0x78, 0x53, 0xc5, 0xb6, 0x4a, 0xa7, 0x99, 0xa4, 0x8c, 0x21, 0x8f, 0xe7, 0x8c, 0xb5, + 0x8c, 0x57, 0x72, 0x6e, 0x5a, 0x59, 0xa8, 0xd5, 0x6f, 0x7e, 0x87, 0x64, 0xa6, 0xaa, 0xcb, 0x3b, + 0xe4, 0x36, 0x2c, 0x2b, 0xe3, 0xf3, 0xb5, 0x06, 0x5f, 0x6b, 0x49, 0xd8, 0x21, 0x43, 0xd9, 0x82, + 0xa5, 0x3e, 0x73, 0x22, 0xeb, 0x57, 0xb9, 0xd1, 0x9a, 0x76, 0x93, 0x01, 0x58, 0x6f, 0x3a, 0xbd, + 0x99, 0x5d, 0x9c, 0xd6, 0xcc, 0x96, 0x6b, 0x6f, 0x73, 0xbc, 0xf6, 0x7e, 0x06, 0x6f, 0x6b, 0x36, + 0x1e, 0x9f, 0x53, 0x7c, 0x38, 0x22, 0x12, 0xf8, 0xb9, 0x89, 0xdb, 0xaa, 0x4b, 0x2c, 0xec, 0x13, + 0x13, 0x1e, 0x45, 0x9e, 0x41, 0xac, 0x3f, 0xe7, 0x47, 0x97, 0xc4, 0x7b, 0x85, 0x89, 0xdf, 0x3f, + 0xb5, 0xf1, 0x51, 0xe6, 0x07, 0x5f, 0xb1, 0x37, 0xcb, 0xd6, 0xa9, 0x4f, 0x3a, 0x99, 0xa4, 0xf8, + 0x52, 0x70, 0x53, 0x05, 0xb2, 0x4b, 0x15, 0xe8, 0x9e, 0x56, 0x0e, 0xa6, 0xee, 0x37, 0x96, 0x20, + 0x67, 0x5a, 0x09, 0xba, 0xa7, 0x97, 0xa0, 0x77, 0x4b, 0x5e, 0xd1, 0xd8, 0x99, 0x9a, 0xf7, 0x3f, + 0xe6, 0x27, 0x53, 0xbe, 0x63, 0x66, 0xbd, 0xfb, 0xff, 0xd3, 0x31, 0x7f, 0xad, 0x95, 0xe2, 0xf6, + 0x20, 0xee, 0xe1, 0x97, 0x49, 0xcf, 0xa5, 0x5f, 0xb1, 0xec, 0xd7, 0x60, 0x3e, 0x8c, 0x7b, 0x42, + 0xe6, 0xd5, 0x5b, 0xeb, 0x25, 0x7f, 0x30, 0x29, 0x6d, 0x8e, 0x60, 0xfd, 0x2e, 0x1f, 0xb7, 0xab, + 0xa6, 0xe7, 0x89, 0x9b, 0x0e, 0x67, 0x22, 0xfc, 0x58, 0x8b, 0x33, 0x67, 0x68, 0x71, 0x36, 0x61, + 0x81, 0xe0, 0xa1, 0x9b, 0x0e, 0x65, 0x69, 0x93, 0x7f, 0xd6, 0x2f, 0xc6, 0x46, 0x99, 0x4c, 0xce, + 0x19, 0xb6, 0x9e, 0x67, 0x91, 0x96, 0x75, 0x06, 0xef, 0x55, 0x49, 0xa5, 0xa7, 0xe5, 0x8b, 0x52, + 0x5a, 0xde, 0x31, 0xde, 0x65, 0x2a, 0x76, 0x1b, 0x93, 0xf2, 0xb3, 0x69, 0x49, 0x79, 0x47, 0x4f, + 0x4a, 0xab, 0x7c, 0xa1, 0x2e, 0x1a, 0x70, 0x3c, 0x25, 0x9f, 0xc2, 0x25, 0x21, 0xdb, 0x01, 0xa6, + 0xc4, 0xf7, 0xd2, 0xb1, 0x07, 0x9d, 0x1b, 0xb0, 0x18, 0x8a, 0x25, 0x69, 0xe0, 0x0b, 0x8a, 0x81, + 0xdc, 0x61, 0xab, 0xf5, 0x5b, 0xbf, 0x5e, 0xd7, 0x9e, 0xca, 0x0e, 0x31, 0x39, 0xf1, 0x3d, 0x66, + 0x93, 0x35, 0xf6, 0x89, 0x89, 0x7c, 0x52, 0x7a, 0x8c, 0x29, 0xaa, 0xf6, 0x52, 0x67, 0x5b, 0x33, + 0x99, 0xf1, 0xd5, 0xea, 0x19, 0x2c, 0xe5, 0xcf, 0x4f, 0x93, 0x48, 0x5d, 0xd1, 0x49, 0x99, 0x5f, + 0xac, 0x9e, 0xc0, 0x72, 0xf1, 0x21, 0x08, 0x5d, 0x36, 0x6c, 0xd2, 0xde, 0x88, 0x3a, 0x9b, 0x5d, + 0xf1, 0xf6, 0xd9, 0x55, 0x6f, 0x9f, 0xdd, 0xbd, 0x30, 0xa1, 0xa7, 0xe8, 0x15, 0xac, 0x1b, 0xde, + 0x68, 0xd0, 0x35, 0x03, 0x41, 0xd3, 0x2b, 0x4e, 0x25, 0xdd, 0x67, 0xb0, 0x59, 0xda, 0x35, 0xcc, + 0x68, 0x2f, 0xfe, 0x71, 0x34, 0x49, 0xf7, 0x2a, 0x62, 0x14, 0xac, 0xe9, 0x0f, 0x0d, 0xe8, 0x03, + 0x83, 0xcc, 0x67, 0x78, 0x99, 0xa8, 0xe4, 0xfa, 0x39, 0xac, 0xea, 0xef, 0x33, 0xc8, 0x32, 0x70, + 0x28, 0x3d, 0x11, 0x75, 0xae, 0x4f, 0xc0, 0x29, 0x37, 0xe4, 0xcb, 0xc5, 0x47, 0x8c, 0x49, 0x86, + 0xb9, 0x7a, 0xb6, 0xa7, 0x0f, 0xf4, 0x1c, 0x56, 0xf5, 0x99, 0x76, 0x49, 0x64, 0xe3, 0xc0, 0xbb, + 0xd2, 0x00, 0x4f, 0x61, 0x45, 0x1b, 0xac, 0xa2, 0xed, 0xea, 0x11, 0xef, 0x34, 0x5a, 0x0e, 0xac, + 0x1b, 0x86, 0xb4, 0x93, 0x74, 0xbe, 0x79, 0xae, 0x79, 0x72, 0x51, 0x58, 0x3e, 0x8e, 0xab, 0x10, + 0xb6, 0x38, 0xf0, 0x3d, 0x8b, 0xb0, 0x85, 0xd1, 0xde, 0xf9, 0x85, 0xad, 0x1c, 0x62, 0x6a, 0x7e, + 0x62, 0xf1, 0x58, 0xe9, 0xa7, 0x42, 0xaf, 0x51, 0x29, 0xee, 0x93, 0x51, 0x20, 0xb1, 0xc2, 0x59, + 0xaa, 0x06, 0x86, 0xc3, 0xb3, 0x92, 0xd2, 0x0f, 0x01, 0x8d, 0x97, 0x60, 0x74, 0x75, 0xca, 0x81, + 0xa0, 0xa8, 0xbe, 0x7f, 0x9e, 0x83, 0x83, 0xa5, 0x97, 0x3e, 0xcc, 0xa8, 0xb0, 0x81, 0x36, 0x44, + 0x2b, 0xa5, 0xd7, 0xa4, 0x89, 0x53, 0x02, 0x1b, 0xa6, 0x61, 0x09, 0x9a, 0x44, 0x41, 0xd7, 0xa7, + 0x3b, 0x15, 0x53, 0xe7, 0xf8, 0x29, 0xac, 0x68, 0x57, 0xd5, 0x52, 0x08, 0x9a, 0x26, 0x1b, 0x9d, + 0x6b, 0xd5, 0x28, 0x3a, 0x71, 0x07, 0xd6, 0x4d, 0xf7, 0xe0, 0x33, 0xc7, 0xe4, 0xd4, 0xf9, 0xc0, + 0x53, 0x68, 0xef, 0x06, 0xd8, 0x8d, 0xb2, 0x44, 0xa0, 0x1e, 0xc4, 0x59, 0x44, 0x5f, 0xc4, 0x7e, + 0x44, 0x53, 0x54, 0x11, 0x2f, 0x95, 0x71, 0xf4, 0x10, 0x60, 0x74, 0x23, 0x45, 0x6f, 0x9b, 0xfa, + 0xfc, 0xd1, 0x55, 0xb5, 0x92, 0xca, 0xc7, 0xd0, 0x2a, 0xdc, 0x9d, 0x26, 0xa9, 0xfa, 0x9e, 0x89, + 0xc3, 0x78, 0x79, 0xec, 0xc1, 0x9b, 0x7a, 0xdb, 0xef, 0x47, 0x83, 0xe9, 0x76, 0xec, 0x9e, 0xef, + 0x9a, 0x82, 0xbe, 0x07, 0x1b, 0xa6, 0xab, 0x5c, 0x29, 0xf0, 0x26, 0xdc, 0xf6, 0x26, 0x15, 0x64, + 0xed, 0x12, 0x52, 0x0a, 0x30, 0xd3, 0x05, 0xa5, 0x92, 0x96, 0x0d, 0x6f, 0x8c, 0x5d, 0x0c, 0x90, + 0xd1, 0x8e, 0x63, 0x17, 0x87, 0x4a, 0x9a, 0x07, 0x00, 0xa3, 0x96, 0x6c, 0x92, 0x49, 0xdf, 0xd5, + 0xf8, 0x54, 0xb4, 0x71, 0x47, 0x0b, 0x9c, 0xfc, 0xed, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x89, + 0x6b, 0xad, 0x71, 0x03, 0x26, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2166,6 +2168,7 @@ type ProxyEngineServiceClient interface { SnapshotBackupStatus(ctx context.Context, in *EngineSnapshotBackupStatusRequest, opts ...grpc.CallOption) (*EngineSnapshotBackupStatusProxyResponse, error) BackupRestore(ctx context.Context, in *EngineBackupRestoreRequest, opts ...grpc.CallOption) (*EngineBackupRestoreProxyResponse, error) BackupRestoreStatus(ctx context.Context, in *ProxyEngineRequest, opts ...grpc.CallOption) (*EngineBackupRestoreStatusProxyResponse, error) + CleanupBackupMountPoints(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) ReplicaAdd(ctx context.Context, in *EngineReplicaAddRequest, opts ...grpc.CallOption) (*empty.Empty, error) ReplicaList(ctx context.Context, in *ProxyEngineRequest, opts ...grpc.CallOption) (*EngineReplicaListProxyResponse, error) ReplicaRebuildingStatus(ctx context.Context, in *ProxyEngineRequest, opts ...grpc.CallOption) (*EngineReplicaRebuildStatusProxyResponse, error) @@ -2363,6 +2366,15 @@ func (c *proxyEngineServiceClient) BackupRestoreStatus(ctx context.Context, in * return out, nil } +func (c *proxyEngineServiceClient) CleanupBackupMountPoints(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) { + out := new(empty.Empty) + err := c.cc.Invoke(ctx, "/imrpc.ProxyEngineService/CleanupBackupMountPoints", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *proxyEngineServiceClient) ReplicaAdd(ctx context.Context, in *EngineReplicaAddRequest, opts ...grpc.CallOption) (*empty.Empty, error) { out := new(empty.Empty) err := c.cc.Invoke(ctx, "/imrpc.ProxyEngineService/ReplicaAdd", in, out, opts...) @@ -2448,6 +2460,7 @@ type ProxyEngineServiceServer interface { SnapshotBackupStatus(context.Context, *EngineSnapshotBackupStatusRequest) (*EngineSnapshotBackupStatusProxyResponse, error) BackupRestore(context.Context, *EngineBackupRestoreRequest) (*EngineBackupRestoreProxyResponse, error) BackupRestoreStatus(context.Context, *ProxyEngineRequest) (*EngineBackupRestoreStatusProxyResponse, error) + CleanupBackupMountPoints(context.Context, *empty.Empty) (*empty.Empty, error) ReplicaAdd(context.Context, *EngineReplicaAddRequest) (*empty.Empty, error) ReplicaList(context.Context, *ProxyEngineRequest) (*EngineReplicaListProxyResponse, error) ReplicaRebuildingStatus(context.Context, *ProxyEngineRequest) (*EngineReplicaRebuildStatusProxyResponse, error) @@ -2521,6 +2534,9 @@ func (*UnimplementedProxyEngineServiceServer) BackupRestore(ctx context.Context, func (*UnimplementedProxyEngineServiceServer) BackupRestoreStatus(ctx context.Context, req *ProxyEngineRequest) (*EngineBackupRestoreStatusProxyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BackupRestoreStatus not implemented") } +func (*UnimplementedProxyEngineServiceServer) CleanupBackupMountPoints(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CleanupBackupMountPoints not implemented") +} func (*UnimplementedProxyEngineServiceServer) ReplicaAdd(ctx context.Context, req *EngineReplicaAddRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method ReplicaAdd not implemented") } @@ -2907,6 +2923,24 @@ func _ProxyEngineService_BackupRestoreStatus_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } +func _ProxyEngineService_CleanupBackupMountPoints_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(empty.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProxyEngineServiceServer).CleanupBackupMountPoints(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/imrpc.ProxyEngineService/CleanupBackupMountPoints", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProxyEngineServiceServer).CleanupBackupMountPoints(ctx, req.(*empty.Empty)) + } + return interceptor(ctx, in, info, handler) +} + func _ProxyEngineService_ReplicaAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EngineReplicaAddRequest) if err := dec(in); err != nil { @@ -3117,6 +3151,10 @@ var _ProxyEngineService_serviceDesc = grpc.ServiceDesc{ MethodName: "BackupRestoreStatus", Handler: _ProxyEngineService_BackupRestoreStatus_Handler, }, + { + MethodName: "CleanupBackupMountPoints", + Handler: _ProxyEngineService_CleanupBackupMountPoints_Handler, + }, { MethodName: "ReplicaAdd", Handler: _ProxyEngineService_ReplicaAdd_Handler, diff --git a/pkg/imrpc/proxy.proto b/pkg/imrpc/proxy.proto index 21c0f812b..50c6ea797 100644 --- a/pkg/imrpc/proxy.proto +++ b/pkg/imrpc/proxy.proto @@ -32,6 +32,8 @@ service ProxyEngineService { rpc SnapshotBackupStatus(EngineSnapshotBackupStatusRequest) returns (EngineSnapshotBackupStatusProxyResponse); rpc BackupRestore(EngineBackupRestoreRequest) returns (EngineBackupRestoreProxyResponse); rpc BackupRestoreStatus(ProxyEngineRequest) returns (EngineBackupRestoreStatusProxyResponse); + rpc CleanupBackupMountPoints(google.protobuf.Empty) returns (google.protobuf.Empty); + rpc ReplicaAdd(EngineReplicaAddRequest) returns (google.protobuf.Empty); rpc ReplicaList(ProxyEngineRequest) returns (EngineReplicaListProxyResponse); diff --git a/pkg/proxy/backup.go b/pkg/proxy/backup.go index 304767b6e..06162831a 100644 --- a/pkg/proxy/backup.go +++ b/pkg/proxy/backup.go @@ -6,12 +6,14 @@ import ( "os" "strings" + "github.com/golang/protobuf/ptypes/empty" "github.com/pkg/errors" "github.com/sirupsen/logrus" "golang.org/x/net/context" grpccodes "google.golang.org/grpc/codes" grpcstatus "google.golang.org/grpc/status" + backupstore "github.com/longhorn/backupstore" butil "github.com/longhorn/backupstore/util" eclient "github.com/longhorn/longhorn-engine/pkg/controller/client" rclient "github.com/longhorn/longhorn-engine/pkg/replica/client" @@ -22,6 +24,13 @@ import ( rpc "github.com/longhorn/longhorn-instance-manager/pkg/imrpc" ) +func (p *Proxy) CleanupBackupMountPoints(ctx context.Context, req *empty.Empty) (resp *empty.Empty, err error) { + if err := backupstore.CleanUpAllMounts(); err != nil { + return &empty.Empty{}, grpcstatus.Errorf(grpccodes.Internal, errors.Wrapf(err, "failed to unmount all mount points").Error()) + } + return &empty.Empty{}, nil +} + func (p *Proxy) SnapshotBackup(ctx context.Context, req *rpc.EngineSnapshotBackupRequest) (resp *rpc.EngineSnapshotBackupProxyResponse, err error) { log := logrus.WithFields(logrus.Fields{ "serviceURL": req.ProxyEngineRequest.Address,