diff --git a/pkg/brpb/brpb.pb.go b/pkg/brpb/brpb.pb.go index 1d55bfacb..1c2a29489 100644 --- a/pkg/brpb/brpb.pb.go +++ b/pkg/brpb/brpb.pb.go @@ -1672,6 +1672,96 @@ func (*Error) XXX_OneofWrappers() []interface{} { } } +type StreamBackupTaskSecurityConfig struct { + // Types that are valid to be assigned to Encryption: + // *StreamBackupTaskSecurityConfig_PlaintextDataKey + // *StreamBackupTaskSecurityConfig_MasterKeyConfig + Encryption isStreamBackupTaskSecurityConfig_Encryption `protobuf_oneof:"encryption"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *StreamBackupTaskSecurityConfig) Reset() { *m = StreamBackupTaskSecurityConfig{} } +func (m *StreamBackupTaskSecurityConfig) String() string { return proto.CompactTextString(m) } +func (*StreamBackupTaskSecurityConfig) ProtoMessage() {} +func (*StreamBackupTaskSecurityConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_483d1f48d58a4885, []int{17} +} +func (m *StreamBackupTaskSecurityConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StreamBackupTaskSecurityConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_StreamBackupTaskSecurityConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *StreamBackupTaskSecurityConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_StreamBackupTaskSecurityConfig.Merge(m, src) +} +func (m *StreamBackupTaskSecurityConfig) XXX_Size() int { + return m.Size() +} +func (m *StreamBackupTaskSecurityConfig) XXX_DiscardUnknown() { + xxx_messageInfo_StreamBackupTaskSecurityConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_StreamBackupTaskSecurityConfig proto.InternalMessageInfo + +type isStreamBackupTaskSecurityConfig_Encryption interface { + isStreamBackupTaskSecurityConfig_Encryption() + MarshalTo([]byte) (int, error) + Size() int +} + +type StreamBackupTaskSecurityConfig_PlaintextDataKey struct { + PlaintextDataKey *CipherInfo `protobuf:"bytes,1,opt,name=plaintext_data_key,json=plaintextDataKey,proto3,oneof" json:"plaintext_data_key,omitempty"` +} +type StreamBackupTaskSecurityConfig_MasterKeyConfig struct { + MasterKeyConfig *MasterKeyConfig `protobuf:"bytes,2,opt,name=master_key_config,json=masterKeyConfig,proto3,oneof" json:"master_key_config,omitempty"` +} + +func (*StreamBackupTaskSecurityConfig_PlaintextDataKey) isStreamBackupTaskSecurityConfig_Encryption() { +} +func (*StreamBackupTaskSecurityConfig_MasterKeyConfig) isStreamBackupTaskSecurityConfig_Encryption() { +} + +func (m *StreamBackupTaskSecurityConfig) GetEncryption() isStreamBackupTaskSecurityConfig_Encryption { + if m != nil { + return m.Encryption + } + return nil +} + +func (m *StreamBackupTaskSecurityConfig) GetPlaintextDataKey() *CipherInfo { + if x, ok := m.GetEncryption().(*StreamBackupTaskSecurityConfig_PlaintextDataKey); ok { + return x.PlaintextDataKey + } + return nil +} + +func (m *StreamBackupTaskSecurityConfig) GetMasterKeyConfig() *MasterKeyConfig { + if x, ok := m.GetEncryption().(*StreamBackupTaskSecurityConfig_MasterKeyConfig); ok { + return x.MasterKeyConfig + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*StreamBackupTaskSecurityConfig) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*StreamBackupTaskSecurityConfig_PlaintextDataKey)(nil), + (*StreamBackupTaskSecurityConfig_MasterKeyConfig)(nil), + } +} + type CipherInfo struct { CipherType encryptionpb.EncryptionMethod `protobuf:"varint,1,opt,name=cipher_type,json=cipherType,proto3,enum=encryptionpb.EncryptionMethod" json:"cipher_type,omitempty"` CipherKey []byte `protobuf:"bytes,2,opt,name=cipher_key,json=cipherKey,proto3" json:"cipher_key,omitempty"` @@ -1684,7 +1774,7 @@ func (m *CipherInfo) Reset() { *m = CipherInfo{} } func (m *CipherInfo) String() string { return proto.CompactTextString(m) } func (*CipherInfo) ProtoMessage() {} func (*CipherInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{17} + return fileDescriptor_483d1f48d58a4885, []int{18} } func (m *CipherInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1727,6 +1817,61 @@ func (m *CipherInfo) GetCipherKey() []byte { return nil } +type MasterKeyConfig struct { + EncryptionType encryptionpb.EncryptionMethod `protobuf:"varint,1,opt,name=encryption_type,json=encryptionType,proto3,enum=encryptionpb.EncryptionMethod" json:"encryption_type,omitempty"` + MasterKeys []*encryptionpb.MasterKey `protobuf:"bytes,2,rep,name=master_keys,json=masterKeys,proto3" json:"master_keys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MasterKeyConfig) Reset() { *m = MasterKeyConfig{} } +func (m *MasterKeyConfig) String() string { return proto.CompactTextString(m) } +func (*MasterKeyConfig) ProtoMessage() {} +func (*MasterKeyConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_483d1f48d58a4885, []int{19} +} +func (m *MasterKeyConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MasterKeyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MasterKeyConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MasterKeyConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_MasterKeyConfig.Merge(m, src) +} +func (m *MasterKeyConfig) XXX_Size() int { + return m.Size() +} +func (m *MasterKeyConfig) XXX_DiscardUnknown() { + xxx_messageInfo_MasterKeyConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_MasterKeyConfig proto.InternalMessageInfo + +func (m *MasterKeyConfig) GetEncryptionType() encryptionpb.EncryptionMethod { + if m != nil { + return m.EncryptionType + } + return encryptionpb.EncryptionMethod_UNKNOWN +} + +func (m *MasterKeyConfig) GetMasterKeys() []*encryptionpb.MasterKey { + if m != nil { + return m.MasterKeys + } + return nil +} + type BackupRequest struct { ClusterId uint64 `protobuf:"varint,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` StartKey []byte `protobuf:"bytes,2,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"` @@ -1777,7 +1922,7 @@ func (m *BackupRequest) Reset() { *m = BackupRequest{} } func (m *BackupRequest) String() string { return proto.CompactTextString(m) } func (*BackupRequest) ProtoMessage() {} func (*BackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{18} + return fileDescriptor_483d1f48d58a4885, []int{20} } func (m *BackupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1945,24 +2090,26 @@ type StreamBackupTaskInfo struct { // The time range for backing up. StartTs uint64 `protobuf:"varint,2,opt,name=start_ts,json=startTs,proto3" json:"start_ts,omitempty"` EndTs uint64 `protobuf:"varint,3,opt,name=end_ts,json=endTs,proto3" json:"end_ts,omitempty"` - // Misc meta datas. + // Misc meta data. // The name of the task, also the ID of the task. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // The table filter of the task. // Only for displaying the task info. TableFilter []string `protobuf:"bytes,5,rep,name=table_filter,json=tableFilter,proto3" json:"table_filter,omitempty"` // compression type - CompressionType CompressionType `protobuf:"varint,6,opt,name=compression_type,json=compressionType,proto3,enum=backup.CompressionType" json:"compression_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CompressionType CompressionType `protobuf:"varint,6,opt,name=compression_type,json=compressionType,proto3,enum=backup.CompressionType" json:"compression_type,omitempty"` + // security config for backup files + SecurityConfig *StreamBackupTaskSecurityConfig `protobuf:"bytes,7,opt,name=security_config,json=securityConfig,proto3" json:"security_config,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *StreamBackupTaskInfo) Reset() { *m = StreamBackupTaskInfo{} } func (m *StreamBackupTaskInfo) String() string { return proto.CompactTextString(m) } func (*StreamBackupTaskInfo) ProtoMessage() {} func (*StreamBackupTaskInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{19} + return fileDescriptor_483d1f48d58a4885, []int{21} } func (m *StreamBackupTaskInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2033,6 +2180,13 @@ func (m *StreamBackupTaskInfo) GetCompressionType() CompressionType { return CompressionType_UNKNOWN } +func (m *StreamBackupTaskInfo) GetSecurityConfig() *StreamBackupTaskSecurityConfig { + if m != nil { + return m.SecurityConfig + } + return nil +} + type StorageBackend struct { // Types that are valid to be assigned to Backend: // *StorageBackend_Noop @@ -2052,7 +2206,7 @@ func (m *StorageBackend) Reset() { *m = StorageBackend{} } func (m *StorageBackend) String() string { return proto.CompactTextString(m) } func (*StorageBackend) ProtoMessage() {} func (*StorageBackend) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{20} + return fileDescriptor_483d1f48d58a4885, []int{22} } func (m *StorageBackend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2197,7 +2351,7 @@ func (m *Noop) Reset() { *m = Noop{} } func (m *Noop) String() string { return proto.CompactTextString(m) } func (*Noop) ProtoMessage() {} func (*Noop) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{21} + return fileDescriptor_483d1f48d58a4885, []int{23} } func (m *Noop) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2392,7 @@ func (m *Local) Reset() { *m = Local{} } func (m *Local) String() string { return proto.CompactTextString(m) } func (*Local) ProtoMessage() {} func (*Local) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{22} + return fileDescriptor_483d1f48d58a4885, []int{24} } func (m *Local) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2304,7 +2458,7 @@ func (m *S3) Reset() { *m = S3{} } func (m *S3) String() string { return proto.CompactTextString(m) } func (*S3) ProtoMessage() {} func (*S3) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{23} + return fileDescriptor_483d1f48d58a4885, []int{25} } func (m *S3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2475,7 +2629,7 @@ func (m *GCS) Reset() { *m = GCS{} } func (m *GCS) String() string { return proto.CompactTextString(m) } func (*GCS) ProtoMessage() {} func (*GCS) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{24} + return fileDescriptor_483d1f48d58a4885, []int{26} } func (m *GCS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2561,7 +2715,7 @@ func (m *AzureCustomerKey) Reset() { *m = AzureCustomerKey{} } func (m *AzureCustomerKey) String() string { return proto.CompactTextString(m) } func (*AzureCustomerKey) ProtoMessage() {} func (*AzureCustomerKey) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{25} + return fileDescriptor_483d1f48d58a4885, []int{27} } func (m *AzureCustomerKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2661,7 +2815,7 @@ func (m *AzureBlobStorage) Reset() { *m = AzureBlobStorage{} } func (m *AzureBlobStorage) String() string { return proto.CompactTextString(m) } func (*AzureBlobStorage) ProtoMessage() {} func (*AzureBlobStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{26} + return fileDescriptor_483d1f48d58a4885, []int{28} } func (m *AzureBlobStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2768,7 +2922,7 @@ func (m *Bucket) Reset() { *m = Bucket{} } func (m *Bucket) String() string { return proto.CompactTextString(m) } func (*Bucket) ProtoMessage() {} func (*Bucket) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{27} + return fileDescriptor_483d1f48d58a4885, []int{29} } func (m *Bucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2846,7 +3000,7 @@ func (m *CloudDynamic) Reset() { *m = CloudDynamic{} } func (m *CloudDynamic) String() string { return proto.CompactTextString(m) } func (*CloudDynamic) ProtoMessage() {} func (*CloudDynamic) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{28} + return fileDescriptor_483d1f48d58a4885, []int{30} } func (m *CloudDynamic) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2909,7 +3063,7 @@ func (m *HDFS) Reset() { *m = HDFS{} } func (m *HDFS) String() string { return proto.CompactTextString(m) } func (*HDFS) ProtoMessage() {} func (*HDFS) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{29} + return fileDescriptor_483d1f48d58a4885, []int{31} } func (m *HDFS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2961,7 +3115,7 @@ func (m *BackupResponse) Reset() { *m = BackupResponse{} } func (m *BackupResponse) String() string { return proto.CompactTextString(m) } func (*BackupResponse) ProtoMessage() {} func (*BackupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{30} + return fileDescriptor_483d1f48d58a4885, []int{32} } func (m *BackupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3038,7 +3192,7 @@ func (m *CleanupRequest) Reset() { *m = CleanupRequest{} } func (m *CleanupRequest) String() string { return proto.CompactTextString(m) } func (*CleanupRequest) ProtoMessage() {} func (*CleanupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{31} + return fileDescriptor_483d1f48d58a4885, []int{33} } func (m *CleanupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3086,7 +3240,7 @@ func (m *CleanupResponse) Reset() { *m = CleanupResponse{} } func (m *CleanupResponse) String() string { return proto.CompactTextString(m) } func (*CleanupResponse) ProtoMessage() {} func (*CleanupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{32} + return fileDescriptor_483d1f48d58a4885, []int{34} } func (m *CleanupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3141,7 +3295,7 @@ func (m *PrepareRequest) Reset() { *m = PrepareRequest{} } func (m *PrepareRequest) String() string { return proto.CompactTextString(m) } func (*PrepareRequest) ProtoMessage() {} func (*PrepareRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{33} + return fileDescriptor_483d1f48d58a4885, []int{35} } func (m *PrepareRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3194,7 +3348,7 @@ func (m *PrepareResponse) Reset() { *m = PrepareResponse{} } func (m *PrepareResponse) String() string { return proto.CompactTextString(m) } func (*PrepareResponse) ProtoMessage() {} func (*PrepareResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{34} + return fileDescriptor_483d1f48d58a4885, []int{36} } func (m *PrepareResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3261,7 +3415,7 @@ func (m *CheckAdminRequest) Reset() { *m = CheckAdminRequest{} } func (m *CheckAdminRequest) String() string { return proto.CompactTextString(m) } func (*CheckAdminRequest) ProtoMessage() {} func (*CheckAdminRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{35} + return fileDescriptor_483d1f48d58a4885, []int{37} } func (m *CheckAdminRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3303,7 +3457,7 @@ func (m *CheckAdminResponse) Reset() { *m = CheckAdminResponse{} } func (m *CheckAdminResponse) String() string { return proto.CompactTextString(m) } func (*CheckAdminResponse) ProtoMessage() {} func (*CheckAdminResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{36} + return fileDescriptor_483d1f48d58a4885, []int{38} } func (m *CheckAdminResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3367,7 +3521,7 @@ func (m *ExternalStorageRestoreRequest) Reset() { *m = ExternalStorageRe func (m *ExternalStorageRestoreRequest) String() string { return proto.CompactTextString(m) } func (*ExternalStorageRestoreRequest) ProtoMessage() {} func (*ExternalStorageRestoreRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{37} + return fileDescriptor_483d1f48d58a4885, []int{39} } func (m *ExternalStorageRestoreRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3434,7 +3588,7 @@ func (m *ExternalStorageRestoreResponse) Reset() { *m = ExternalStorageR func (m *ExternalStorageRestoreResponse) String() string { return proto.CompactTextString(m) } func (*ExternalStorageRestoreResponse) ProtoMessage() {} func (*ExternalStorageRestoreResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{38} + return fileDescriptor_483d1f48d58a4885, []int{40} } func (m *ExternalStorageRestoreResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3476,7 +3630,7 @@ func (m *ExternalStorageSaveRequest) Reset() { *m = ExternalStorageSaveR func (m *ExternalStorageSaveRequest) String() string { return proto.CompactTextString(m) } func (*ExternalStorageSaveRequest) ProtoMessage() {} func (*ExternalStorageSaveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{39} + return fileDescriptor_483d1f48d58a4885, []int{41} } func (m *ExternalStorageSaveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3536,7 +3690,7 @@ func (m *ExternalStorageSaveResponse) Reset() { *m = ExternalStorageSave func (m *ExternalStorageSaveResponse) String() string { return proto.CompactTextString(m) } func (*ExternalStorageSaveResponse) ProtoMessage() {} func (*ExternalStorageSaveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{40} + return fileDescriptor_483d1f48d58a4885, []int{42} } func (m *ExternalStorageSaveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3583,7 +3737,7 @@ func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{41} + return fileDescriptor_483d1f48d58a4885, []int{43} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3685,7 +3839,7 @@ func (m *DataFileGroup) Reset() { *m = DataFileGroup{} } func (m *DataFileGroup) String() string { return proto.CompactTextString(m) } func (*DataFileGroup) ProtoMessage() {} func (*DataFileGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{42} + return fileDescriptor_483d1f48d58a4885, []int{44} } func (m *DataFileGroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3757,7 +3911,7 @@ func (m *DataFileGroup) GetLength() uint64 { } type DataFileInfo struct { - // SHA256 of the file. + // Checksum of the plaintext file, i.e., pre-compression, pre-encryption. Sha256 []byte `protobuf:"bytes,1,opt,name=sha256,proto3" json:"sha256,omitempty"` // Path of the file. Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` @@ -3806,17 +3960,19 @@ type DataFileInfo struct { // In older versions, this might be empty. // If a region get split or merged during observing, // the file may contain multi epoches. - RegionEpoch []*metapb.RegionEpoch `protobuf:"bytes,22,rep,name=region_epoch,json=regionEpoch,proto3" json:"region_epoch,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RegionEpoch []*metapb.RegionEpoch `protobuf:"bytes,22,rep,name=region_epoch,json=regionEpoch,proto3" json:"region_epoch,omitempty"` + // Encryption information of this data file, not set if plaintext. + FileEncryptionInfo *encryptionpb.FileEncryptionInfo `protobuf:"bytes,23,opt,name=file_encryption_info,json=fileEncryptionInfo,proto3" json:"file_encryption_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *DataFileInfo) Reset() { *m = DataFileInfo{} } func (m *DataFileInfo) String() string { return proto.CompactTextString(m) } func (*DataFileInfo) ProtoMessage() {} func (*DataFileInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{43} + return fileDescriptor_483d1f48d58a4885, []int{45} } func (m *DataFileInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3999,6 +4155,13 @@ func (m *DataFileInfo) GetRegionEpoch() []*metapb.RegionEpoch { return nil } +func (m *DataFileInfo) GetFileEncryptionInfo() *encryptionpb.FileEncryptionInfo { + if m != nil { + return m.FileEncryptionInfo + } + return nil +} + type StreamBackupError struct { // the unix epoch time (in millisecs) of the time the error reported. HappenAt uint64 `protobuf:"varint,1,opt,name=happen_at,json=happenAt,proto3" json:"happen_at,omitempty"` @@ -4017,7 +4180,7 @@ func (m *StreamBackupError) Reset() { *m = StreamBackupError{} } func (m *StreamBackupError) String() string { return proto.CompactTextString(m) } func (*StreamBackupError) ProtoMessage() {} func (*StreamBackupError) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{44} + return fileDescriptor_483d1f48d58a4885, []int{46} } func (m *StreamBackupError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4086,7 +4249,7 @@ func (m *Span) Reset() { *m = Span{} } func (m *Span) String() string { return proto.CompactTextString(m) } func (*Span) ProtoMessage() {} func (*Span) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{45} + return fileDescriptor_483d1f48d58a4885, []int{47} } func (m *Span) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4141,7 +4304,7 @@ func (m *SpansOfFile) Reset() { *m = SpansOfFile{} } func (m *SpansOfFile) String() string { return proto.CompactTextString(m) } func (*SpansOfFile) ProtoMessage() {} func (*SpansOfFile) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{46} + return fileDescriptor_483d1f48d58a4885, []int{48} } func (m *SpansOfFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4215,7 +4378,7 @@ func (m *LogFileSubcompactionMeta) Reset() { *m = LogFileSubcompactionMe func (m *LogFileSubcompactionMeta) String() string { return proto.CompactTextString(m) } func (*LogFileSubcompactionMeta) ProtoMessage() {} func (*LogFileSubcompactionMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{47} + return fileDescriptor_483d1f48d58a4885, []int{49} } func (m *LogFileSubcompactionMeta) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4344,7 +4507,7 @@ func (m *LogFileSubcompaction) Reset() { *m = LogFileSubcompaction{} } func (m *LogFileSubcompaction) String() string { return proto.CompactTextString(m) } func (*LogFileSubcompaction) ProtoMessage() {} func (*LogFileSubcompaction) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{48} + return fileDescriptor_483d1f48d58a4885, []int{50} } func (m *LogFileSubcompaction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4400,7 +4563,7 @@ func (m *LogFileSubcompactions) Reset() { *m = LogFileSubcompactions{} } func (m *LogFileSubcompactions) String() string { return proto.CompactTextString(m) } func (*LogFileSubcompactions) ProtoMessage() {} func (*LogFileSubcompactions) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{49} + return fileDescriptor_483d1f48d58a4885, []int{51} } func (m *LogFileSubcompactions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4460,7 +4623,7 @@ func (m *LogFileCompaction) Reset() { *m = LogFileCompaction{} } func (m *LogFileCompaction) String() string { return proto.CompactTextString(m) } func (*LogFileCompaction) ProtoMessage() {} func (*LogFileCompaction) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{50} + return fileDescriptor_483d1f48d58a4885, []int{52} } func (m *LogFileCompaction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4560,7 +4723,7 @@ func (m *MetaEdit) Reset() { *m = MetaEdit{} } func (m *MetaEdit) String() string { return proto.CompactTextString(m) } func (*MetaEdit) ProtoMessage() {} func (*MetaEdit) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{51} + return fileDescriptor_483d1f48d58a4885, []int{53} } func (m *MetaEdit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4634,7 +4797,7 @@ func (m *DeleteSpansOfFile) Reset() { *m = DeleteSpansOfFile{} } func (m *DeleteSpansOfFile) String() string { return proto.CompactTextString(m) } func (*DeleteSpansOfFile) ProtoMessage() {} func (*DeleteSpansOfFile) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{52} + return fileDescriptor_483d1f48d58a4885, []int{54} } func (m *DeleteSpansOfFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4699,7 +4862,7 @@ func (m *Migration) Reset() { *m = Migration{} } func (m *Migration) String() string { return proto.CompactTextString(m) } func (*Migration) ProtoMessage() {} func (*Migration) Descriptor() ([]byte, []int) { - return fileDescriptor_483d1f48d58a4885, []int{53} + return fileDescriptor_483d1f48d58a4885, []int{55} } func (m *Migration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4780,7 +4943,9 @@ func init() { proto.RegisterType((*RawRange)(nil), "backup.RawRange") proto.RegisterType((*ClusterIDError)(nil), "backup.ClusterIDError") proto.RegisterType((*Error)(nil), "backup.Error") + proto.RegisterType((*StreamBackupTaskSecurityConfig)(nil), "backup.StreamBackupTaskSecurityConfig") proto.RegisterType((*CipherInfo)(nil), "backup.CipherInfo") + proto.RegisterType((*MasterKeyConfig)(nil), "backup.MasterKeyConfig") proto.RegisterType((*BackupRequest)(nil), "backup.BackupRequest") proto.RegisterType((*StreamBackupTaskInfo)(nil), "backup.StreamBackupTaskInfo") proto.RegisterType((*StorageBackend)(nil), "backup.StorageBackend") @@ -4823,277 +4988,287 @@ func init() { func init() { proto.RegisterFile("brpb.proto", fileDescriptor_483d1f48d58a4885) } var fileDescriptor_483d1f48d58a4885 = []byte{ - // 4318 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7a, 0xdd, 0x6f, 0x1c, 0x47, - 0x72, 0x38, 0x67, 0xbf, 0xb7, 0xf6, 0x93, 0x43, 0x51, 0x5e, 0xd3, 0x96, 0x44, 0x8f, 0x6c, 0x1d, - 0x7f, 0xbc, 0x13, 0xcf, 0x27, 0xf9, 0x74, 0xfe, 0xc5, 0x17, 0x18, 0xfc, 0x92, 0x49, 0x8b, 0x92, - 0x98, 0x21, 0xed, 0x43, 0x0c, 0x04, 0x83, 0xd9, 0x99, 0x5e, 0xee, 0x1c, 0x67, 0x67, 0xe6, 0xa6, - 0x7b, 0x57, 0xa2, 0xf3, 0x96, 0x77, 0xc3, 0x49, 0x80, 0x00, 0xf9, 0x07, 0x02, 0xe4, 0x21, 0x01, - 0xf2, 0x27, 0x04, 0x48, 0x02, 0x5c, 0x90, 0x00, 0xb9, 0x87, 0x3c, 0xe4, 0x31, 0x70, 0x90, 0xbf, - 0x21, 0x4f, 0x01, 0x82, 0xaa, 0xee, 0x9e, 0x9d, 0x5d, 0x2e, 0x29, 0xc9, 0x09, 0xee, 0x69, 0xb7, - 0xab, 0xaa, 0xbb, 0xab, 0xeb, 0xbb, 0xba, 0x07, 0xa0, 0x9f, 0x26, 0xfd, 0xad, 0x24, 0x8d, 0x45, - 0x6c, 0x56, 0xfa, 0xae, 0x77, 0x3e, 0x4e, 0xd6, 0x5a, 0xe7, 0x93, 0x34, 0xf1, 0x34, 0x78, 0xad, - 0xc5, 0xd2, 0x34, 0xce, 0xa8, 0xd6, 0x9a, 0x23, 0x26, 0xdc, 0x6c, 0x64, 0xb2, 0xc8, 0x4b, 0x2f, - 0x12, 0x11, 0xc4, 0x51, 0x06, 0xbb, 0x71, 0x16, 0x9f, 0xc5, 0xf4, 0xf7, 0xc7, 0xf8, 0x4f, 0x41, - 0x3b, 0xe9, 0x98, 0x0b, 0xfa, 0x2b, 0x01, 0xd6, 0x5f, 0x19, 0xf0, 0xee, 0x71, 0xca, 0x12, 0x37, - 0x65, 0x27, 0x91, 0x9b, 0xf0, 0x61, 0x2c, 0x76, 0x88, 0x01, 0x9b, 0xfd, 0x6a, 0xcc, 0xb8, 0x30, - 0x3f, 0x86, 0x82, 0xb8, 0xe8, 0x19, 0xeb, 0xc6, 0x46, 0xfb, 0xc1, 0xc6, 0x96, 0x64, 0x6e, 0xeb, - 0xba, 0x19, 0xa7, 0x17, 0x09, 0xb3, 0x0b, 0xe2, 0xc2, 0xdc, 0x80, 0x6a, 0xca, 0xce, 0x82, 0x38, - 0xe2, 0xbd, 0xc2, 0x7a, 0x71, 0xa3, 0xf1, 0xa0, 0xbd, 0xa5, 0xb8, 0xb6, 0x09, 0x6c, 0x6b, 0xb4, - 0xb9, 0x01, 0xdd, 0x90, 0xb9, 0x9c, 0x39, 0x41, 0xe4, 0x70, 0xe6, 0xc5, 0x91, 0xcf, 0x7b, 0xc5, - 0x75, 0x63, 0xa3, 0x64, 0xb7, 0x09, 0x7e, 0x18, 0x9d, 0x48, 0xa8, 0xf5, 0xaf, 0x06, 0xdc, 0xba, - 0x62, 0x73, 0x9e, 0xc4, 0x11, 0x67, 0xe6, 0xa3, 0x1c, 0xbf, 0xf7, 0xae, 0xe5, 0x77, 0x7f, 0xc2, - 0xa2, 0x29, 0xb7, 0xf7, 0xa0, 0x22, 0xd9, 0xe9, 0x15, 0xd6, 0x8d, 0x05, 0xcc, 0x2a, 0xac, 0xf9, - 0x3e, 0x94, 0x49, 0x15, 0xc4, 0x20, 0x92, 0x69, 0xc5, 0xec, 0xe3, 0xaf, 0x2d, 0x91, 0xe6, 0x7d, - 0x58, 0x09, 0x5d, 0x2e, 0x1c, 0x75, 0x2c, 0xee, 0x4c, 0xdc, 0x30, 0xf0, 0x7b, 0xa5, 0x75, 0x63, - 0xa3, 0x66, 0x77, 0x11, 0x75, 0x44, 0x07, 0xe3, 0x5f, 0x22, 0xdc, 0xfa, 0xcf, 0x2a, 0x80, 0x64, - 0xea, 0x29, 0x13, 0xae, 0x79, 0x0b, 0xc0, 0x0b, 0xc7, 0x5c, 0xb0, 0xd4, 0x09, 0x7c, 0x3a, 0x4b, - 0xc9, 0xae, 0x2b, 0xc8, 0xa1, 0x6f, 0xfe, 0x00, 0x3a, 0x1a, 0x3d, 0x61, 0x29, 0xd7, 0x3c, 0xd7, - 0xed, 0xb6, 0x02, 0x7f, 0x29, 0xa1, 0xb8, 0x4e, 0x7f, 0x4a, 0xd3, 0x20, 0x9a, 0x7a, 0x3f, 0x43, - 0xf7, 0xa0, 0xaa, 0x71, 0xcd, 0x75, 0x63, 0xa3, 0x6c, 0xeb, 0xa1, 0x69, 0x41, 0x79, 0x10, 0x84, - 0x8c, 0xf7, 0x4a, 0xa4, 0xb8, 0xa6, 0x96, 0xe3, 0xe3, 0x20, 0x64, 0xb6, 0x44, 0x99, 0x3f, 0x06, - 0xc0, 0x3f, 0x4e, 0x10, 0xf9, 0xec, 0x65, 0xaf, 0x45, 0xd2, 0xe8, 0x6a, 0x42, 0x3c, 0x06, 0x11, - 0xd7, 0x91, 0xe6, 0x10, 0x49, 0xcc, 0xbb, 0xd0, 0xe2, 0xc2, 0x4d, 0x45, 0xc6, 0x50, 0x99, 0x0e, - 0xd6, 0x24, 0xa0, 0xe6, 0xe9, 0x0e, 0x34, 0x58, 0xe4, 0x67, 0x24, 0x15, 0x22, 0x01, 0x16, 0xf9, - 0x9a, 0x60, 0x03, 0xaa, 0xdc, 0x1b, 0xb2, 0x91, 0xcb, 0x7b, 0x55, 0x65, 0x55, 0x6a, 0xcf, 0x13, - 0x02, 0xdb, 0x1a, 0x6d, 0x3e, 0x84, 0xa6, 0xfc, 0xab, 0x58, 0x6c, 0x5f, 0xc1, 0x62, 0x43, 0x52, - 0x49, 0x26, 0xd7, 0xa0, 0x1e, 0x70, 0x27, 0x75, 0x5f, 0x38, 0xe7, 0x93, 0x5e, 0x8d, 0xd4, 0x55, - 0x0d, 0xb8, 0xed, 0xbe, 0x78, 0x32, 0xc1, 0x13, 0x23, 0x22, 0x75, 0xa3, 0x33, 0xc6, 0x7b, 0x75, - 0xda, 0x3d, 0x5b, 0xce, 0x76, 0x5f, 0xd8, 0x88, 0xb0, 0xeb, 0xa9, 0xfa, 0xc7, 0xcd, 0x8f, 0xa1, - 0x93, 0x4d, 0x50, 0x4c, 0x74, 0xae, 0x60, 0xa2, 0xa5, 0x67, 0x49, 0x36, 0x4c, 0x28, 0xf9, 0x7e, - 0xc8, 0x7b, 0xb0, 0x6e, 0x6c, 0x34, 0x6d, 0xfa, 0x6f, 0xfe, 0x04, 0x1a, 0xbe, 0x1f, 0xca, 0x75, - 0x18, 0xef, 0x75, 0xaf, 0x58, 0x09, 0x7c, 0x3f, 0x3c, 0x94, 0x34, 0x28, 0x72, 0x89, 0x76, 0x52, - 0xc6, 0xc7, 0xa1, 0xe8, 0x2d, 0x93, 0x0d, 0x34, 0xfb, 0xda, 0x67, 0xc6, 0xa1, 0x30, 0x3f, 0x82, - 0x86, 0x9b, 0x04, 0x99, 0xc8, 0x4d, 0x72, 0x9d, 0x95, 0x2d, 0x1d, 0x7f, 0xb6, 0x8f, 0x0f, 0x95, - 0xec, 0x6d, 0x70, 0x93, 0x40, 0xeb, 0xe1, 0x21, 0xd4, 0x92, 0x38, 0x0c, 0xbc, 0x80, 0xf1, 0xde, - 0x0a, 0x89, 0xe2, 0xad, 0xcc, 0xdb, 0x42, 0xd7, 0x63, 0x23, 0x16, 0x89, 0x63, 0x24, 0xb8, 0xb0, - 0x33, 0x42, 0xf3, 0x23, 0xb8, 0x19, 0xb1, 0x17, 0x8e, 0x17, 0x87, 0xa1, 0x8b, 0xd1, 0x8a, 0x3b, - 0x2c, 0x72, 0xfb, 0x21, 0xf3, 0x7b, 0x37, 0x88, 0xb1, 0x1b, 0x11, 0x7b, 0xb1, 0x9b, 0x21, 0xf7, - 0x25, 0x4e, 0xe9, 0x44, 0xbc, 0x8c, 0x50, 0x27, 0xab, 0x5a, 0x27, 0xa7, 0x2f, 0xa3, 0x27, 0x13, - 0x73, 0x13, 0xaa, 0x7e, 0xdf, 0x19, 0xb9, 0x09, 0xef, 0xdd, 0x24, 0x2e, 0x96, 0x33, 0x2e, 0x02, - 0x91, 0xee, 0xed, 0x3c, 0x75, 0x13, 0xbb, 0xe2, 0xf7, 0x9f, 0xba, 0x09, 0x37, 0xef, 0x41, 0x69, - 0x14, 0xfb, 0xac, 0xf7, 0x16, 0x9d, 0xd0, 0xd4, 0x84, 0xca, 0xf1, 0x62, 0x9f, 0xd9, 0x84, 0x37, - 0x7f, 0x08, 0x15, 0xa5, 0xe3, 0x1e, 0x2d, 0xb9, 0x32, 0x4b, 0x29, 0xd5, 0xac, 0x48, 0xd0, 0x60, - 0x95, 0x88, 0x79, 0xf0, 0x35, 0xeb, 0xbd, 0x2d, 0x0d, 0x56, 0x82, 0x4e, 0x82, 0xaf, 0xd9, 0xe7, - 0xa5, 0x5a, 0xb1, 0x5b, 0xb2, 0x4b, 0x89, 0x2b, 0x86, 0xd6, 0x19, 0x34, 0x72, 0x6b, 0x98, 0xef, - 0x40, 0x5d, 0x7a, 0xc4, 0x39, 0x93, 0x21, 0xab, 0x69, 0xd7, 0x08, 0xf0, 0x84, 0x5d, 0x98, 0x6f, - 0x41, 0x15, 0x3d, 0x01, 0x51, 0x05, 0x42, 0x55, 0x58, 0xe4, 0x23, 0x22, 0x73, 0xce, 0xe2, 0x95, - 0xce, 0x69, 0xfd, 0x63, 0x01, 0x4a, 0x38, 0x46, 0x43, 0x8a, 0xdc, 0x11, 0xa3, 0xd5, 0xeb, 0x36, - 0xfd, 0x37, 0x6f, 0x42, 0x85, 0x0f, 0xdd, 0x07, 0x3f, 0x7d, 0xa4, 0x17, 0x96, 0xa3, 0x59, 0x76, - 0x8a, 0x57, 0xb3, 0x53, 0x9a, 0x61, 0xe7, 0xff, 0xc6, 0xad, 0xd7, 0xa0, 0xe6, 0xa5, 0xde, 0xa3, - 0x8f, 0x5e, 0xc6, 0x69, 0xaf, 0x4a, 0xd8, 0x6c, 0x8c, 0x7c, 0x89, 0x58, 0xb8, 0xa1, 0x73, 0x3e, - 0xe1, 0xe4, 0x93, 0x25, 0xbb, 0x46, 0x80, 0x27, 0x13, 0x92, 0xbf, 0x44, 0xf6, 0x2f, 0x04, 0x79, - 0x25, 0xad, 0x4c, 0xa0, 0x1d, 0x84, 0x98, 0x6d, 0x28, 0x78, 0x03, 0x72, 0xa4, 0xba, 0x5d, 0xf0, - 0x06, 0x28, 0x11, 0xd2, 0x54, 0x83, 0x28, 0xe9, 0x3f, 0xee, 0xe0, 0x05, 0xc9, 0x10, 0xe3, 0xed, - 0x84, 0x62, 0x61, 0xd3, 0xae, 0x49, 0xc0, 0xe1, 0xc4, 0xfa, 0xa6, 0x00, 0x35, 0xed, 0x5d, 0xe6, - 0x0f, 0x01, 0x30, 0x2f, 0x38, 0x52, 0x03, 0xc6, 0x02, 0x0d, 0xd4, 0x47, 0x8a, 0x96, 0x23, 0xb1, - 0xef, 0x66, 0xc4, 0x85, 0x45, 0xc4, 0x88, 0x97, 0xc4, 0xb9, 0xc0, 0x56, 0xbc, 0x3e, 0xb0, 0xcd, - 0xc6, 0xa1, 0xd2, 0xeb, 0xc4, 0xa1, 0x2c, 0x0c, 0xc8, 0x39, 0x95, 0xab, 0xed, 0x5a, 0xc7, 0x06, - 0x39, 0x53, 0xc7, 0xa1, 0xf2, 0x7a, 0x51, 0xc7, 0x21, 0xeb, 0x03, 0xe8, 0xcc, 0x79, 0x38, 0x92, - 0x05, 0xd1, 0x20, 0x56, 0x36, 0x4c, 0xff, 0xad, 0x23, 0x80, 0x13, 0xe1, 0x0a, 0xbe, 0x13, 0xc6, - 0xde, 0x39, 0xaa, 0x29, 0x19, 0x5e, 0xf0, 0xc0, 0x73, 0x43, 0x9d, 0xd3, 0x8a, 0x36, 0x68, 0xd0, - 0xa1, 0x8f, 0xb9, 0xea, 0x97, 0x3c, 0x8e, 0x1c, 0x81, 0x3e, 0xaf, 0x0c, 0xb3, 0x8e, 0x90, 0x53, - 0x04, 0x58, 0x3f, 0x83, 0x3a, 0xad, 0x46, 0x4a, 0xd8, 0x84, 0x4a, 0x1f, 0x57, 0xd5, 0x0a, 0xc8, - 0x5c, 0x79, 0xba, 0xa1, 0xad, 0x28, 0xac, 0xbf, 0x31, 0xa0, 0x9d, 0xcd, 0xcc, 0x82, 0xeb, 0x6b, - 0xfb, 0xc4, 0xdb, 0x50, 0x43, 0x0b, 0x71, 0x58, 0xe4, 0xa9, 0x92, 0xa4, 0x8a, 0xe3, 0xfd, 0xc8, - 0xcb, 0x50, 0x71, 0x1a, 0x90, 0x4b, 0x28, 0xd4, 0xf3, 0x34, 0x98, 0xb5, 0xa7, 0xf2, 0xac, 0x3d, - 0xa1, 0x28, 0x82, 0x28, 0x0c, 0x22, 0xe6, 0xa0, 0xf2, 0xc9, 0x17, 0x9a, 0x36, 0x48, 0xd0, 0x9e, - 0x2b, 0x5c, 0xeb, 0x8f, 0x0a, 0x50, 0x91, 0x3a, 0x47, 0xe3, 0xf5, 0xfb, 0x4a, 0xac, 0x05, 0xbf, - 0x6f, 0xde, 0x80, 0x72, 0x5e, 0x40, 0x72, 0x30, 0xe3, 0x3c, 0xc5, 0xeb, 0x9c, 0xa7, 0x74, 0xbd, - 0xf3, 0x94, 0x2f, 0x39, 0xcf, 0xff, 0x83, 0xae, 0x08, 0x06, 0xa1, 0xcb, 0x87, 0x4e, 0xca, 0x92, - 0x30, 0xf0, 0x5c, 0x4e, 0x0c, 0xb7, 0xec, 0x8e, 0x82, 0xdb, 0x0a, 0x8c, 0xac, 0x71, 0x94, 0x33, - 0xb9, 0x6f, 0xd3, 0x96, 0x03, 0xf3, 0x67, 0xd0, 0xa0, 0x3f, 0x2a, 0xfd, 0xd5, 0x48, 0x5f, 0x37, - 0x67, 0xf4, 0x95, 0x29, 0xc6, 0x06, 0x22, 0xa5, 0xff, 0xd6, 0x53, 0x28, 0x1f, 0xee, 0x3d, 0x75, - 0x13, 0xe4, 0x71, 0x9c, 0x70, 0x91, 0x32, 0x77, 0x94, 0xb3, 0x1c, 0x0d, 0x3a, 0xf4, 0x31, 0x00, - 0xf9, 0xf1, 0x8b, 0x68, 0x4a, 0x52, 0x20, 0x92, 0xe6, 0x14, 0x78, 0xe8, 0x5b, 0x2f, 0xa0, 0x89, - 0x09, 0x81, 0x8c, 0x09, 0x57, 0x5d, 0x64, 0x03, 0xef, 0x43, 0x25, 0xf0, 0x31, 0x97, 0xa8, 0x12, - 0xb0, 0xa5, 0xd9, 0x24, 0x46, 0xec, 0x72, 0xe0, 0xe3, 0xcc, 0xfb, 0x00, 0x89, 0x9b, 0x8a, 0x80, - 0x52, 0x94, 0x72, 0xd5, 0x39, 0xca, 0x1c, 0x81, 0xc5, 0xa1, 0x9e, 0x65, 0xa2, 0xff, 0xc5, 0xae, - 0x3f, 0x82, 0x0a, 0xe9, 0x5a, 0xef, 0x78, 0x23, 0x9f, 0xe6, 0xf4, 0xa9, 0x6c, 0x45, 0x63, 0x1d, - 0x43, 0x4d, 0xc7, 0x81, 0xef, 0x99, 0x64, 0x64, 0xd4, 0x2c, 0xea, 0xa8, 0x69, 0xed, 0x41, 0x7b, - 0x57, 0x15, 0xa0, 0x7b, 0x54, 0xe9, 0x62, 0xf5, 0xe8, 0x8d, 0xd3, 0x94, 0x45, 0x42, 0x55, 0xa8, - 0x7a, 0x88, 0x98, 0x54, 0xf6, 0x02, 0xb4, 0x68, 0xc9, 0xd6, 0x43, 0xeb, 0x9f, 0x0d, 0x28, 0xcb, - 0xd9, 0x5d, 0x28, 0x8e, 0xf8, 0x99, 0x12, 0x04, 0xfe, 0x35, 0x77, 0xa0, 0x3b, 0x2d, 0x7a, 0x9d, - 0x7c, 0x8d, 0x9d, 0x99, 0xcb, 0x2c, 0x07, 0x07, 0x4b, 0x59, 0xc1, 0x7b, 0xe8, 0xcb, 0x55, 0xb7, - 0xa0, 0x76, 0x3e, 0x51, 0x73, 0x4b, 0x34, 0x77, 0x39, 0xab, 0x63, 0x9e, 0xb0, 0x0b, 0x3d, 0xad, - 0x7a, 0x3e, 0x91, 0xf4, 0x0f, 0xa1, 0x29, 0xcb, 0x7a, 0x35, 0xa7, 0xbc, 0xa8, 0xa6, 0x3f, 0x58, - 0xb2, 0x1b, 0x92, 0x8a, 0x86, 0x3b, 0x35, 0xa8, 0xf8, 0x4c, 0xb8, 0x41, 0x68, 0x85, 0x00, 0xbb, - 0xd2, 0xab, 0xa3, 0x41, 0x6c, 0x7e, 0x0a, 0x0d, 0xe5, 0xf4, 0xe2, 0x22, 0x61, 0xaa, 0x05, 0xb9, - 0xbd, 0x35, 0xd3, 0x9b, 0xed, 0x67, 0x83, 0xa7, 0x4c, 0x0c, 0x63, 0xdf, 0x06, 0x39, 0x05, 0xdb, - 0x10, 0x2a, 0xfb, 0xe5, 0x02, 0x53, 0x7d, 0xa8, 0x38, 0xf2, 0x84, 0x5d, 0x58, 0xdf, 0x54, 0xa0, - 0x35, 0xdb, 0x9b, 0xbd, 0xa2, 0x4f, 0x98, 0xd1, 0x7c, 0xe1, 0x6a, 0xcd, 0x17, 0xaf, 0xcf, 0xe7, - 0xa5, 0x57, 0xe7, 0xf3, 0xf2, 0xa5, 0x7c, 0x7e, 0x0b, 0x73, 0x94, 0x60, 0x4e, 0x18, 0x8c, 0x02, - 0xa1, 0x32, 0x7a, 0x1d, 0x21, 0x47, 0x08, 0x30, 0xd7, 0xa1, 0xe1, 0xc5, 0x91, 0x34, 0x18, 0xef, - 0x82, 0x92, 0x7a, 0xcb, 0xce, 0x83, 0xcc, 0x4f, 0xa1, 0xc3, 0x45, 0x9c, 0xba, 0x67, 0xcc, 0x41, - 0xed, 0xb3, 0xc8, 0xa7, 0xdc, 0x3e, 0x13, 0x3c, 0x08, 0xbd, 0x23, 0xb1, 0x76, 0x9b, 0xcf, 0x8c, - 0x67, 0x2b, 0x79, 0x98, 0xad, 0xe4, 0xa5, 0x75, 0x37, 0xb2, 0x9a, 0x00, 0x6d, 0x2f, 0x1e, 0x25, - 0x29, 0xe3, 0xc8, 0xbc, 0xd4, 0x5f, 0x93, 0xf4, 0x97, 0x15, 0xb5, 0xbb, 0x53, 0x3c, 0xf5, 0x8c, - 0x1d, 0x6f, 0x16, 0x60, 0xfe, 0x10, 0x96, 0xf3, 0x6b, 0x84, 0x6c, 0xc2, 0x42, 0x6a, 0x8b, 0xca, - 0x76, 0x7e, 0xf1, 0x23, 0x84, 0x9b, 0x0f, 0x33, 0x5b, 0xa1, 0xbc, 0x29, 0x5b, 0x93, 0x2c, 0x8d, - 0x4d, 0x8d, 0x4a, 0xdb, 0x07, 0x19, 0xd8, 0x27, 0xd0, 0xf1, 0xb9, 0x70, 0xf2, 0xc5, 0x7a, 0xe7, - 0xea, 0x62, 0xbd, 0xe5, 0x73, 0xb1, 0x3d, 0xad, 0xd7, 0x3f, 0x04, 0xe0, 0xe3, 0xbe, 0x2e, 0x00, - 0xba, 0xaa, 0x56, 0xce, 0x39, 0x87, 0xaa, 0x1a, 0xf8, 0xb8, 0xaf, 0x72, 0xff, 0x7b, 0xe8, 0x1c, - 0x14, 0xdc, 0x9d, 0x94, 0xb9, 0x3e, 0xf5, 0x0e, 0x35, 0x74, 0x05, 0x82, 0xd9, 0xcc, 0xf5, 0xb3, - 0x8a, 0xda, 0x7c, 0x45, 0x45, 0xfd, 0x0e, 0xd4, 0xc7, 0x51, 0xf0, 0xab, 0x31, 0x43, 0x3b, 0x5d, - 0x21, 0xb1, 0xd7, 0x24, 0xe0, 0xd0, 0xc7, 0x12, 0xde, 0x8b, 0x23, 0xc1, 0x5e, 0x0a, 0xea, 0x02, - 0xb0, 0x96, 0xd1, 0x6c, 0xed, 0x4a, 0xb8, 0xad, 0x09, 0x3e, 0x2f, 0xd5, 0x2a, 0xdd, 0xaa, 0x2a, - 0xa6, 0xff, 0xac, 0x00, 0x37, 0x4e, 0x28, 0xbe, 0xcb, 0xfd, 0x4e, 0x5d, 0x7e, 0x4e, 0x72, 0xfa, - 0x10, 0xaa, 0xca, 0x16, 0xc8, 0x27, 0xae, 0x36, 0x19, 0x4d, 0x46, 0xa9, 0x9c, 0x6c, 0x5e, 0x70, - 0x1d, 0xb2, 0x68, 0x7c, 0xca, 0xcd, 0x55, 0x40, 0xc7, 0x40, 0x84, 0xcc, 0xac, 0x65, 0x16, 0xf9, - 0xa7, 0x3c, 0x8b, 0xe4, 0xa5, 0x5c, 0x24, 0x7f, 0x0f, 0x9a, 0x14, 0x7f, 0xb1, 0xde, 0x13, 0x2c, - 0xa5, 0xa2, 0xa9, 0x6e, 0x37, 0x08, 0xf6, 0x98, 0x40, 0x0b, 0x0d, 0xad, 0xf2, 0x66, 0x86, 0x66, - 0xb7, 0xe9, 0x66, 0x61, 0x9c, 0xf8, 0xe8, 0x5f, 0x82, 0xeb, 0x4e, 0xc4, 0xae, 0x60, 0xf6, 0x1c, - 0x73, 0xeb, 0x37, 0x05, 0xac, 0x78, 0x66, 0x7c, 0xc1, 0x82, 0x52, 0x14, 0xc7, 0x89, 0x12, 0x47, - 0x56, 0x82, 0x3e, 0x8b, 0xe3, 0xe4, 0x60, 0xc9, 0x26, 0x9c, 0xf9, 0x01, 0x94, 0xc3, 0xd8, 0x73, - 0xc3, 0xf9, 0x34, 0x74, 0x84, 0xc0, 0x83, 0x25, 0x5b, 0x62, 0xcd, 0x77, 0xa1, 0xc0, 0x1f, 0xaa, - 0xc0, 0x0c, 0x99, 0x5c, 0x1f, 0x1e, 0x2c, 0xd9, 0x05, 0xfe, 0xd0, 0xbc, 0x03, 0xc5, 0x33, 0x8f, - 0xab, 0xd8, 0xdb, 0xd0, 0xe8, 0xcf, 0x76, 0x4f, 0x0e, 0x96, 0x6c, 0xc4, 0x98, 0x9f, 0x40, 0xcb, - 0x0b, 0xe3, 0xb1, 0xef, 0xf8, 0x17, 0x91, 0x3b, 0x0a, 0x3c, 0x15, 0x72, 0x6f, 0x4c, 0x43, 0x7c, - 0x3c, 0xf6, 0xf7, 0x24, 0xee, 0x60, 0xc9, 0x6e, 0x7a, 0xb9, 0x31, 0x1e, 0x63, 0xe8, 0x0f, 0x64, - 0x05, 0x92, 0x3b, 0xc6, 0xc1, 0xde, 0x63, 0x5c, 0x9f, 0x70, 0xe6, 0x01, 0x98, 0xee, 0xd7, 0xe3, - 0x94, 0x39, 0xfd, 0x30, 0xee, 0x3b, 0xda, 0x0e, 0xaa, 0x34, 0xa3, 0xa7, 0x67, 0x6c, 0x23, 0xc5, - 0x4e, 0x18, 0xf7, 0x95, 0x9c, 0x0e, 0x96, 0xec, 0xae, 0x3b, 0x07, 0xdb, 0xa9, 0x43, 0x55, 0x45, - 0x1e, 0xab, 0x02, 0x25, 0x94, 0x95, 0xf5, 0x0e, 0x94, 0x49, 0x1c, 0xa8, 0x7e, 0xb4, 0x41, 0x9d, - 0xc8, 0xc9, 0x1e, 0xff, 0xb4, 0x04, 0x85, 0x93, 0x87, 0x58, 0x8c, 0xb1, 0xc8, 0x4f, 0xe2, 0x40, - 0x25, 0xc6, 0xba, 0x9d, 0x8d, 0xb1, 0xca, 0xcc, 0x5d, 0x32, 0xd5, 0xb3, 0x4b, 0xa5, 0x9b, 0x50, - 0xe9, 0x8f, 0xbd, 0x73, 0x26, 0x54, 0xc6, 0x55, 0x23, 0x84, 0x27, 0x29, 0x1b, 0x04, 0x2f, 0x95, - 0x9d, 0xa9, 0x91, 0x8c, 0xd1, 0x32, 0x38, 0x7a, 0xa1, 0xcb, 0x65, 0xe5, 0x56, 0xc7, 0x18, 0x4d, - 0xc0, 0x5d, 0x84, 0x61, 0x8a, 0xe5, 0x5c, 0x9a, 0x57, 0xdd, 0xc6, 0xbf, 0x08, 0x71, 0xbd, 0x90, - 0x84, 0x51, 0xb7, 0xf1, 0x2f, 0x86, 0x69, 0xd7, 0xf3, 0x18, 0xe7, 0x94, 0x08, 0x6a, 0xf2, 0x86, - 0x48, 0x42, 0x30, 0x17, 0x6c, 0xc2, 0x32, 0x67, 0x5e, 0xca, 0x84, 0x93, 0xa3, 0xaa, 0x13, 0x55, - 0x47, 0x22, 0xb6, 0x33, 0xda, 0x0d, 0xe8, 0x0e, 0xe2, 0xd4, 0x63, 0x0e, 0x0a, 0xc3, 0xe1, 0xe2, - 0x22, 0x64, 0x2a, 0xec, 0xb6, 0x09, 0x7e, 0xec, 0x8a, 0xe1, 0x09, 0x42, 0xcd, 0xbb, 0xd0, 0xe6, - 0x9c, 0x39, 0xe7, 0x23, 0x5a, 0x0f, 0x43, 0x82, 0x8c, 0xc4, 0x0d, 0xce, 0xd9, 0x93, 0x11, 0x2e, - 0x76, 0xe8, 0xa3, 0x4b, 0xa6, 0x71, 0xc8, 0x1c, 0x37, 0x95, 0xb7, 0x53, 0x75, 0xbb, 0x8a, 0xe3, - 0xed, 0x54, 0x26, 0x9f, 0x97, 0x82, 0xa5, 0x91, 0xec, 0x25, 0x5a, 0x84, 0x05, 0x0d, 0x3a, 0xf4, - 0xcd, 0x2d, 0x58, 0x89, 0xfb, 0xbf, 0x64, 0x9e, 0x70, 0xb0, 0x07, 0xc8, 0xee, 0x18, 0xda, 0xc4, - 0xcd, 0xb2, 0x44, 0x1d, 0xc5, 0xde, 0xb9, 0xbe, 0x60, 0x40, 0x71, 0x6a, 0x8f, 0x8c, 0xcf, 0x99, - 0x0c, 0xab, 0x28, 0x4e, 0xe5, 0x75, 0x08, 0x43, 0xbd, 0x26, 0x69, 0x3c, 0x09, 0x7c, 0x96, 0xd2, - 0xdd, 0x4b, 0xdd, 0xce, 0xc6, 0x58, 0xf1, 0x24, 0x69, 0x8c, 0x6d, 0x9e, 0xba, 0x61, 0xd1, 0x43, - 0xeb, 0xd7, 0x06, 0x14, 0x3f, 0xdb, 0x3d, 0x79, 0x95, 0x55, 0x28, 0xed, 0x17, 0xae, 0xd0, 0x7e, - 0xf1, 0x7a, 0xed, 0x97, 0x16, 0x68, 0xff, 0x03, 0x68, 0x27, 0x29, 0xf3, 0xd9, 0x20, 0x88, 0x98, - 0xef, 0xa0, 0xda, 0xa5, 0x8d, 0xb4, 0xa6, 0xd0, 0x6d, 0x2f, 0xc4, 0x02, 0xdf, 0x43, 0x40, 0x24, - 0x02, 0x37, 0xe4, 0xe4, 0x34, 0xca, 0x62, 0x3a, 0x39, 0x38, 0xba, 0x85, 0x35, 0x82, 0x2e, 0xf9, - 0xcd, 0xee, 0x98, 0x8b, 0x78, 0x44, 0x35, 0x09, 0xee, 0x32, 0xad, 0x6f, 0xb2, 0x0a, 0xb3, 0x6e, - 0xb7, 0xa6, 0x50, 0x24, 0x7b, 0x00, 0xab, 0xb3, 0x64, 0x4e, 0xae, 0xd9, 0xaa, 0xdb, 0x2b, 0x33, - 0xd4, 0x27, 0x84, 0xc2, 0x30, 0xd6, 0x9d, 0xf7, 0xd3, 0xdf, 0xbe, 0x18, 0xdf, 0x83, 0xa6, 0xeb, - 0x79, 0xf1, 0x38, 0x12, 0x0e, 0xc5, 0x7b, 0x29, 0xc4, 0x86, 0x82, 0x3d, 0xc3, 0xb0, 0x7f, 0x0b, - 0x80, 0x0f, 0xdd, 0x94, 0xc9, 0x62, 0x4a, 0x0a, 0xaf, 0x2e, 0x21, 0x78, 0xf6, 0xa9, 0x8b, 0xf1, - 0xe0, 0x6c, 0xd6, 0xc5, 0x4e, 0x82, 0x33, 0x54, 0x40, 0x4e, 0x34, 0xdc, 0x8b, 0x13, 0xa6, 0x3d, - 0x6c, 0x0a, 0x3f, 0x41, 0xb0, 0xf9, 0xe9, 0x25, 0x61, 0xc3, 0x82, 0xb0, 0x96, 0x53, 0xcf, 0x9c, - 0x1a, 0xac, 0x3f, 0x31, 0xa0, 0xb2, 0x23, 0x85, 0xf2, 0x7a, 0x51, 0xaa, 0x78, 0x45, 0x94, 0x2a, - 0x5d, 0x21, 0xe0, 0xf2, 0xf5, 0x02, 0xae, 0x5c, 0x16, 0x30, 0xb6, 0x04, 0xcd, 0x7c, 0xd0, 0x37, - 0xef, 0x65, 0xbb, 0x18, 0xaa, 0x1a, 0xd7, 0x55, 0x05, 0x41, 0xb3, 0x5d, 0xef, 0x42, 0x4b, 0xfb, - 0x9f, 0x54, 0x8d, 0xd4, 0x7a, 0x53, 0x03, 0x49, 0x37, 0x3f, 0x85, 0xb2, 0x2b, 0x44, 0xaa, 0xbb, - 0xa6, 0x3b, 0x8b, 0xd2, 0xcc, 0xd6, 0x36, 0x52, 0xec, 0x47, 0x22, 0xbd, 0xb0, 0x25, 0xf5, 0xda, - 0xc7, 0x00, 0x53, 0x20, 0x86, 0xcd, 0xa9, 0x65, 0xe3, 0x5f, 0xec, 0x75, 0x27, 0x6e, 0x38, 0xd6, - 0x7b, 0xca, 0xc1, 0xef, 0x14, 0x3e, 0x36, 0xac, 0xdb, 0x50, 0xc2, 0x74, 0x24, 0x65, 0x38, 0x8a, - 0x85, 0xee, 0xf5, 0xd4, 0xc8, 0xfa, 0x07, 0x03, 0xda, 0x73, 0x2f, 0x16, 0x77, 0xf5, 0x8b, 0x82, - 0x31, 0x9b, 0x78, 0x67, 0x1e, 0x14, 0xbe, 0x5f, 0x2d, 0xff, 0x3a, 0xf7, 0xf8, 0x73, 0xd7, 0xbf, - 0xe5, 0xd7, 0xba, 0xfe, 0xb5, 0xee, 0x63, 0x3f, 0xc8, 0xdc, 0x68, 0xda, 0x8c, 0xcc, 0xd4, 0x78, - 0xc6, 0x6c, 0x8d, 0x67, 0x1d, 0x43, 0x27, 0x23, 0x7f, 0x93, 0x63, 0xf7, 0xa0, 0xca, 0xc7, 0xe4, - 0x2b, 0x74, 0xe8, 0x9a, 0xad, 0x87, 0xd6, 0xc7, 0xd0, 0x56, 0xaf, 0x3a, 0x9a, 0x81, 0x7b, 0xd0, - 0xe1, 0xee, 0x84, 0x39, 0x22, 0x76, 0xf2, 0xe5, 0x5f, 0xcd, 0x6e, 0x21, 0xf8, 0x34, 0x56, 0x31, - 0xc4, 0xfa, 0x6b, 0x03, 0x3a, 0xd9, 0xd4, 0x37, 0xd4, 0xc1, 0xf4, 0x84, 0x85, 0xb9, 0x2a, 0xf6, - 0x47, 0x60, 0x7a, 0x71, 0x18, 0x62, 0xd2, 0xa1, 0x67, 0x11, 0x8a, 0x0f, 0xaa, 0x66, 0xec, 0x2a, - 0x0c, 0x8a, 0x7d, 0x17, 0xe1, 0x98, 0x58, 0x67, 0xa8, 0xe9, 0x46, 0x52, 0x36, 0x5a, 0x9d, 0x1c, - 0xf1, 0x49, 0xf0, 0x35, 0xb3, 0x56, 0x60, 0x79, 0x77, 0xc8, 0xbc, 0xf3, 0x6d, 0x7f, 0x14, 0x44, - 0xea, 0xb0, 0xd6, 0x37, 0x06, 0x98, 0x79, 0xe8, 0x9b, 0x9c, 0xe3, 0x75, 0x9f, 0xba, 0x36, 0x61, - 0x79, 0xe8, 0x72, 0x27, 0x61, 0x91, 0x1f, 0x44, 0x67, 0x8e, 0x8b, 0x3b, 0xd1, 0x89, 0x6a, 0x76, - 0x67, 0xe8, 0xf2, 0x63, 0x09, 0x27, 0x06, 0xac, 0x7f, 0x32, 0xe0, 0xd6, 0xbe, 0xca, 0xc0, 0x4a, - 0xd0, 0x36, 0x43, 0x35, 0x64, 0xea, 0x59, 0xd0, 0xd0, 0x19, 0x6f, 0xd4, 0xd0, 0xdd, 0x81, 0x86, - 0xca, 0xea, 0x39, 0x77, 0x07, 0x09, 0x7a, 0xa6, 0xea, 0xef, 0x54, 0xee, 0x29, 0x29, 0x64, 0xf4, - 0x6a, 0x28, 0x18, 0x91, 0x7c, 0x00, 0x6d, 0x6a, 0x25, 0x22, 0xe1, 0x84, 0x2c, 0x3a, 0x13, 0x43, - 0x25, 0xf4, 0x96, 0x82, 0x1e, 0x11, 0xd0, 0x5a, 0x87, 0xdb, 0x57, 0x1d, 0x46, 0x0a, 0xda, 0xfa, - 0x0b, 0x03, 0xd6, 0xe6, 0x48, 0x4e, 0xdc, 0xc9, 0x6f, 0xf1, 0xb0, 0x97, 0x4f, 0x52, 0x5c, 0x74, - 0x92, 0x5b, 0xf0, 0xce, 0x42, 0x36, 0xd5, 0x31, 0xfe, 0x58, 0xdd, 0x6d, 0xfb, 0xae, 0x70, 0xcd, - 0x4d, 0x1d, 0x2d, 0x8c, 0xd9, 0x2b, 0xa6, 0x3d, 0x75, 0x47, 0x4d, 0x0d, 0xa9, 0x8a, 0x1a, 0x8f, - 0xa0, 0x41, 0x86, 0x7b, 0x96, 0xc6, 0xe3, 0x44, 0x5f, 0x28, 0xaf, 0xce, 0xcf, 0xf8, 0x0c, 0xb1, - 0x36, 0xbd, 0x13, 0xd2, 0x5f, 0x2e, 0x3b, 0x2d, 0xd4, 0x50, 0x76, 0x4f, 0x47, 0x4d, 0x18, 0x7a, - 0xd0, 0x1d, 0x40, 0x55, 0xc5, 0xe1, 0x84, 0xe5, 0xda, 0x2d, 0xd0, 0x20, 0xd9, 0x8a, 0x8d, 0xdc, - 0x97, 0x88, 0x93, 0x4a, 0x2b, 0x8f, 0xdc, 0x97, 0x0a, 0x1c, 0x44, 0x08, 0x2e, 0x2b, 0x70, 0x10, - 0x9d, 0x22, 0x87, 0xf4, 0x48, 0x9e, 0x05, 0xb6, 0xaa, 0x0a, 0x6c, 0xb9, 0xf7, 0x32, 0x1d, 0xd8, - 0x1a, 0xa3, 0xe9, 0xc0, 0xfa, 0x17, 0x03, 0x5a, 0x33, 0xfc, 0x2f, 0x2a, 0xf6, 0xcd, 0x9f, 0x43, - 0x67, 0x7a, 0xb5, 0x2f, 0x9b, 0xf8, 0xc2, 0x35, 0x52, 0x6b, 0x65, 0xf7, 0xfc, 0xd4, 0xa1, 0x4e, - 0x59, 0x2e, 0xe6, 0x59, 0xbe, 0xe2, 0x80, 0xf7, 0xa0, 0x83, 0xd4, 0x79, 0xe1, 0xc8, 0x93, 0xb6, - 0xa4, 0xeb, 0x6b, 0xf9, 0xdc, 0x84, 0x8a, 0x32, 0x05, 0xf9, 0xbe, 0xa2, 0x46, 0xd6, 0x7f, 0x95, - 0xa1, 0x99, 0xe7, 0x26, 0x77, 0xd9, 0x6d, 0xcc, 0x5c, 0x76, 0xeb, 0x83, 0x16, 0x72, 0x07, 0xdd, - 0x84, 0xe5, 0x68, 0x3c, 0xea, 0xb3, 0xd4, 0x89, 0x07, 0x0e, 0x8b, 0x44, 0x1a, 0x30, 0xc9, 0x75, - 0xd1, 0xee, 0x48, 0xc4, 0xf3, 0xc1, 0xbe, 0x04, 0xe7, 0x8e, 0x55, 0x5a, 0x7c, 0xac, 0x72, 0xfe, - 0x58, 0x73, 0xfa, 0xae, 0x5c, 0xd2, 0xf7, 0x3b, 0x50, 0x57, 0xb7, 0x73, 0x81, 0x4f, 0xea, 0x2b, - 0xda, 0x35, 0x09, 0x98, 0xbf, 0xdc, 0xaa, 0x5d, 0x9d, 0x10, 0xeb, 0x0b, 0xae, 0x35, 0xa7, 0x8f, - 0x41, 0xef, 0x43, 0x89, 0x7a, 0xf0, 0x06, 0x19, 0x47, 0x37, 0x9f, 0x1f, 0xa9, 0xd7, 0x26, 0x2c, - 0x2e, 0x17, 0x70, 0x07, 0x8d, 0x84, 0x5a, 0x91, 0x9a, 0x5d, 0x09, 0x38, 0x3d, 0xd4, 0xbf, 0x0d, - 0x35, 0xd9, 0xf1, 0xab, 0x36, 0xa4, 0x68, 0x57, 0x69, 0x7c, 0xe8, 0xe7, 0x94, 0xd1, 0xce, 0x2b, - 0xc3, 0xfc, 0xff, 0xb0, 0x86, 0x32, 0xea, 0xb3, 0x33, 0x92, 0x94, 0x13, 0x44, 0x8e, 0xcf, 0x06, - 0xee, 0x38, 0x14, 0x8e, 0x37, 0xa0, 0xc6, 0xa3, 0x64, 0xaf, 0x8e, 0x82, 0x68, 0x07, 0x09, 0x4e, - 0xf9, 0x61, 0xb4, 0x27, 0xb1, 0xbb, 0x03, 0x8a, 0x6f, 0xf4, 0x94, 0x1c, 0x0f, 0x06, 0x9c, 0x09, - 0xea, 0x42, 0x4a, 0x76, 0x83, 0x60, 0xcf, 0x09, 0x34, 0x25, 0x51, 0x7b, 0x2f, 0xe7, 0x48, 0x64, - 0x44, 0x58, 0x78, 0x05, 0x61, 0xbe, 0xe1, 0x5d, 0x57, 0xfe, 0xc1, 0x61, 0x65, 0xee, 0xc1, 0x61, - 0x03, 0xba, 0x4a, 0x6b, 0x53, 0xfd, 0xdc, 0x20, 0x25, 0xb4, 0x25, 0xfc, 0x44, 0x6b, 0xe9, 0x7d, - 0x68, 0xeb, 0xdb, 0x57, 0xa5, 0xac, 0x55, 0xa2, 0x53, 0x77, 0xb2, 0xfb, 0x52, 0x65, 0x8f, 0xa6, - 0x77, 0xb4, 0x49, 0xec, 0x0d, 0xd5, 0x33, 0xef, 0xca, 0x6c, 0xce, 0xda, 0x47, 0x54, 0x76, 0x4d, - 0x4b, 0x83, 0x42, 0x30, 0xb1, 0xbe, 0x35, 0x60, 0x39, 0x7f, 0x45, 0xb4, 0xaf, 0xf3, 0xf8, 0xd0, - 0x4d, 0x12, 0x16, 0x39, 0xae, 0xbe, 0xbb, 0xae, 0x49, 0xc0, 0x36, 0xdd, 0xa9, 0x52, 0x96, 0x74, - 0xbc, 0xd8, 0xd7, 0x71, 0xb7, 0x4e, 0x90, 0xdd, 0xd8, 0xc7, 0x04, 0x2b, 0xbf, 0xc4, 0x71, 0x46, - 0x8c, 0x73, 0x2c, 0x31, 0x64, 0x92, 0x69, 0x12, 0xf0, 0xa9, 0x84, 0xcd, 0x04, 0x39, 0xfd, 0x32, - 0x24, 0x83, 0x9c, 0xf5, 0x08, 0x4a, 0x27, 0x89, 0x4b, 0xb5, 0xb4, 0xd2, 0xa2, 0x64, 0x40, 0x8d, - 0x72, 0x66, 0x53, 0x98, 0xf1, 0xe1, 0x7d, 0x68, 0xe0, 0x3c, 0xfe, 0x7c, 0xa0, 0x9f, 0x75, 0x2f, - 0x85, 0x24, 0x0b, 0xca, 0x1c, 0x49, 0xe6, 0x1f, 0x1a, 0x71, 0x9e, 0x2d, 0x51, 0xd6, 0xb7, 0x45, - 0xe8, 0x1d, 0xc5, 0x67, 0x54, 0x5b, 0x8c, 0xfb, 0xa8, 0x56, 0xd7, 0x53, 0xb7, 0xd1, 0x6e, 0xf6, - 0x32, 0x6a, 0xcc, 0xbe, 0x8c, 0x4e, 0x7d, 0x50, 0xb2, 0x34, 0xf5, 0xc1, 0xb9, 0x47, 0x02, 0x73, - 0x1d, 0x9a, 0x41, 0x94, 0x8c, 0x85, 0x33, 0x13, 0xc5, 0x80, 0x60, 0x4f, 0xc9, 0xe7, 0xa7, 0x14, - 0xf9, 0x88, 0xad, 0x28, 0x28, 0x58, 0xdc, 0x83, 0x8e, 0x62, 0xcb, 0x19, 0xa4, 0xf1, 0x68, 0x1a, - 0x19, 0x5a, 0x0a, 0xfc, 0x38, 0x8d, 0x47, 0xa7, 0xf4, 0xcd, 0x90, 0xa6, 0x1b, 0x47, 0x22, 0x08, - 0x1d, 0xf5, 0xf2, 0x54, 0xb2, 0xdb, 0x0a, 0xfe, 0x05, 0x82, 0x4f, 0x39, 0x7a, 0x2f, 0xee, 0x36, - 0x8d, 0x13, 0x18, 0xa4, 0x54, 0x94, 0x40, 0x46, 0x73, 0x51, 0x62, 0xe4, 0xbe, 0x44, 0xc4, 0x3a, - 0x7d, 0x43, 0x04, 0x57, 0xc4, 0x84, 0x82, 0xb8, 0x98, 0x71, 0xfc, 0xc6, 0xac, 0xe3, 0xdf, 0x87, - 0x2a, 0x8f, 0xc7, 0xa9, 0xc7, 0x78, 0xaf, 0x39, 0xfb, 0xcc, 0x9a, 0x53, 0xa0, 0xad, 0x69, 0xac, - 0x3f, 0x84, 0x1b, 0x8b, 0x14, 0x62, 0x7e, 0x04, 0x25, 0x0a, 0x38, 0xb2, 0x6c, 0x58, 0x9f, 0xde, - 0xc6, 0x2d, 0x56, 0x9e, 0x4d, 0xd4, 0xe6, 0x7d, 0x68, 0x70, 0x2e, 0x9c, 0x78, 0x2c, 0x92, 0xb1, - 0x58, 0xfc, 0xe4, 0x0c, 0x9c, 0x8b, 0xe7, 0x12, 0x6f, 0xfd, 0x01, 0xac, 0x2e, 0x5a, 0x90, 0x9b, - 0x7b, 0xd0, 0xe6, 0x33, 0x10, 0x55, 0x13, 0xbc, 0x7b, 0x1d, 0x1f, 0xf6, 0xdc, 0x1c, 0xeb, 0xdb, - 0x02, 0x2c, 0x2b, 0xc2, 0xdd, 0xe9, 0xc9, 0xa8, 0x52, 0xd6, 0xa3, 0x4c, 0xc9, 0x86, 0xae, 0x94, - 0x35, 0x46, 0xe9, 0x79, 0x0b, 0x56, 0x72, 0xd4, 0x99, 0xaa, 0xa5, 0x29, 0x2e, 0x4f, 0x51, 0x5a, - 0xdb, 0xfa, 0x62, 0xb6, 0x98, 0xbb, 0x98, 0xc5, 0x70, 0x15, 0x8f, 0x46, 0x2c, 0x12, 0xba, 0xc9, - 0xcf, 0xc6, 0xe6, 0xbb, 0x50, 0x77, 0x53, 0x11, 0x0c, 0x5c, 0x4f, 0xe8, 0x6b, 0xb4, 0x29, 0x00, - 0xab, 0xac, 0x6c, 0xe0, 0x0c, 0x5d, 0xae, 0x53, 0x6b, 0x2b, 0x83, 0x1e, 0xb8, 0x7c, 0x68, 0xfe, - 0x00, 0x3a, 0x67, 0x2c, 0x62, 0xa9, 0x2b, 0x98, 0xaf, 0x5e, 0xfb, 0xe5, 0x25, 0x5b, 0x3b, 0x03, - 0x53, 0xf2, 0xb7, 0xfe, 0xde, 0x90, 0xf5, 0xd6, 0xbe, 0x1f, 0x88, 0x85, 0x4e, 0xfc, 0x00, 0x56, - 0x7d, 0x16, 0x32, 0xc1, 0x9c, 0xec, 0xb9, 0x7c, 0xfa, 0xf5, 0x40, 0xdd, 0x5e, 0x91, 0xc8, 0x63, - 0x85, 0x93, 0x5f, 0x0e, 0x3c, 0x81, 0x1b, 0x6a, 0x4e, 0x18, 0x9f, 0xe5, 0xa6, 0xc8, 0x9e, 0xf7, - 0xed, 0xac, 0x20, 0x21, 0x9a, 0xbc, 0x11, 0x9a, 0x72, 0xda, 0x91, 0x9c, 0x25, 0x17, 0xbb, 0x0b, - 0x2d, 0x9f, 0x71, 0x91, 0x8e, 0x3d, 0xe1, 0x70, 0x16, 0x0e, 0xd4, 0x37, 0x6b, 0x4d, 0x0d, 0x3c, - 0x61, 0xe1, 0xc0, 0x7a, 0x01, 0xcb, 0x97, 0x56, 0xfb, 0xbe, 0x31, 0x09, 0x2b, 0x8c, 0x17, 0xc3, - 0x58, 0x5e, 0x9b, 0xb3, 0xd9, 0x62, 0xb6, 0x43, 0x08, 0x5c, 0x5d, 0x95, 0xb3, 0x7f, 0x67, 0x40, - 0xfd, 0x69, 0x70, 0x96, 0xd2, 0x07, 0x42, 0xe6, 0x7d, 0xa8, 0x33, 0x3f, 0x10, 0x8e, 0x72, 0x94, - 0xe2, 0xfc, 0xf7, 0x50, 0x28, 0x65, 0xbb, 0x86, 0x24, 0x14, 0xdf, 0xde, 0x83, 0xa6, 0x48, 0xc7, - 0x91, 0x47, 0x5a, 0x12, 0xb1, 0xb2, 0xa1, 0x46, 0x06, 0x3b, 0x8d, 0xcd, 0x4f, 0xa0, 0x91, 0x37, - 0xfa, 0x39, 0x09, 0x5e, 0xb2, 0x65, 0x3b, 0x4f, 0x8d, 0x56, 0x90, 0x89, 0x2e, 0xbb, 0xb6, 0x45, - 0xad, 0xb5, 0x35, 0xf8, 0x98, 0xa0, 0x9b, 0xcf, 0x60, 0xfd, 0x55, 0x5f, 0x50, 0x9a, 0x1d, 0x68, - 0x7c, 0x41, 0x57, 0xfc, 0xf4, 0xa1, 0x60, 0x77, 0xc9, 0x6c, 0x41, 0xfd, 0x17, 0x6e, 0x20, 0xb6, - 0x93, 0x24, 0xbc, 0xe8, 0x1a, 0x26, 0x40, 0xe5, 0x71, 0x10, 0x05, 0x7c, 0xd8, 0x2d, 0x6c, 0x7e, - 0x0e, 0xb7, 0xaf, 0xff, 0xc2, 0xd1, 0x5c, 0x86, 0x56, 0x36, 0x79, 0x2f, 0x8e, 0x70, 0xbd, 0x55, - 0x58, 0xce, 0x6d, 0x20, 0xbf, 0x05, 0xeb, 0x1a, 0x9b, 0xbf, 0x0b, 0x9d, 0xb9, 0xf4, 0x6f, 0x36, - 0xa0, 0xfa, 0xc5, 0xb3, 0x27, 0xcf, 0x9e, 0xff, 0xe2, 0x59, 0x77, 0xc9, 0xac, 0x42, 0xf1, 0xe8, - 0xab, 0x8f, 0x24, 0x03, 0x27, 0xcf, 0xb6, 0x8f, 0x8f, 0x7f, 0xbf, 0x5b, 0x30, 0x6b, 0x50, 0xfa, - 0xea, 0xe4, 0x74, 0xaf, 0x5b, 0xdc, 0x5c, 0xcf, 0x3e, 0x64, 0xc4, 0x6c, 0x59, 0x83, 0xd2, 0xc9, - 0xee, 0x36, 0x4e, 0xab, 0x41, 0xe9, 0xf1, 0xe1, 0xd1, 0x7e, 0xd7, 0xd8, 0xbc, 0x05, 0x8d, 0x5c, - 0xed, 0x6d, 0x56, 0xa0, 0xf0, 0xe5, 0x4f, 0xba, 0x4b, 0xf4, 0xfb, 0xa0, 0x6b, 0x6c, 0xde, 0x81, - 0x9a, 0x8e, 0xb4, 0xb8, 0x85, 0x34, 0x33, 0xb9, 0xef, 0xf1, 0x58, 0x74, 0x8d, 0x07, 0xff, 0x5d, - 0x80, 0x8a, 0xdc, 0xc2, 0xfc, 0x04, 0xd4, 0xd7, 0xb2, 0xe6, 0xea, 0xdc, 0xa7, 0x2c, 0x52, 0x90, - 0x6b, 0x37, 0xe7, 0xc1, 0xaa, 0xed, 0x59, 0xfa, 0xd0, 0x30, 0x8f, 0x61, 0x85, 0x1a, 0xe8, 0x7c, - 0x1b, 0xfb, 0x3c, 0x31, 0x33, 0x65, 0x5f, 0xea, 0xb9, 0xd7, 0xd6, 0x16, 0xa1, 0x72, 0x2b, 0x0e, - 0x61, 0x75, 0xa1, 0x1a, 0xcc, 0xf7, 0x5f, 0xe7, 0xbb, 0xd9, 0xb5, 0x0f, 0x5e, 0x41, 0x25, 0x77, - 0xda, 0x30, 0x3e, 0x34, 0xcc, 0x9f, 0x43, 0x35, 0x91, 0x44, 0xe6, 0xcd, 0xb9, 0x59, 0x7a, 0xb5, - 0xb7, 0x2e, 0xc1, 0x35, 0xa7, 0x38, 0xdb, 0x93, 0x97, 0x31, 0x66, 0xee, 0x69, 0x3d, 0x7f, 0x99, - 0x33, 0x9d, 0x3d, 0x77, 0x6b, 0x63, 0x2d, 0x3d, 0xf8, 0x5b, 0x03, 0x3a, 0x73, 0x2d, 0xa5, 0xf9, - 0x15, 0x54, 0x55, 0x97, 0x6d, 0x66, 0xa7, 0xb8, 0xf6, 0x36, 0x60, 0xed, 0xde, 0xab, 0xc8, 0x32, - 0x6e, 0x7f, 0x0f, 0x4a, 0xdc, 0x9d, 0x30, 0xd3, 0xba, 0x62, 0x46, 0xae, 0xed, 0x5e, 0xbb, 0x7b, - 0x2d, 0x8d, 0x5e, 0x72, 0xe7, 0xde, 0xbf, 0xfd, 0x65, 0xcd, 0xf8, 0xf5, 0x77, 0xb7, 0x8d, 0xdf, - 0x7c, 0x77, 0xdb, 0xf8, 0xf7, 0xef, 0x6e, 0x1b, 0x7f, 0xfe, 0x1f, 0xb7, 0x97, 0xa0, 0x1b, 0xa7, - 0x67, 0x5b, 0x22, 0x38, 0x9f, 0x6c, 0x9d, 0x4f, 0xe8, 0xe3, 0xe8, 0x7e, 0x85, 0x7e, 0x1e, 0xfe, - 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xe1, 0x83, 0x91, 0xa0, 0x2d, 0x00, 0x00, + // 4478 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7a, 0x5b, 0x6f, 0x1c, 0x47, + 0x76, 0x3f, 0x7b, 0xee, 0x73, 0xe6, 0xca, 0x22, 0x25, 0x8d, 0x69, 0x4b, 0xa2, 0x5b, 0xb6, 0x96, + 0x7f, 0xee, 0x8a, 0xeb, 0x95, 0xbc, 0x5a, 0xfd, 0xe3, 0x0d, 0x16, 0xbc, 0xc9, 0xa4, 0x75, 0x63, + 0x9a, 0xb4, 0x17, 0x31, 0x10, 0x34, 0x7a, 0xba, 0x6b, 0x38, 0xbd, 0xec, 0xe9, 0xee, 0xed, 0xea, + 0x19, 0x89, 0xce, 0x5b, 0xde, 0x0d, 0x27, 0x41, 0x1e, 0xf2, 0x05, 0x02, 0xe4, 0x21, 0x01, 0xf2, + 0x9a, 0xb7, 0x00, 0x49, 0x90, 0x0d, 0x12, 0x20, 0xfb, 0x90, 0x87, 0x3c, 0x06, 0x0e, 0x92, 0x6f, + 0x11, 0x20, 0x38, 0xa7, 0xaa, 0x7a, 0x7a, 0x86, 0x43, 0x4a, 0x72, 0x82, 0x7d, 0x9a, 0xa9, 0xdf, + 0x39, 0x55, 0x75, 0xaa, 0xce, 0xa5, 0xce, 0xa9, 0x6a, 0x80, 0x7e, 0x12, 0xf7, 0xb7, 0xe2, 0x24, + 0x4a, 0x23, 0x56, 0xe9, 0x3b, 0xee, 0xd9, 0x38, 0x5e, 0x6b, 0x9d, 0x4d, 0x92, 0xd8, 0xd5, 0xf0, + 0x5a, 0x8b, 0x27, 0x49, 0x94, 0x71, 0xad, 0x35, 0x47, 0x3c, 0x75, 0xb2, 0x16, 0xe3, 0xa1, 0x9b, + 0x9c, 0xc7, 0xa9, 0x1f, 0x85, 0x19, 0xb6, 0x7a, 0x1a, 0x9d, 0x46, 0xf4, 0xf7, 0x87, 0xf8, 0x4f, + 0xa1, 0x9d, 0x64, 0x2c, 0x52, 0xfa, 0x2b, 0x01, 0xf3, 0x2f, 0x0c, 0x78, 0xef, 0x28, 0xe1, 0xb1, + 0x93, 0xf0, 0xe3, 0xd0, 0x89, 0xc5, 0x30, 0x4a, 0x77, 0x48, 0x00, 0x8b, 0xff, 0x72, 0xcc, 0x45, + 0xca, 0x1e, 0x41, 0x21, 0x3d, 0xef, 0x19, 0xeb, 0xc6, 0x46, 0xfb, 0xfe, 0xc6, 0x96, 0x14, 0x6e, + 0xeb, 0xaa, 0x1e, 0x27, 0xe7, 0x31, 0xb7, 0x0a, 0xe9, 0x39, 0xdb, 0x80, 0x6a, 0xc2, 0x4f, 0xfd, + 0x28, 0x14, 0xbd, 0xc2, 0x7a, 0x71, 0xa3, 0x71, 0xbf, 0xbd, 0xa5, 0xa4, 0xb6, 0x08, 0xb6, 0x34, + 0x99, 0x6d, 0x40, 0x37, 0xe0, 0x8e, 0xe0, 0xb6, 0x1f, 0xda, 0x82, 0xbb, 0x51, 0xe8, 0x89, 0x5e, + 0x71, 0xdd, 0xd8, 0x28, 0x59, 0x6d, 0xc2, 0x0f, 0xc3, 0x63, 0x89, 0x9a, 0xff, 0x6a, 0xc0, 0xcd, + 0x4b, 0x26, 0x17, 0x71, 0x14, 0x0a, 0xce, 0x1e, 0xe6, 0xe4, 0xbd, 0x7b, 0xa5, 0xbc, 0xfb, 0x13, + 0x1e, 0x4e, 0xa5, 0xbd, 0x0b, 0x15, 0x29, 0x4e, 0xaf, 0xb0, 0x6e, 0x2c, 0x10, 0x56, 0x51, 0xd9, + 0x07, 0x50, 0x26, 0x55, 0x90, 0x80, 0xc8, 0xa6, 0x15, 0xb3, 0x8f, 0xbf, 0x96, 0x24, 0xb2, 0x7b, + 0xb0, 0x12, 0x38, 0x22, 0xb5, 0xd5, 0xb2, 0x84, 0x3d, 0x71, 0x02, 0xdf, 0xeb, 0x95, 0xd6, 0x8d, + 0x8d, 0x9a, 0xd5, 0x45, 0xd2, 0x53, 0x5a, 0x98, 0xf8, 0x02, 0x71, 0xf3, 0x3f, 0xab, 0x00, 0x52, + 0xa8, 0x67, 0x3c, 0x75, 0xd8, 0x4d, 0x00, 0x37, 0x18, 0x8b, 0x94, 0x27, 0xb6, 0xef, 0xd1, 0x5a, + 0x4a, 0x56, 0x5d, 0x21, 0x87, 0x1e, 0xfb, 0x1e, 0x74, 0x34, 0x79, 0xc2, 0x13, 0xa1, 0x65, 0xae, + 0x5b, 0x6d, 0x05, 0x7f, 0x21, 0x51, 0x1c, 0xa7, 0x3f, 0xe5, 0x69, 0x10, 0x4f, 0xbd, 0x9f, 0x91, + 0x7b, 0x50, 0xd5, 0xb4, 0xe6, 0xba, 0xb1, 0x51, 0xb6, 0x74, 0x93, 0x99, 0x50, 0x1e, 0xf8, 0x01, + 0x17, 0xbd, 0x12, 0x29, 0xae, 0xa9, 0xf7, 0xf1, 0xb1, 0x1f, 0x70, 0x4b, 0x92, 0xd8, 0x0f, 0x01, + 0xf0, 0x8f, 0xed, 0x87, 0x1e, 0x7f, 0xd5, 0x6b, 0xd1, 0x6e, 0x74, 0x35, 0x23, 0x2e, 0x83, 0x98, + 0xeb, 0xc8, 0x73, 0x88, 0x2c, 0xec, 0x0e, 0xb4, 0x44, 0xea, 0x24, 0x69, 0x26, 0x50, 0x99, 0x16, + 0xd6, 0x24, 0x50, 0xcb, 0x74, 0x1b, 0x1a, 0x3c, 0xf4, 0x32, 0x96, 0x0a, 0xb1, 0x00, 0x0f, 0x3d, + 0xcd, 0xb0, 0x01, 0x55, 0xe1, 0x0e, 0xf9, 0xc8, 0x11, 0xbd, 0xaa, 0xb2, 0x2a, 0x35, 0xe7, 0x31, + 0xc1, 0x96, 0x26, 0xb3, 0x07, 0xd0, 0x94, 0x7f, 0x95, 0x88, 0xed, 0x4b, 0x44, 0x6c, 0x48, 0x2e, + 0x29, 0xe4, 0x1a, 0xd4, 0x7d, 0x61, 0x27, 0xce, 0x4b, 0xfb, 0x6c, 0xd2, 0xab, 0x91, 0xba, 0xaa, + 0xbe, 0xb0, 0x9c, 0x97, 0x4f, 0x26, 0xb8, 0x62, 0x24, 0x24, 0x4e, 0x78, 0xca, 0x45, 0xaf, 0x4e, + 0xb3, 0x67, 0xc3, 0x59, 0xce, 0x4b, 0x0b, 0x09, 0x56, 0x3d, 0x51, 0xff, 0x04, 0x7b, 0x04, 0x9d, + 0xac, 0x83, 0x12, 0xa2, 0x73, 0x89, 0x10, 0x2d, 0xdd, 0x4b, 0x8a, 0xc1, 0xa0, 0xe4, 0x79, 0x81, + 0xe8, 0xc1, 0xba, 0xb1, 0xd1, 0xb4, 0xe8, 0x3f, 0xfb, 0x11, 0x34, 0x3c, 0x2f, 0x90, 0xe3, 0x70, + 0xd1, 0xeb, 0x5e, 0x32, 0x12, 0x78, 0x5e, 0x70, 0x28, 0x79, 0x70, 0xcb, 0x25, 0xd9, 0x4e, 0xb8, + 0x18, 0x07, 0x69, 0x6f, 0x99, 0x6c, 0xa0, 0xd9, 0xd7, 0x3e, 0x33, 0x0e, 0x52, 0xf6, 0x31, 0x34, + 0x9c, 0xd8, 0xcf, 0xb6, 0x9c, 0x91, 0xeb, 0xac, 0x6c, 0xe9, 0xf8, 0xb3, 0x7d, 0x74, 0xa8, 0xf6, + 0xde, 0x02, 0x27, 0xf6, 0xb5, 0x1e, 0x1e, 0x40, 0x2d, 0x8e, 0x02, 0xdf, 0xf5, 0xb9, 0xe8, 0xad, + 0xd0, 0x56, 0xdc, 0xc8, 0xbc, 0x2d, 0x70, 0x5c, 0x3e, 0xe2, 0x61, 0x7a, 0x84, 0x0c, 0xe7, 0x56, + 0xc6, 0xc8, 0x3e, 0x86, 0xeb, 0x21, 0x7f, 0x69, 0xbb, 0x51, 0x10, 0x38, 0x18, 0xad, 0x84, 0xcd, + 0x43, 0xa7, 0x1f, 0x70, 0xaf, 0xb7, 0x4a, 0x82, 0xad, 0x86, 0xfc, 0xe5, 0x6e, 0x46, 0xdc, 0x97, + 0x34, 0xa5, 0x93, 0xf4, 0x55, 0x88, 0x3a, 0xb9, 0xa6, 0x75, 0x72, 0xf2, 0x2a, 0x7c, 0x32, 0x61, + 0x9b, 0x50, 0xf5, 0xfa, 0xf6, 0xc8, 0x89, 0x45, 0xef, 0x3a, 0x49, 0xb1, 0x9c, 0x49, 0xe1, 0xa7, + 0xc9, 0xde, 0xce, 0x33, 0x27, 0xb6, 0x2a, 0x5e, 0xff, 0x99, 0x13, 0x0b, 0x76, 0x17, 0x4a, 0xa3, + 0xc8, 0xe3, 0xbd, 0x1b, 0xb4, 0x42, 0xa6, 0x19, 0x95, 0xe3, 0x45, 0x1e, 0xb7, 0x88, 0xce, 0xbe, + 0x0f, 0x15, 0xa5, 0xe3, 0x1e, 0x0d, 0xb9, 0x32, 0xcb, 0x29, 0xd5, 0xac, 0x58, 0xd0, 0x60, 0xd5, + 0x16, 0x0b, 0xff, 0x2b, 0xde, 0x7b, 0x47, 0x1a, 0xac, 0x84, 0x8e, 0xfd, 0xaf, 0xf8, 0x67, 0xa5, + 0x5a, 0xb1, 0x5b, 0xb2, 0x4a, 0xb1, 0x93, 0x0e, 0xcd, 0x53, 0x68, 0xe4, 0xc6, 0x60, 0xef, 0x42, + 0x5d, 0x7a, 0xc4, 0x19, 0x97, 0x21, 0xab, 0x69, 0xd5, 0x08, 0x78, 0xc2, 0xcf, 0xd9, 0x0d, 0xa8, + 0xa2, 0x27, 0x20, 0xa9, 0x40, 0xa4, 0x0a, 0x0f, 0x3d, 0x24, 0x64, 0xce, 0x59, 0xbc, 0xd4, 0x39, + 0xcd, 0x7f, 0x2c, 0x40, 0x09, 0xdb, 0x68, 0x48, 0xa1, 0x33, 0xe2, 0x34, 0x7a, 0xdd, 0xa2, 0xff, + 0xec, 0x3a, 0x54, 0xc4, 0xd0, 0xb9, 0xff, 0xe3, 0x87, 0x7a, 0x60, 0xd9, 0x9a, 0x15, 0xa7, 0x78, + 0xb9, 0x38, 0xa5, 0x19, 0x71, 0xfe, 0x6f, 0xdc, 0x7a, 0x0d, 0x6a, 0x6e, 0xe2, 0x3e, 0xfc, 0xf8, + 0x55, 0x94, 0xf4, 0xaa, 0x44, 0xcd, 0xda, 0x28, 0x57, 0x1a, 0xa5, 0x4e, 0x60, 0x9f, 0x4d, 0x04, + 0xf9, 0x64, 0xc9, 0xaa, 0x11, 0xf0, 0x64, 0x42, 0xfb, 0x2f, 0x89, 0xfd, 0xf3, 0x94, 0xbc, 0x92, + 0x46, 0x26, 0x68, 0x07, 0x11, 0xd6, 0x86, 0x82, 0x3b, 0x20, 0x47, 0xaa, 0x5b, 0x05, 0x77, 0x80, + 0x3b, 0x42, 0x9a, 0x6a, 0x10, 0x27, 0xfd, 0xc7, 0x19, 0x5c, 0x3f, 0x1e, 0x62, 0xbc, 0x9d, 0x50, + 0x2c, 0x6c, 0x5a, 0x35, 0x09, 0x1c, 0x4e, 0xcc, 0xaf, 0x0b, 0x50, 0xd3, 0xde, 0xc5, 0xbe, 0x0f, + 0x80, 0xe7, 0x82, 0x2d, 0x35, 0x60, 0x2c, 0xd0, 0x40, 0x7d, 0xa4, 0x78, 0x05, 0x32, 0x7b, 0x4e, + 0xc6, 0x5c, 0x58, 0xc4, 0x8c, 0x74, 0xc9, 0x9c, 0x0b, 0x6c, 0xc5, 0xab, 0x03, 0xdb, 0x6c, 0x1c, + 0x2a, 0xbd, 0x49, 0x1c, 0xca, 0xc2, 0x80, 0xec, 0x53, 0xb9, 0xdc, 0xae, 0x75, 0x6c, 0x90, 0x3d, + 0x75, 0x1c, 0x2a, 0xaf, 0x17, 0x75, 0x1c, 0x32, 0x3f, 0x84, 0xce, 0x9c, 0x87, 0x23, 0x9b, 0x1f, + 0x0e, 0x22, 0x65, 0xc3, 0xf4, 0xdf, 0x7c, 0x0a, 0x70, 0x9c, 0x3a, 0xa9, 0xd8, 0x09, 0x22, 0xf7, + 0x0c, 0xd5, 0x14, 0x0f, 0xcf, 0x85, 0xef, 0x3a, 0x81, 0x3e, 0xd3, 0x8a, 0x16, 0x68, 0xe8, 0xd0, + 0xc3, 0xb3, 0xea, 0x17, 0x22, 0x0a, 0xed, 0x14, 0x7d, 0x5e, 0x19, 0x66, 0x1d, 0x91, 0x13, 0x04, + 0xcc, 0x9f, 0x40, 0x9d, 0x46, 0x23, 0x25, 0x6c, 0x42, 0xa5, 0x8f, 0xa3, 0x6a, 0x05, 0x64, 0xae, + 0x3c, 0x9d, 0xd0, 0x52, 0x1c, 0xe6, 0x5f, 0x19, 0xd0, 0xce, 0x7a, 0x66, 0xc1, 0xf5, 0x8d, 0x7d, + 0xe2, 0x1d, 0xa8, 0xa1, 0x85, 0xd8, 0x3c, 0x74, 0x55, 0x4a, 0x52, 0xc5, 0xf6, 0x7e, 0xe8, 0x66, + 0xa4, 0x28, 0xf1, 0xc9, 0x25, 0x14, 0xe9, 0x45, 0xe2, 0xcf, 0xda, 0x53, 0x79, 0xd6, 0x9e, 0x70, + 0x2b, 0xfc, 0x30, 0xf0, 0x43, 0x6e, 0xa3, 0xf2, 0xc9, 0x17, 0x9a, 0x16, 0x48, 0x68, 0xcf, 0x49, + 0x1d, 0xf3, 0x0f, 0x0a, 0x50, 0x91, 0x3a, 0x47, 0xe3, 0xf5, 0xfa, 0x6a, 0x5b, 0x0b, 0x5e, 0x9f, + 0xad, 0x42, 0x39, 0xbf, 0x41, 0xb2, 0x31, 0xe3, 0x3c, 0xc5, 0xab, 0x9c, 0xa7, 0x74, 0xb5, 0xf3, + 0x94, 0x2f, 0x38, 0xcf, 0xff, 0x83, 0x6e, 0xea, 0x0f, 0x02, 0x47, 0x0c, 0xed, 0x84, 0xc7, 0x81, + 0xef, 0x3a, 0x82, 0x04, 0x6e, 0x59, 0x1d, 0x85, 0x5b, 0x0a, 0x46, 0xd1, 0x04, 0xee, 0x33, 0xb9, + 0x6f, 0xd3, 0x92, 0x0d, 0xf6, 0x13, 0x68, 0xd0, 0x1f, 0x75, 0xfc, 0xd5, 0x48, 0x5f, 0xd7, 0x67, + 0xf4, 0x95, 0x29, 0xc6, 0x02, 0x62, 0xa5, 0xff, 0xe6, 0x33, 0x28, 0x1f, 0xee, 0x3d, 0x73, 0x62, + 0x94, 0x71, 0x1c, 0x8b, 0x34, 0xe1, 0xce, 0x28, 0x67, 0x39, 0x1a, 0x3a, 0xf4, 0x30, 0x00, 0x79, + 0xd1, 0xcb, 0x70, 0xca, 0x52, 0x20, 0x96, 0xe6, 0x14, 0x3c, 0xf4, 0xcc, 0x97, 0xd0, 0xc4, 0x03, + 0x81, 0x8c, 0x09, 0x47, 0x5d, 0x64, 0x03, 0x1f, 0x40, 0xc5, 0xf7, 0xf0, 0x2c, 0x51, 0x29, 0x60, + 0x4b, 0x8b, 0x49, 0x82, 0x58, 0x65, 0xdf, 0xc3, 0x9e, 0xf7, 0x00, 0x62, 0x27, 0x49, 0x7d, 0x3a, + 0xa2, 0x94, 0xab, 0xce, 0x71, 0xe6, 0x18, 0x4c, 0x01, 0xf5, 0xec, 0x24, 0xfa, 0x5f, 0xcc, 0xfa, + 0x03, 0xa8, 0x90, 0xae, 0xf5, 0x8c, 0xab, 0xf9, 0x63, 0x4e, 0xaf, 0xca, 0x52, 0x3c, 0xe6, 0x11, + 0xd4, 0x74, 0x1c, 0xf8, 0x8e, 0x87, 0x8c, 0x8c, 0x9a, 0x45, 0x1d, 0x35, 0xcd, 0x3d, 0x68, 0xef, + 0xaa, 0x04, 0x74, 0x8f, 0x32, 0x5d, 0xcc, 0x1e, 0xdd, 0x71, 0x92, 0xf0, 0x30, 0x55, 0x19, 0xaa, + 0x6e, 0x22, 0x25, 0x91, 0xb5, 0x00, 0x0d, 0x5a, 0xb2, 0x74, 0xd3, 0xfc, 0x67, 0x03, 0xca, 0xb2, + 0x77, 0x17, 0x8a, 0x23, 0x71, 0xaa, 0x36, 0x02, 0xff, 0xb2, 0x1d, 0xe8, 0x4e, 0x93, 0x5e, 0x3b, + 0x9f, 0x63, 0x67, 0xe6, 0x32, 0x2b, 0xc1, 0xc1, 0x52, 0x96, 0xf0, 0x1e, 0x7a, 0x72, 0xd4, 0x2d, + 0xa8, 0x9d, 0x4d, 0x54, 0xdf, 0x12, 0xf5, 0x5d, 0xce, 0xf2, 0x98, 0x27, 0xfc, 0x5c, 0x77, 0xab, + 0x9e, 0x4d, 0x24, 0xff, 0x03, 0x68, 0xca, 0xb4, 0x5e, 0xf5, 0x29, 0x2f, 0xca, 0xe9, 0x0f, 0x96, + 0xac, 0x86, 0xe4, 0xa2, 0xe6, 0x4e, 0x0d, 0x2a, 0x1e, 0x4f, 0x1d, 0x3f, 0x30, 0xff, 0xda, 0x80, + 0x5b, 0xc7, 0x64, 0x61, 0x32, 0x82, 0x9e, 0x38, 0xe2, 0xec, 0x98, 0xbb, 0xe3, 0xc4, 0x4f, 0xcf, + 0x77, 0xa3, 0x70, 0xe0, 0xe3, 0xaa, 0x58, 0x1c, 0x38, 0x7e, 0x98, 0xf2, 0x57, 0x29, 0xf9, 0x7b, + 0xa6, 0x86, 0x5c, 0xd8, 0xda, 0x95, 0xa1, 0x21, 0x1c, 0x44, 0x07, 0x4b, 0x56, 0x37, 0xe3, 0xc7, + 0x60, 0x80, 0xba, 0xd8, 0x87, 0xe5, 0x91, 0x43, 0x1b, 0x73, 0xc6, 0xcf, 0x6d, 0x97, 0x06, 0x56, + 0xc6, 0x92, 0xe5, 0x5c, 0xcf, 0x88, 0xe1, 0x09, 0x57, 0xf3, 0x1e, 0x2c, 0x59, 0x9d, 0xd1, 0x2c, + 0xb4, 0xd3, 0x04, 0x98, 0xd6, 0x89, 0x66, 0x00, 0x30, 0x9d, 0x96, 0xfd, 0x0c, 0x1a, 0x2a, 0x60, + 0xa5, 0xe7, 0x31, 0x57, 0xe5, 0xd3, 0xad, 0xad, 0x99, 0xba, 0x72, 0x3f, 0x6b, 0x3c, 0xe3, 0xe9, + 0x30, 0xf2, 0x2c, 0x90, 0x5d, 0xb0, 0x84, 0xa2, 0x92, 0x45, 0x0e, 0x30, 0xb5, 0x25, 0x15, 0x03, + 0x9f, 0xf0, 0x73, 0xf3, 0x4f, 0x0c, 0xe8, 0xcc, 0x89, 0xc8, 0x3e, 0x85, 0xce, 0x74, 0xfc, 0xb7, + 0x99, 0xb7, 0x3d, 0x25, 0xd3, 0xdc, 0x8f, 0xa0, 0x31, 0xdd, 0x1f, 0x7d, 0xce, 0xde, 0x98, 0x1d, + 0x24, 0x9b, 0xdc, 0x82, 0x6c, 0x5f, 0x84, 0xf9, 0x75, 0x05, 0x5a, 0xb3, 0xe5, 0xee, 0x6b, 0x4a, + 0xaf, 0x19, 0x67, 0x2a, 0x5c, 0xee, 0x4c, 0xc5, 0xab, 0x53, 0xa4, 0xd2, 0xeb, 0x53, 0xa4, 0xf2, + 0x85, 0x14, 0xe9, 0x26, 0x1e, 0xfb, 0x29, 0xb7, 0x03, 0x7f, 0xe4, 0xa7, 0x2a, 0x49, 0xaa, 0x23, + 0xf2, 0x14, 0x01, 0xb6, 0x0e, 0x0d, 0x37, 0x0a, 0xa5, 0x0f, 0xba, 0xe7, 0x94, 0x27, 0xb5, 0xac, + 0x3c, 0xc4, 0x7e, 0x06, 0x1d, 0x91, 0x46, 0x89, 0x73, 0xca, 0x6d, 0xb4, 0x1a, 0x1e, 0x7a, 0x94, + 0x2e, 0xcd, 0xc4, 0x63, 0x22, 0xef, 0x48, 0xaa, 0xd5, 0x16, 0x33, 0xed, 0xd9, 0xe2, 0x08, 0x66, + 0x8b, 0x23, 0x19, 0x30, 0x1a, 0x59, 0x9a, 0x85, 0xee, 0x1c, 0x8d, 0xe2, 0x84, 0x0b, 0x91, 0xa9, + 0xb7, 0x49, 0xea, 0xcd, 0x6c, 0x76, 0x77, 0x4a, 0xa7, 0x32, 0xbc, 0xe3, 0xce, 0x02, 0xec, 0xfb, + 0xb0, 0x9c, 0x1f, 0x23, 0xe0, 0x13, 0x1e, 0x50, 0xa5, 0x59, 0xb6, 0xf2, 0x83, 0x3f, 0x45, 0x9c, + 0x3d, 0xc8, 0x4c, 0x98, 0x52, 0x91, 0xf6, 0x65, 0x2e, 0xa6, 0xcd, 0x96, 0xec, 0xfe, 0x13, 0xe8, + 0x78, 0x22, 0xb5, 0xf3, 0xf5, 0x4f, 0xe7, 0xf2, 0xfa, 0xa7, 0xe5, 0x89, 0x74, 0x7b, 0x5a, 0x02, + 0x7d, 0x04, 0x20, 0xc6, 0x7d, 0x9d, 0x53, 0x75, 0x55, 0xf9, 0x91, 0x8b, 0x37, 0x2a, 0x11, 0x13, + 0xe3, 0xbe, 0x4a, 0xa7, 0xde, 0xc7, 0x78, 0x43, 0xe7, 0xa5, 0x9d, 0x70, 0xc7, 0xa3, 0x72, 0xac, + 0x86, 0xd1, 0x85, 0x30, 0x8b, 0x3b, 0x5e, 0x56, 0xa4, 0xb0, 0xd7, 0x14, 0x29, 0xef, 0x42, 0x7d, + 0x1c, 0xfa, 0xbf, 0x1c, 0x73, 0xb4, 0xd3, 0x15, 0xda, 0xf6, 0x9a, 0x04, 0x0e, 0x3d, 0xac, 0x8a, + 0xdc, 0x88, 0x62, 0x08, 0x15, 0x56, 0x98, 0x1e, 0x6a, 0xb1, 0x76, 0x25, 0x6e, 0x69, 0x86, 0xcf, + 0x4a, 0xb5, 0x4a, 0xb7, 0xaa, 0xea, 0x93, 0xff, 0x2a, 0xc0, 0xea, 0x7c, 0x40, 0xa3, 0x7d, 0xfa, + 0x08, 0xaa, 0xca, 0x16, 0x54, 0xec, 0xba, 0xcc, 0x64, 0x34, 0x1b, 0x65, 0x47, 0x64, 0xf3, 0xa9, + 0xd0, 0xa7, 0x00, 0xb5, 0x4f, 0x04, 0xbb, 0x06, 0xe8, 0x18, 0x48, 0x90, 0xc9, 0x4a, 0x99, 0x87, + 0xde, 0x89, 0xc8, 0x0e, 0xc7, 0x52, 0xee, 0x70, 0x7c, 0x1f, 0x9a, 0x74, 0xa4, 0x61, 0x0a, 0x9d, + 0xf2, 0x84, 0xf2, 0xd0, 0xba, 0xd5, 0x20, 0xec, 0x31, 0x41, 0x0b, 0x0d, 0xad, 0xf2, 0x96, 0x86, + 0xf6, 0x02, 0x3a, 0x42, 0xc5, 0x6d, 0x1d, 0x5f, 0xab, 0xb4, 0xcc, 0xbb, 0xd3, 0x65, 0x5e, 0x15, + 0xe6, 0xad, 0xb6, 0x98, 0x6b, 0xd3, 0xed, 0xcf, 0x38, 0xf6, 0xd0, 0x61, 0x53, 0xa1, 0xab, 0x45, + 0xab, 0x82, 0x19, 0xce, 0x58, 0x98, 0xbf, 0x2e, 0x60, 0x56, 0x3a, 0xe3, 0x5c, 0x26, 0x94, 0xc2, + 0x28, 0x8a, 0xd5, 0xfe, 0x66, 0x65, 0xc2, 0xf3, 0x28, 0x8a, 0x0f, 0x96, 0x2c, 0xa2, 0xb1, 0x0f, + 0xa1, 0x1c, 0x44, 0xae, 0x13, 0xcc, 0xa7, 0x0a, 0x4f, 0x11, 0x3c, 0x58, 0xb2, 0x24, 0x95, 0xbd, + 0x07, 0x05, 0xf1, 0x40, 0x1d, 0x9e, 0x90, 0xad, 0xe0, 0xc1, 0xc1, 0x92, 0x55, 0x10, 0x0f, 0xd8, + 0x6d, 0x28, 0x9e, 0xba, 0x42, 0x9d, 0x8f, 0x0d, 0x4d, 0xfe, 0x74, 0xf7, 0xf8, 0x60, 0xc9, 0x42, + 0x0a, 0xfb, 0x04, 0x5a, 0x6e, 0x10, 0x8d, 0x3d, 0xdb, 0x3b, 0x0f, 0x9d, 0x91, 0xef, 0xaa, 0x63, + 0x71, 0x75, 0x7a, 0x0c, 0x47, 0x63, 0x6f, 0x4f, 0xd2, 0x0e, 0x96, 0xac, 0xa6, 0x9b, 0x6b, 0xe3, + 0x32, 0x86, 0xde, 0x40, 0x66, 0x89, 0xb9, 0x65, 0x1c, 0xec, 0x3d, 0xc6, 0xf1, 0x89, 0xc6, 0x0e, + 0x80, 0x39, 0x5f, 0x8d, 0x13, 0x6e, 0xf7, 0x83, 0xa8, 0x6f, 0x6b, 0xc3, 0x92, 0x3b, 0xde, 0xd3, + 0x3d, 0xb6, 0x91, 0x63, 0x27, 0x88, 0xfa, 0x6a, 0x9f, 0xf0, 0x68, 0x74, 0xe6, 0xb0, 0x9d, 0x3a, + 0x54, 0x55, 0x28, 0x33, 0x2b, 0x50, 0xc2, 0xbd, 0x32, 0xdf, 0x85, 0x32, 0x6d, 0x07, 0xda, 0x13, + 0x1a, 0xb5, 0x4e, 0xb6, 0xc8, 0xc0, 0xff, 0xb8, 0x04, 0x85, 0xe3, 0x07, 0x98, 0x30, 0xf3, 0xd0, + 0x8b, 0x23, 0x5f, 0x25, 0x2f, 0x75, 0x2b, 0x6b, 0x63, 0x25, 0x90, 0xbb, 0x08, 0xac, 0x67, 0x17, + 0x7f, 0xd7, 0xa1, 0xd2, 0x1f, 0xbb, 0x67, 0x3c, 0x55, 0x59, 0x91, 0x6a, 0x21, 0x1e, 0x27, 0x7c, + 0xe0, 0xbf, 0x52, 0x86, 0xab, 0x5a, 0x32, 0xe8, 0xcb, 0x68, 0xeb, 0x06, 0x8e, 0x90, 0xd9, 0x75, + 0x1d, 0x83, 0x3e, 0x81, 0xbb, 0x88, 0x61, 0x1a, 0x24, 0x84, 0xb4, 0xd7, 0xba, 0x85, 0x7f, 0x11, + 0x71, 0xdc, 0x80, 0x36, 0xa3, 0x6e, 0xe1, 0x5f, 0x8c, 0xfb, 0x8e, 0xeb, 0x72, 0x21, 0xe8, 0x64, + 0xa9, 0xc9, 0x5b, 0x3c, 0x89, 0xe0, 0xe1, 0xb2, 0x09, 0xcb, 0x82, 0xbb, 0x09, 0x4f, 0xed, 0x1c, + 0x57, 0x9d, 0xb8, 0x3a, 0x92, 0xb0, 0x9d, 0xf1, 0x6e, 0x40, 0x77, 0x10, 0x25, 0x2e, 0xb7, 0x71, + 0x33, 0x6c, 0x91, 0x9e, 0x07, 0x5c, 0xc5, 0xf1, 0x36, 0xe1, 0x47, 0x4e, 0x3a, 0x3c, 0x46, 0x94, + 0xdd, 0x81, 0xb6, 0x10, 0xdc, 0x3e, 0x1b, 0xd1, 0x78, 0x18, 0x63, 0x64, 0x68, 0x6f, 0x08, 0xc1, + 0x9f, 0x8c, 0x70, 0xb0, 0x43, 0x0f, 0x7d, 0x3c, 0x89, 0x02, 0x6e, 0x3b, 0x89, 0xbc, 0x41, 0xac, + 0x5b, 0x55, 0x6c, 0x6f, 0x27, 0xf2, 0x34, 0x7b, 0x95, 0xf2, 0x24, 0x94, 0xf5, 0x5e, 0x8b, 0xa8, + 0xa0, 0xa1, 0x43, 0x8f, 0x6d, 0xc1, 0x4a, 0xd4, 0xff, 0x05, 0x77, 0x53, 0x1b, 0xeb, 0xb4, 0xec, + 0x1e, 0xa8, 0x4d, 0xd2, 0x2c, 0x4b, 0xd2, 0xd3, 0xc8, 0x3d, 0xd3, 0x97, 0x40, 0xb8, 0x9d, 0xda, + 0xc5, 0xa3, 0x33, 0x2e, 0xe3, 0x34, 0x6e, 0xa7, 0x72, 0x63, 0xc4, 0x50, 0xaf, 0x71, 0x12, 0x4d, + 0x7c, 0x8f, 0x27, 0x74, 0x3f, 0x56, 0xb7, 0xb2, 0x36, 0x66, 0xa5, 0x71, 0x12, 0x61, 0x29, 0xae, + 0x6e, 0xc1, 0x74, 0xd3, 0xfc, 0x95, 0x01, 0xc5, 0x4f, 0x77, 0x8f, 0x5f, 0x67, 0x15, 0x4a, 0xfb, + 0x85, 0x4b, 0xb4, 0x5f, 0xbc, 0x5a, 0xfb, 0xa5, 0x05, 0xda, 0xff, 0x10, 0xda, 0x71, 0xc2, 0x3d, + 0x3e, 0xf0, 0x43, 0xee, 0xd9, 0xa8, 0x76, 0x69, 0x23, 0xad, 0x29, 0xba, 0xed, 0x06, 0x58, 0x84, + 0xb9, 0x08, 0x84, 0xa9, 0xef, 0x04, 0x82, 0x9c, 0x46, 0x59, 0x4c, 0x27, 0x87, 0xa3, 0x5b, 0x98, + 0x23, 0xe8, 0x92, 0xdf, 0xec, 0x8e, 0x45, 0x1a, 0x8d, 0x28, 0xcb, 0xc1, 0x59, 0x72, 0x79, 0x96, + 0x4e, 0x3f, 0xeb, 0x56, 0x6b, 0x8a, 0x22, 0xdb, 0x7d, 0xb8, 0x36, 0xcb, 0x66, 0xe7, 0x0a, 0xe2, + 0xba, 0xb5, 0x32, 0xc3, 0x7d, 0x4c, 0x24, 0x0c, 0x63, 0xdd, 0x79, 0x3f, 0xfd, 0xcd, 0x6f, 0xe3, + 0xfb, 0xd0, 0x74, 0x5c, 0x37, 0x1a, 0x87, 0xa9, 0x4d, 0x07, 0x88, 0xdc, 0xc4, 0x86, 0xc2, 0x9e, + 0xe3, 0x39, 0x72, 0x13, 0x40, 0x0c, 0x9d, 0x84, 0xcb, 0xec, 0x4c, 0x6e, 0x5e, 0x5d, 0x22, 0xb8, + 0xf6, 0xa9, 0x8b, 0x09, 0xff, 0x74, 0xd6, 0xc5, 0x8e, 0xfd, 0x53, 0x54, 0x40, 0x6e, 0x6b, 0x84, + 0x1b, 0xc5, 0x5c, 0x7b, 0xd8, 0x14, 0x3f, 0x46, 0x98, 0xfd, 0xec, 0xc2, 0x66, 0xc3, 0x82, 0xb0, + 0x96, 0x53, 0xcf, 0x9c, 0x1a, 0xcc, 0x3f, 0x32, 0xa0, 0xb2, 0x23, 0x37, 0xe5, 0xcd, 0xa2, 0x54, + 0xf1, 0x92, 0x28, 0x55, 0xba, 0x64, 0x83, 0xcb, 0x57, 0x6f, 0x70, 0xe5, 0xe2, 0x06, 0x63, 0xd9, + 0xd6, 0xcc, 0x07, 0x7d, 0x76, 0x37, 0x9b, 0xc5, 0x50, 0x15, 0x93, 0x4e, 0x53, 0x08, 0xcd, 0x66, + 0xbd, 0x03, 0x2d, 0xed, 0x7f, 0x52, 0x35, 0x52, 0xeb, 0x4d, 0x0d, 0x92, 0x6e, 0x7e, 0x0c, 0x65, + 0x27, 0x4d, 0x13, 0x5d, 0xd9, 0xde, 0x5e, 0x74, 0xcc, 0x6c, 0x6d, 0x23, 0xc7, 0x7e, 0x98, 0x26, + 0xe7, 0x96, 0xe4, 0x5e, 0x7b, 0x04, 0x30, 0x05, 0x31, 0x6c, 0x4e, 0x2d, 0x1b, 0xff, 0xb2, 0x55, + 0x28, 0x4f, 0x9c, 0x60, 0xac, 0xe7, 0x94, 0x8d, 0xdf, 0x2a, 0x3c, 0x32, 0xcc, 0x5b, 0x50, 0xc2, + 0xe3, 0x48, 0xee, 0xe1, 0x28, 0x4a, 0x75, 0x3d, 0xae, 0x5a, 0xe6, 0xdf, 0x1b, 0xd0, 0x9e, 0x7b, + 0x55, 0xba, 0xa3, 0x5f, 0x7d, 0x8c, 0xd9, 0x83, 0x77, 0xe6, 0xd1, 0xe7, 0xbb, 0x15, 0x07, 0x6f, + 0xf2, 0xd6, 0x32, 0x77, 0x45, 0x5f, 0x7e, 0xa3, 0x2b, 0x7a, 0xf3, 0x1e, 0xd6, 0xec, 0xdc, 0x09, + 0xa7, 0xd5, 0xcd, 0x4c, 0xd2, 0x68, 0xcc, 0x26, 0x8d, 0xe6, 0x11, 0x74, 0x32, 0xf6, 0xb7, 0x59, + 0x76, 0x0f, 0xaa, 0x62, 0x4c, 0xbe, 0x42, 0x8b, 0xae, 0x59, 0xba, 0x69, 0x3e, 0x82, 0xb6, 0x7a, + 0x79, 0xd3, 0x02, 0xdc, 0x85, 0x8e, 0x70, 0x26, 0xdc, 0x4e, 0x23, 0x3b, 0x9f, 0x4f, 0xd6, 0xac, + 0x16, 0xc2, 0x27, 0x91, 0x8a, 0x21, 0xe6, 0x5f, 0x1a, 0xd0, 0xc9, 0xba, 0xbe, 0xa5, 0x0e, 0xa6, + 0x2b, 0x2c, 0xcc, 0xa5, 0xc5, 0x3f, 0x00, 0xe6, 0x46, 0x41, 0x80, 0x87, 0x0e, 0x3d, 0x5d, 0x51, + 0x7c, 0x50, 0x49, 0x68, 0x57, 0x51, 0x70, 0xdb, 0x77, 0x11, 0xc7, 0x83, 0x75, 0x86, 0x9b, 0x6e, + 0x8d, 0x65, 0xe5, 0xd6, 0xc9, 0x31, 0x1f, 0xfb, 0x5f, 0x71, 0x73, 0x05, 0x96, 0x77, 0x87, 0xdc, + 0x3d, 0xdb, 0xf6, 0x46, 0x7e, 0xa8, 0x16, 0x6b, 0x7e, 0x6d, 0x00, 0xcb, 0xa3, 0x6f, 0xb3, 0x8e, + 0x37, 0x7d, 0x8e, 0xdc, 0x84, 0xe5, 0xa1, 0x23, 0xec, 0x98, 0x87, 0x9e, 0x1f, 0x9e, 0xda, 0x0e, + 0xce, 0x44, 0x2b, 0xaa, 0x59, 0x9d, 0xa1, 0x23, 0x8e, 0x24, 0x4e, 0x02, 0x98, 0xff, 0x64, 0xc0, + 0xcd, 0x7d, 0x75, 0x02, 0xab, 0x8d, 0xb6, 0x38, 0xaa, 0x21, 0x53, 0xcf, 0x82, 0x0a, 0xd1, 0x78, + 0xab, 0x0a, 0xf1, 0x36, 0x34, 0xd4, 0xa9, 0x9e, 0x73, 0x77, 0x90, 0xd0, 0x73, 0x95, 0xd0, 0x27, + 0x72, 0x4e, 0xc9, 0x21, 0xa3, 0x57, 0x43, 0x61, 0xc4, 0xf2, 0x21, 0xb4, 0xa9, 0x36, 0x09, 0x53, + 0x3b, 0xe0, 0xe1, 0x69, 0x3a, 0x54, 0x9b, 0xde, 0x52, 0xe8, 0x53, 0x02, 0xcd, 0x75, 0xb8, 0x75, + 0xd9, 0x62, 0xe4, 0x46, 0x9b, 0x7f, 0x66, 0xc0, 0xda, 0x1c, 0xcb, 0xb1, 0x33, 0xf9, 0x0d, 0x2e, + 0xf6, 0xe2, 0x4a, 0x8a, 0x8b, 0x56, 0x72, 0x13, 0xde, 0x5d, 0x28, 0xa6, 0x5a, 0xc6, 0x1f, 0xaa, + 0xf7, 0x07, 0xcf, 0x49, 0x1d, 0xb6, 0xa9, 0xa3, 0x85, 0x31, 0x7b, 0x0d, 0xb8, 0xa7, 0xde, 0x11, + 0xa8, 0xc2, 0x55, 0x51, 0xe3, 0x21, 0x34, 0xc8, 0x70, 0x4f, 0x93, 0x68, 0x1c, 0xeb, 0x4b, 0xff, + 0x6b, 0xf3, 0x3d, 0x3e, 0x45, 0xaa, 0x45, 0x6f, 0xb9, 0xf4, 0x57, 0xc8, 0xd2, 0x0d, 0x35, 0x94, + 0xdd, 0xa5, 0x52, 0x55, 0x87, 0x1e, 0x74, 0x1b, 0x50, 0x55, 0x51, 0x30, 0xe1, 0xb9, 0xfa, 0x0d, + 0x34, 0x24, 0x6b, 0xbb, 0x91, 0xf3, 0x0a, 0x69, 0x52, 0x69, 0xe5, 0x91, 0xf3, 0x4a, 0xc1, 0x7e, + 0x88, 0x70, 0x59, 0xc1, 0x7e, 0x78, 0x82, 0x12, 0xd2, 0x87, 0x0c, 0x59, 0x60, 0xab, 0xaa, 0xc0, + 0x96, 0x7b, 0xd3, 0xd4, 0x81, 0xad, 0x31, 0x9a, 0x36, 0xcc, 0x7f, 0x31, 0xa0, 0x35, 0x23, 0xff, + 0xa2, 0x64, 0x9f, 0xfd, 0x14, 0x3a, 0xd3, 0xe7, 0x17, 0x79, 0x2b, 0x50, 0xb8, 0x62, 0xd7, 0x5a, + 0xd9, 0x5b, 0x0c, 0x95, 0xbc, 0x53, 0x91, 0x8b, 0x79, 0x91, 0x2f, 0x59, 0xe0, 0x5d, 0xe8, 0x20, + 0x77, 0x7e, 0x73, 0xe4, 0x4a, 0x5b, 0xd2, 0xf5, 0xf5, 0xfe, 0x5c, 0x87, 0x8a, 0x32, 0x05, 0xf9, + 0x06, 0xa6, 0x5a, 0xe6, 0x3f, 0x54, 0xa0, 0x99, 0x97, 0x26, 0xf7, 0x20, 0x61, 0xcc, 0x3c, 0x48, + 0xe8, 0x85, 0x16, 0x72, 0x0b, 0xdd, 0x84, 0xe5, 0x70, 0x3c, 0xea, 0xf3, 0xc4, 0x8e, 0x06, 0x36, + 0x0f, 0xd3, 0xc4, 0xe7, 0x52, 0xea, 0xa2, 0xd5, 0x91, 0x84, 0x17, 0x83, 0x7d, 0x09, 0xe7, 0x96, + 0x55, 0x5a, 0xbc, 0xac, 0x72, 0x7e, 0x59, 0x73, 0xfa, 0xae, 0x5c, 0xd0, 0xf7, 0xbb, 0x50, 0x57, + 0x37, 0xa8, 0xbe, 0x47, 0xea, 0x2b, 0x5a, 0x35, 0x09, 0xcc, 0xdf, 0x96, 0xd5, 0x2e, 0x3f, 0x10, + 0xeb, 0x0b, 0xae, 0x9e, 0xa7, 0x0f, 0x76, 0x1f, 0x40, 0x89, 0x8a, 0xfa, 0x06, 0x19, 0x47, 0x37, + 0x7f, 0x3e, 0x52, 0x35, 0x4f, 0x54, 0x1c, 0xce, 0x17, 0x36, 0x1a, 0x09, 0x95, 0x22, 0x35, 0xab, + 0xe2, 0x0b, 0xfa, 0x98, 0xe2, 0x1d, 0xa8, 0xc9, 0x2b, 0x04, 0x55, 0x86, 0x14, 0xad, 0x2a, 0xb5, + 0x0f, 0xbd, 0x9c, 0x32, 0xda, 0x79, 0x65, 0xb0, 0xff, 0x0f, 0x6b, 0xb8, 0x47, 0x7d, 0x7e, 0x4a, + 0x3b, 0x65, 0xfb, 0xa1, 0xed, 0xf1, 0x81, 0x33, 0x0e, 0x52, 0xdb, 0x1d, 0x50, 0xe1, 0x51, 0xb2, + 0xae, 0x8d, 0xfc, 0x70, 0x07, 0x19, 0x4e, 0xc4, 0x61, 0xb8, 0x27, 0xa9, 0xbb, 0x03, 0x8a, 0x6f, + 0xf4, 0xdc, 0x1f, 0x0d, 0x06, 0x82, 0xa7, 0x54, 0x85, 0x94, 0xac, 0x06, 0x61, 0x2f, 0x08, 0x9a, + 0xb2, 0xa8, 0xb9, 0x97, 0x73, 0x2c, 0x32, 0x22, 0x2c, 0xbc, 0xd3, 0x60, 0x6f, 0x79, 0xa7, 0x91, + 0x7f, 0x14, 0x5a, 0x99, 0x7b, 0x14, 0xda, 0x80, 0xae, 0xd2, 0xda, 0x54, 0x3f, 0xab, 0xa4, 0x84, + 0xb6, 0xc4, 0x8f, 0xb5, 0x96, 0x3e, 0x80, 0xb6, 0xbe, 0x21, 0x57, 0xca, 0xba, 0x46, 0x7c, 0xea, + 0xde, 0x7c, 0x5f, 0xaa, 0xec, 0xe1, 0xf4, 0x1e, 0x3d, 0x8e, 0xdc, 0xa1, 0x7a, 0x8a, 0x5f, 0x99, + 0x3d, 0xb3, 0xf6, 0x91, 0x94, 0x5d, 0xa5, 0x63, 0x83, 0x59, 0xb0, 0x4a, 0x11, 0x2a, 0x97, 0x32, + 0x93, 0x9b, 0xde, 0xa0, 0x38, 0xbc, 0x3e, 0x7b, 0x85, 0x8b, 0x0a, 0x9f, 0xde, 0x05, 0x93, 0xcb, + 0xb2, 0xc1, 0x05, 0xcc, 0xfc, 0xc6, 0x80, 0xe5, 0xfc, 0x6d, 0xcd, 0xbe, 0xce, 0x0b, 0x86, 0x4e, + 0x1c, 0xf3, 0xd0, 0x76, 0xf4, 0x7b, 0x45, 0x4d, 0x02, 0xdb, 0x74, 0xe9, 0x4b, 0xa7, 0xae, 0xed, + 0x46, 0x9e, 0x8e, 0xe3, 0x75, 0x42, 0x76, 0x23, 0x0f, 0x0f, 0x6c, 0xf9, 0xf5, 0x95, 0x3d, 0xe2, + 0x42, 0x60, 0xca, 0x22, 0x0f, 0xad, 0x26, 0x81, 0xcf, 0x24, 0x36, 0x13, 0x34, 0xf5, 0x6b, 0xa0, + 0x0c, 0x9a, 0xe6, 0x43, 0x28, 0x1d, 0xc7, 0x0e, 0xe5, 0xe6, 0xca, 0x2a, 0xa4, 0x00, 0xaa, 0x95, + 0x33, 0xc3, 0xc2, 0x4c, 0x4c, 0xd8, 0x87, 0x06, 0xf6, 0x13, 0x2f, 0x06, 0xfa, 0x29, 0xff, 0x42, + 0x88, 0x33, 0xa1, 0x2c, 0x90, 0x65, 0xfe, 0x71, 0x19, 0xfb, 0x59, 0x92, 0x64, 0x7e, 0x53, 0x84, + 0xde, 0xd3, 0xe8, 0x94, 0x72, 0x95, 0x71, 0x1f, 0xcd, 0xc4, 0x71, 0xd5, 0x6d, 0xba, 0x93, 0xbd, + 0x86, 0x1b, 0xb3, 0xaf, 0xe1, 0x53, 0x9f, 0x96, 0x22, 0x4d, 0x7d, 0x7a, 0xee, 0x61, 0x88, 0xad, + 0x43, 0xd3, 0x0f, 0xe3, 0x71, 0x6a, 0xcf, 0x44, 0x45, 0x20, 0xec, 0x19, 0xc5, 0x90, 0x29, 0x47, + 0xfe, 0x04, 0x50, 0x1c, 0x14, 0x7c, 0xee, 0x42, 0x47, 0x89, 0x65, 0x0f, 0x92, 0x68, 0x34, 0x8d, + 0x34, 0x2d, 0x05, 0x3f, 0x4e, 0xa2, 0xd1, 0x09, 0x7d, 0x27, 0xa6, 0xf9, 0xc6, 0x61, 0xea, 0x07, + 0xb6, 0x7a, 0x6d, 0x2c, 0x59, 0x6d, 0x85, 0x7f, 0x8e, 0xf0, 0x89, 0xc0, 0x68, 0x80, 0xb3, 0x4d, + 0xe3, 0x0e, 0x06, 0x3d, 0x15, 0x75, 0x50, 0xd0, 0x5c, 0xd4, 0x19, 0x39, 0xaf, 0x90, 0xb0, 0x4e, + 0xdf, 0x8d, 0xc1, 0x25, 0x31, 0xa6, 0x90, 0x9e, 0xcf, 0x04, 0x92, 0xc6, 0x6c, 0x20, 0xb9, 0x07, + 0x55, 0x11, 0x8d, 0x13, 0x97, 0x8b, 0x5e, 0x73, 0xf6, 0x69, 0x3d, 0xa7, 0x40, 0x4b, 0xf3, 0x98, + 0xbf, 0x0f, 0xab, 0x8b, 0x14, 0xc2, 0x3e, 0x86, 0x12, 0x05, 0x30, 0x43, 0x99, 0x7f, 0x76, 0xbb, + 0xb7, 0x58, 0x79, 0x16, 0x71, 0xb3, 0x7b, 0xd0, 0x10, 0x22, 0xb5, 0xa3, 0x71, 0x1a, 0x8f, 0xd3, + 0xc5, 0x9f, 0x19, 0x80, 0x10, 0xe9, 0x0b, 0x49, 0x37, 0x7f, 0x0f, 0xae, 0x2d, 0x1a, 0x50, 0xb0, + 0x3d, 0x68, 0x8b, 0x19, 0x44, 0xe5, 0x18, 0xef, 0x5d, 0x25, 0x87, 0x35, 0xd7, 0xc7, 0xfc, 0xa6, + 0x00, 0xcb, 0x8a, 0x71, 0x77, 0xba, 0x32, 0xca, 0xbc, 0x75, 0x2b, 0x53, 0xb2, 0xa1, 0x33, 0x6f, + 0x4d, 0x51, 0x7a, 0xde, 0x82, 0x95, 0x1c, 0x77, 0xa6, 0x6a, 0x69, 0x8a, 0xcb, 0x53, 0x92, 0xd6, + 0xb6, 0xbe, 0x39, 0x2e, 0xe6, 0x6e, 0x8e, 0x31, 0xfc, 0x45, 0xa3, 0x11, 0x0f, 0x53, 0x7d, 0x69, + 0x90, 0xb5, 0xd9, 0x7b, 0x50, 0x77, 0x92, 0xd4, 0x1f, 0x38, 0x6e, 0xaa, 0xaf, 0xe5, 0xa6, 0x00, + 0x66, 0x6d, 0x59, 0xc3, 0x1e, 0x3a, 0x42, 0x1f, 0xd5, 0xad, 0x0c, 0x3d, 0x70, 0xc4, 0x90, 0x7d, + 0x0f, 0x3a, 0xa7, 0x3c, 0xe4, 0x89, 0x93, 0x72, 0x4f, 0x7d, 0xe1, 0x21, 0x2f, 0xed, 0xda, 0x19, + 0x4c, 0xc9, 0x84, 0xf9, 0x77, 0x86, 0xcc, 0xdf, 0xf6, 0x3d, 0x3f, 0x5d, 0xe8, 0xc4, 0xf7, 0xe1, + 0x9a, 0xc7, 0x03, 0x9e, 0x72, 0x3b, 0xfb, 0x44, 0x62, 0xfa, 0xc5, 0x48, 0xdd, 0x5a, 0x91, 0xc4, + 0x23, 0x45, 0x93, 0x5f, 0x8b, 0x3c, 0x81, 0x55, 0xd5, 0x27, 0x88, 0x4e, 0x73, 0x5d, 0x64, 0x0d, + 0xfd, 0x4e, 0x96, 0xe0, 0x10, 0x4f, 0xde, 0x08, 0x99, 0xec, 0xf6, 0x54, 0xf6, 0x92, 0x83, 0xdd, + 0x81, 0x96, 0xc7, 0x45, 0x9a, 0x8c, 0xdd, 0xd4, 0x16, 0x3c, 0x18, 0xa8, 0xef, 0x14, 0x9b, 0x1a, + 0x3c, 0xe6, 0xc1, 0xc0, 0x7c, 0x09, 0xcb, 0x17, 0x46, 0xfb, 0xae, 0x31, 0x09, 0x33, 0x96, 0x97, + 0xc3, 0x48, 0xde, 0xeb, 0xf3, 0xd9, 0xe4, 0xb8, 0x43, 0x04, 0x1c, 0x5d, 0xa5, 0xc7, 0x7f, 0x6b, + 0x40, 0xfd, 0x99, 0x7f, 0x9a, 0xd0, 0x47, 0x61, 0xec, 0x1e, 0xd4, 0xb9, 0xe7, 0xa7, 0xb6, 0x72, + 0x94, 0xe2, 0xfc, 0x37, 0x70, 0xb8, 0xcb, 0x56, 0x0d, 0x59, 0x28, 0xbe, 0xbd, 0x0f, 0xcd, 0x34, + 0x19, 0x87, 0x2e, 0x69, 0x29, 0x8d, 0x94, 0x0d, 0x35, 0x32, 0xec, 0x24, 0x62, 0x9f, 0x40, 0x23, + 0x6f, 0xf4, 0x73, 0x3b, 0x78, 0xc1, 0x96, 0xad, 0x3c, 0x37, 0x5a, 0x41, 0xb6, 0x75, 0xd9, 0x35, + 0x30, 0x6a, 0xad, 0xad, 0xe1, 0x23, 0x42, 0x37, 0x9f, 0xc3, 0xfa, 0xeb, 0xbe, 0x9a, 0x65, 0x1d, + 0x68, 0x7c, 0x4e, 0x4f, 0x06, 0xf4, 0x71, 0x68, 0x77, 0x89, 0xb5, 0xa0, 0xfe, 0x73, 0xc7, 0x4f, + 0xb7, 0xe3, 0x38, 0x38, 0xef, 0x1a, 0x0c, 0xa0, 0xf2, 0xd8, 0x0f, 0x7d, 0x31, 0xec, 0x16, 0x36, + 0x3f, 0x83, 0x5b, 0x57, 0x7f, 0xd5, 0xca, 0x96, 0xa1, 0x95, 0x75, 0xde, 0x8b, 0x42, 0x1c, 0xef, + 0x1a, 0x2c, 0xe7, 0x26, 0x90, 0xdf, 0xff, 0x75, 0x8d, 0xcd, 0xdf, 0x86, 0xce, 0x5c, 0x3a, 0xc1, + 0x1a, 0x50, 0xfd, 0xfc, 0xf9, 0x93, 0xe7, 0x2f, 0x7e, 0xfe, 0xbc, 0xbb, 0xc4, 0xaa, 0x50, 0x7c, + 0xfa, 0xe5, 0xc7, 0x52, 0x80, 0xe3, 0xe7, 0xdb, 0x47, 0x47, 0xbf, 0xdb, 0x2d, 0xb0, 0x1a, 0x94, + 0xbe, 0x3c, 0x3e, 0xd9, 0xeb, 0x16, 0x37, 0xd7, 0xb3, 0x8f, 0x57, 0xf1, 0xb4, 0xac, 0x41, 0xe9, + 0x78, 0x77, 0x1b, 0xbb, 0xd5, 0xa0, 0xf4, 0xf8, 0xf0, 0xe9, 0x7e, 0xd7, 0xd8, 0xbc, 0x09, 0x8d, + 0x5c, 0x2e, 0xcf, 0x2a, 0x50, 0xf8, 0xe2, 0x47, 0xdd, 0x25, 0xfa, 0xbd, 0xdf, 0x35, 0x36, 0x6f, + 0x43, 0x4d, 0x47, 0x5a, 0x9c, 0x42, 0x9a, 0x99, 0x9c, 0xf7, 0x68, 0x9c, 0x76, 0x8d, 0xfb, 0xff, + 0x5d, 0x80, 0x8a, 0x9c, 0x82, 0x7d, 0x02, 0xea, 0x0b, 0x69, 0x76, 0x6d, 0xee, 0xf3, 0x25, 0xb9, + 0x91, 0x6b, 0xd7, 0xe7, 0x61, 0x55, 0x46, 0x2d, 0x7d, 0x64, 0xb0, 0x23, 0x58, 0xa1, 0x82, 0x3c, + 0x5f, 0x16, 0xbf, 0x88, 0x59, 0xa6, 0xec, 0x0b, 0x35, 0xfc, 0xda, 0xda, 0x22, 0x52, 0x6e, 0xc4, + 0x21, 0x5c, 0x5b, 0xa8, 0x06, 0xf6, 0xc1, 0x9b, 0x7c, 0x2b, 0xbd, 0xf6, 0xe1, 0x6b, 0xb8, 0xe4, + 0x4c, 0x1b, 0xc6, 0x47, 0x06, 0xfb, 0x29, 0x54, 0x63, 0xc9, 0xc4, 0xae, 0xcf, 0xf5, 0xd2, 0xa3, + 0xdd, 0xb8, 0x80, 0x6b, 0x49, 0xb1, 0xb7, 0x2b, 0x2f, 0x77, 0x58, 0xee, 0x73, 0x8a, 0xfc, 0xe5, + 0xd0, 0xb4, 0xf7, 0xdc, 0x2d, 0x90, 0xb9, 0x74, 0xff, 0x6f, 0x0c, 0xe8, 0xcc, 0x95, 0xa8, 0xec, + 0x4b, 0xa8, 0xaa, 0xaa, 0x9d, 0x65, 0xab, 0xb8, 0xf2, 0x76, 0x61, 0xed, 0xee, 0xeb, 0xd8, 0x32, + 0x69, 0x7f, 0x07, 0x4a, 0xc2, 0x99, 0x70, 0x66, 0x5e, 0xd2, 0x23, 0x57, 0xc6, 0xaf, 0xdd, 0xb9, + 0x92, 0x47, 0x0f, 0xb9, 0x73, 0xf7, 0xdf, 0xfe, 0xbc, 0x66, 0xfc, 0xea, 0xdb, 0x5b, 0xc6, 0xaf, + 0xbf, 0xbd, 0x65, 0xfc, 0xfb, 0xb7, 0xb7, 0x8c, 0x3f, 0xfd, 0x8f, 0x5b, 0x4b, 0xd0, 0x8d, 0x92, + 0xd3, 0xad, 0xd4, 0x3f, 0x9b, 0x6c, 0x9d, 0x4d, 0xe8, 0x83, 0xf8, 0x7e, 0x85, 0x7e, 0x1e, 0xfc, + 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, 0xaf, 0x80, 0x9a, 0x94, 0x2f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6792,6 +6967,84 @@ func (m *Error_RegionError) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *StreamBackupTaskSecurityConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StreamBackupTaskSecurityConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StreamBackupTaskSecurityConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Encryption != nil { + { + size := m.Encryption.Size() + i -= size + if _, err := m.Encryption.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *StreamBackupTaskSecurityConfig_PlaintextDataKey) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StreamBackupTaskSecurityConfig_PlaintextDataKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.PlaintextDataKey != nil { + { + size, err := m.PlaintextDataKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *StreamBackupTaskSecurityConfig_MasterKeyConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StreamBackupTaskSecurityConfig_MasterKeyConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.MasterKeyConfig != nil { + { + size, err := m.MasterKeyConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} func (m *CipherInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6831,7 +7084,7 @@ func (m *CipherInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *BackupRequest) Marshal() (dAtA []byte, err error) { +func (m *MasterKeyConfig) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -6841,12 +7094,12 @@ func (m *BackupRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *BackupRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *MasterKeyConfig) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *BackupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MasterKeyConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -6855,21 +7108,67 @@ func (m *BackupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if m.Context != nil { - { - size, err := m.Context.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.MasterKeys) > 0 { + for iNdEx := len(m.MasterKeys) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MasterKeys[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintBrpb(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 } + } + if m.EncryptionType != 0 { + i = encodeVarintBrpb(dAtA, i, uint64(m.EncryptionType)) i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xa2 + dAtA[i] = 0x8 } - if len(m.UniqueId) > 0 { + return len(dAtA) - i, nil +} + +func (m *BackupRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BackupRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BackupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Context != nil { + { + size, err := m.Context.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + if len(m.UniqueId) > 0 { i -= len(m.UniqueId) copy(dAtA[i:], m.UniqueId) i = encodeVarintBrpb(dAtA, i, uint64(len(m.UniqueId))) @@ -7035,6 +7334,18 @@ func (m *StreamBackupTaskInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.SecurityConfig != nil { + { + size, err := m.SecurityConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } if m.CompressionType != 0 { i = encodeVarintBrpb(dAtA, i, uint64(m.CompressionType)) i-- @@ -8518,6 +8829,20 @@ func (m *DataFileInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.FileEncryptionInfo != nil { + { + size, err := m.FileEncryptionInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBrpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } if len(m.RegionEpoch) > 0 { for iNdEx := len(m.RegionEpoch) - 1; iNdEx >= 0; iNdEx-- { { @@ -9860,6 +10185,45 @@ func (m *Error_RegionError) Size() (n int) { } return n } +func (m *StreamBackupTaskSecurityConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Encryption != nil { + n += m.Encryption.Size() + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *StreamBackupTaskSecurityConfig_PlaintextDataKey) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PlaintextDataKey != nil { + l = m.PlaintextDataKey.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + return n +} +func (m *StreamBackupTaskSecurityConfig_MasterKeyConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.MasterKeyConfig != nil { + l = m.MasterKeyConfig.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + return n +} func (m *CipherInfo) Size() (n int) { if m == nil { return 0 @@ -9879,6 +10243,27 @@ func (m *CipherInfo) Size() (n int) { return n } +func (m *MasterKeyConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.EncryptionType != 0 { + n += 1 + sovBrpb(uint64(m.EncryptionType)) + } + if len(m.MasterKeys) > 0 { + for _, e := range m.MasterKeys { + l = e.Size() + n += 1 + l + sovBrpb(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *BackupRequest) Size() (n int) { if m == nil { return 0 @@ -9987,6 +10372,10 @@ func (m *StreamBackupTaskInfo) Size() (n int) { if m.CompressionType != 0 { n += 1 + sovBrpb(uint64(m.CompressionType)) } + if m.SecurityConfig != nil { + l = m.SecurityConfig.Size() + n += 1 + l + sovBrpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -10751,6 +11140,10 @@ func (m *DataFileInfo) Size() (n int) { n += 2 + l + sovBrpb(uint64(l)) } } + if m.FileEncryptionInfo != nil { + l = m.FileEncryptionInfo.Size() + n += 2 + l + sovBrpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -14110,18 +14503,295 @@ func (m *RawRange) Unmarshal(dAtA []byte) error { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cf = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipBrpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBrpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterIDError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterIDError: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterIDError: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Current", wireType) + } + m.Current = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Current |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + } + m.Request = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Request |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipBrpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBrpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Error) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Msg = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterIdError", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ClusterIDError{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Detail = &Error_ClusterIdError{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KvError", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &kvrpcpb.KeyError{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Detail = &Error_KvError{v} + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RegionError", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthBrpb } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthBrpb } if postIndex > l { return io.ErrUnexpectedEOF } - m.Cf = string(dAtA[iNdEx:postIndex]) + v := &errorpb.Error{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Detail = &Error_RegionError{v} iNdEx = postIndex default: iNdEx = preIndex @@ -14145,7 +14815,7 @@ func (m *RawRange) Unmarshal(dAtA []byte) error { } return nil } -func (m *ClusterIDError) Unmarshal(dAtA []byte) error { +func (m *StreamBackupTaskSecurityConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14168,17 +14838,17 @@ func (m *ClusterIDError) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ClusterIDError: wiretype end group for non-group") + return fmt.Errorf("proto: StreamBackupTaskSecurityConfig: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ClusterIDError: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: StreamBackupTaskSecurityConfig: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Current", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PlaintextDataKey", wireType) } - m.Current = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14188,16 +14858,32 @@ func (m *ClusterIDError) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Current |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &CipherInfo{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Encryption = &StreamBackupTaskSecurityConfig_PlaintextDataKey{v} + iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MasterKeyConfig", wireType) } - m.Request = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14207,11 +14893,27 @@ func (m *ClusterIDError) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Request |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &MasterKeyConfig{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Encryption = &StreamBackupTaskSecurityConfig_MasterKeyConfig{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) @@ -14234,7 +14936,7 @@ func (m *ClusterIDError) Unmarshal(dAtA []byte) error { } return nil } -func (m *Error) Unmarshal(dAtA []byte) error { +func (m *CipherInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14257,84 +14959,17 @@ func (m *Error) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Error: wiretype end group for non-group") + return fmt.Errorf("proto: CipherInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CipherInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBrpb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthBrpb - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthBrpb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Msg = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterIdError", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBrpb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthBrpb - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthBrpb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &ClusterIDError{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Detail = &Error_ClusterIdError{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KvError", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CipherType", wireType) } - var msglen int + m.CipherType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14344,32 +14979,16 @@ func (m *Error) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.CipherType |= encryptionpb.EncryptionMethod(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthBrpb - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthBrpb - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &kvrpcpb.KeyError{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Detail = &Error_KvError{v} - iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RegionError", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CipherKey", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14379,26 +14998,25 @@ func (m *Error) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthBrpb } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex < 0 { return ErrInvalidLengthBrpb } if postIndex > l { return io.ErrUnexpectedEOF } - v := &errorpb.Error{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.CipherKey = append(m.CipherKey[:0], dAtA[iNdEx:postIndex]...) + if m.CipherKey == nil { + m.CipherKey = []byte{} } - m.Detail = &Error_RegionError{v} iNdEx = postIndex default: iNdEx = preIndex @@ -14422,7 +15040,7 @@ func (m *Error) Unmarshal(dAtA []byte) error { } return nil } -func (m *CipherInfo) Unmarshal(dAtA []byte) error { +func (m *MasterKeyConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14445,17 +15063,17 @@ func (m *CipherInfo) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CipherInfo: wiretype end group for non-group") + return fmt.Errorf("proto: MasterKeyConfig: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CipherInfo: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MasterKeyConfig: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CipherType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EncryptionType", wireType) } - m.CipherType = 0 + m.EncryptionType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14465,16 +15083,16 @@ func (m *CipherInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CipherType |= encryptionpb.EncryptionMethod(b&0x7F) << shift + m.EncryptionType |= encryptionpb.EncryptionMethod(b&0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CipherKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MasterKeys", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowBrpb @@ -14484,24 +15102,24 @@ func (m *CipherInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthBrpb } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthBrpb } if postIndex > l { return io.ErrUnexpectedEOF } - m.CipherKey = append(m.CipherKey[:0], dAtA[iNdEx:postIndex]...) - if m.CipherKey == nil { - m.CipherKey = []byte{} + m.MasterKeys = append(m.MasterKeys, &encryptionpb.MasterKey{}) + if err := m.MasterKeys[len(m.MasterKeys)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex default: @@ -15248,6 +15866,42 @@ func (m *StreamBackupTaskInfo) Unmarshal(dAtA []byte) error { break } } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityConfig == nil { + m.SecurityConfig = &StreamBackupTaskSecurityConfig{} + } + if err := m.SecurityConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) @@ -19713,6 +20367,42 @@ func (m *DataFileInfo) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FileEncryptionInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBrpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBrpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBrpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FileEncryptionInfo == nil { + m.FileEncryptionInfo = &encryptionpb.FileEncryptionInfo{} + } + if err := m.FileEncryptionInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipBrpb(dAtA[iNdEx:]) diff --git a/pkg/encryptionpb/encryptionpb.pb.go b/pkg/encryptionpb/encryptionpb.pb.go index 24ab078e2..6f05c8956 100644 --- a/pkg/encryptionpb/encryptionpb.pb.go +++ b/pkg/encryptionpb/encryptionpb.pb.go @@ -569,7 +569,11 @@ type MasterKeyKms struct { // KMS region. Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` // KMS endpoint. Normally not needed. - Endpoint string `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + // optional, used to set up azure master key backend + AzureKms *AzureKms `protobuf:"bytes,5,opt,name=azure_kms,json=azureKms,proto3" json:"azure_kms,omitempty"` + // optional, used to set up gcp master key backend + GcpKms *GcpKms `protobuf:"bytes,6,opt,name=gcp_kms,json=gcpKms,proto3" json:"gcp_kms,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -636,6 +640,180 @@ func (m *MasterKeyKms) GetEndpoint() string { return "" } +func (m *MasterKeyKms) GetAzureKms() *AzureKms { + if m != nil { + return m.AzureKms + } + return nil +} + +func (m *MasterKeyKms) GetGcpKms() *GcpKms { + if m != nil { + return m.GcpKms + } + return nil +} + +type AzureKms struct { + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + // Key vault to encrypt/decrypt data key. + KeyVaultUrl string `protobuf:"bytes,4,opt,name=key_vault_url,json=keyVaultUrl,proto3" json:"key_vault_url,omitempty"` + // optional hsm used to generate data key + HsmName string `protobuf:"bytes,5,opt,name=hsm_name,json=hsmName,proto3" json:"hsm_name,omitempty"` + HsmUrl string `protobuf:"bytes,6,opt,name=hsm_url,json=hsmUrl,proto3" json:"hsm_url,omitempty"` + ClientCertificate string `protobuf:"bytes,7,opt,name=client_certificate,json=clientCertificate,proto3" json:"client_certificate,omitempty"` + ClientCertificatePath string `protobuf:"bytes,8,opt,name=client_certificate_path,json=clientCertificatePath,proto3" json:"client_certificate_path,omitempty"` + ClientCertificatePassword string `protobuf:"bytes,9,opt,name=client_certificate_password,json=clientCertificatePassword,proto3" json:"client_certificate_password,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AzureKms) Reset() { *m = AzureKms{} } +func (m *AzureKms) String() string { return proto.CompactTextString(m) } +func (*AzureKms) ProtoMessage() {} +func (*AzureKms) Descriptor() ([]byte, []int) { + return fileDescriptor_a483860494a778a2, []int{9} +} +func (m *AzureKms) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AzureKms) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AzureKms.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AzureKms) XXX_Merge(src proto.Message) { + xxx_messageInfo_AzureKms.Merge(m, src) +} +func (m *AzureKms) XXX_Size() int { + return m.Size() +} +func (m *AzureKms) XXX_DiscardUnknown() { + xxx_messageInfo_AzureKms.DiscardUnknown(m) +} + +var xxx_messageInfo_AzureKms proto.InternalMessageInfo + +func (m *AzureKms) GetTenantId() string { + if m != nil { + return m.TenantId + } + return "" +} + +func (m *AzureKms) GetClientId() string { + if m != nil { + return m.ClientId + } + return "" +} + +func (m *AzureKms) GetClientSecret() string { + if m != nil { + return m.ClientSecret + } + return "" +} + +func (m *AzureKms) GetKeyVaultUrl() string { + if m != nil { + return m.KeyVaultUrl + } + return "" +} + +func (m *AzureKms) GetHsmName() string { + if m != nil { + return m.HsmName + } + return "" +} + +func (m *AzureKms) GetHsmUrl() string { + if m != nil { + return m.HsmUrl + } + return "" +} + +func (m *AzureKms) GetClientCertificate() string { + if m != nil { + return m.ClientCertificate + } + return "" +} + +func (m *AzureKms) GetClientCertificatePath() string { + if m != nil { + return m.ClientCertificatePath + } + return "" +} + +func (m *AzureKms) GetClientCertificatePassword() string { + if m != nil { + return m.ClientCertificatePassword + } + return "" +} + +type GcpKms struct { + Credential string `protobuf:"bytes,1,opt,name=credential,proto3" json:"credential,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GcpKms) Reset() { *m = GcpKms{} } +func (m *GcpKms) String() string { return proto.CompactTextString(m) } +func (*GcpKms) ProtoMessage() {} +func (*GcpKms) Descriptor() ([]byte, []int) { + return fileDescriptor_a483860494a778a2, []int{10} +} +func (m *GcpKms) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GcpKms) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GcpKms.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GcpKms) XXX_Merge(src proto.Message) { + xxx_messageInfo_GcpKms.Merge(m, src) +} +func (m *GcpKms) XXX_Size() int { + return m.Size() +} +func (m *GcpKms) XXX_DiscardUnknown() { + xxx_messageInfo_GcpKms.DiscardUnknown(m) +} + +var xxx_messageInfo_GcpKms proto.InternalMessageInfo + +func (m *GcpKms) GetCredential() string { + if m != nil { + return m.Credential + } + return "" +} + type EncryptedContent struct { // Metadata of the encrypted content. // Eg. IV, method and KMS key ID @@ -659,7 +837,7 @@ func (m *EncryptedContent) Reset() { *m = EncryptedContent{} } func (m *EncryptedContent) String() string { return proto.CompactTextString(m) } func (*EncryptedContent) ProtoMessage() {} func (*EncryptedContent) Descriptor() ([]byte, []int) { - return fileDescriptor_a483860494a778a2, []int{9} + return fileDescriptor_a483860494a778a2, []int{11} } func (m *EncryptedContent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -723,6 +901,210 @@ func (m *EncryptedContent) GetCiphertextKey() []byte { return nil } +type FileEncryptionInfo struct { + // Types that are valid to be assigned to Mode: + // *FileEncryptionInfo_PlainTextDataKey + // *FileEncryptionInfo_MasterKeyBased + Mode isFileEncryptionInfo_Mode `protobuf_oneof:"mode"` + // file encryption method + EncryptionMethod EncryptionMethod `protobuf:"varint,3,opt,name=encryption_method,json=encryptionMethod,proto3,enum=encryptionpb.EncryptionMethod" json:"encryption_method,omitempty"` + // iv to encrypt the file by data key + FileIv []byte `protobuf:"bytes,4,opt,name=file_iv,json=fileIv,proto3" json:"file_iv,omitempty"` + // file checksum after encryption, optional if using GCM + Checksum []byte `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *FileEncryptionInfo) Reset() { *m = FileEncryptionInfo{} } +func (m *FileEncryptionInfo) String() string { return proto.CompactTextString(m) } +func (*FileEncryptionInfo) ProtoMessage() {} +func (*FileEncryptionInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_a483860494a778a2, []int{12} +} +func (m *FileEncryptionInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FileEncryptionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FileEncryptionInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *FileEncryptionInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileEncryptionInfo.Merge(m, src) +} +func (m *FileEncryptionInfo) XXX_Size() int { + return m.Size() +} +func (m *FileEncryptionInfo) XXX_DiscardUnknown() { + xxx_messageInfo_FileEncryptionInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_FileEncryptionInfo proto.InternalMessageInfo + +type isFileEncryptionInfo_Mode interface { + isFileEncryptionInfo_Mode() + MarshalTo([]byte) (int, error) + Size() int +} + +type FileEncryptionInfo_PlainTextDataKey struct { + PlainTextDataKey *PlainTextDataKey `protobuf:"bytes,1,opt,name=plain_text_data_key,json=plainTextDataKey,proto3,oneof" json:"plain_text_data_key,omitempty"` +} +type FileEncryptionInfo_MasterKeyBased struct { + MasterKeyBased *MasterKeyBased `protobuf:"bytes,2,opt,name=master_key_based,json=masterKeyBased,proto3,oneof" json:"master_key_based,omitempty"` +} + +func (*FileEncryptionInfo_PlainTextDataKey) isFileEncryptionInfo_Mode() {} +func (*FileEncryptionInfo_MasterKeyBased) isFileEncryptionInfo_Mode() {} + +func (m *FileEncryptionInfo) GetMode() isFileEncryptionInfo_Mode { + if m != nil { + return m.Mode + } + return nil +} + +func (m *FileEncryptionInfo) GetPlainTextDataKey() *PlainTextDataKey { + if x, ok := m.GetMode().(*FileEncryptionInfo_PlainTextDataKey); ok { + return x.PlainTextDataKey + } + return nil +} + +func (m *FileEncryptionInfo) GetMasterKeyBased() *MasterKeyBased { + if x, ok := m.GetMode().(*FileEncryptionInfo_MasterKeyBased); ok { + return x.MasterKeyBased + } + return nil +} + +func (m *FileEncryptionInfo) GetEncryptionMethod() EncryptionMethod { + if m != nil { + return m.EncryptionMethod + } + return EncryptionMethod_UNKNOWN +} + +func (m *FileEncryptionInfo) GetFileIv() []byte { + if m != nil { + return m.FileIv + } + return nil +} + +func (m *FileEncryptionInfo) GetChecksum() []byte { + if m != nil { + return m.Checksum + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*FileEncryptionInfo) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*FileEncryptionInfo_PlainTextDataKey)(nil), + (*FileEncryptionInfo_MasterKeyBased)(nil), + } +} + +// not recommended in production. +// user needs to pass back the same data key for restore. +type PlainTextDataKey struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PlainTextDataKey) Reset() { *m = PlainTextDataKey{} } +func (m *PlainTextDataKey) String() string { return proto.CompactTextString(m) } +func (*PlainTextDataKey) ProtoMessage() {} +func (*PlainTextDataKey) Descriptor() ([]byte, []int) { + return fileDescriptor_a483860494a778a2, []int{13} +} +func (m *PlainTextDataKey) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PlainTextDataKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PlainTextDataKey.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PlainTextDataKey) XXX_Merge(src proto.Message) { + xxx_messageInfo_PlainTextDataKey.Merge(m, src) +} +func (m *PlainTextDataKey) XXX_Size() int { + return m.Size() +} +func (m *PlainTextDataKey) XXX_DiscardUnknown() { + xxx_messageInfo_PlainTextDataKey.DiscardUnknown(m) +} + +var xxx_messageInfo_PlainTextDataKey proto.InternalMessageInfo + +type MasterKeyBased struct { + // encrypted data key with metadata + DataKeyEncryptedContent []*EncryptedContent `protobuf:"bytes,1,rep,name=data_key_encrypted_content,json=dataKeyEncryptedContent,proto3" json:"data_key_encrypted_content,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MasterKeyBased) Reset() { *m = MasterKeyBased{} } +func (m *MasterKeyBased) String() string { return proto.CompactTextString(m) } +func (*MasterKeyBased) ProtoMessage() {} +func (*MasterKeyBased) Descriptor() ([]byte, []int) { + return fileDescriptor_a483860494a778a2, []int{14} +} +func (m *MasterKeyBased) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MasterKeyBased) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MasterKeyBased.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MasterKeyBased) XXX_Merge(src proto.Message) { + xxx_messageInfo_MasterKeyBased.Merge(m, src) +} +func (m *MasterKeyBased) XXX_Size() int { + return m.Size() +} +func (m *MasterKeyBased) XXX_DiscardUnknown() { + xxx_messageInfo_MasterKeyBased.DiscardUnknown(m) +} + +var xxx_messageInfo_MasterKeyBased proto.InternalMessageInfo + +func (m *MasterKeyBased) GetDataKeyEncryptedContent() []*EncryptedContent { + if m != nil { + return m.DataKeyEncryptedContent + } + return nil +} + func init() { proto.RegisterEnum("encryptionpb.EncryptionMethod", EncryptionMethod_name, EncryptionMethod_value) proto.RegisterType((*EncryptionMeta)(nil), "encryptionpb.EncryptionMeta") @@ -736,62 +1118,90 @@ func init() { proto.RegisterType((*MasterKeyPlaintext)(nil), "encryptionpb.MasterKeyPlaintext") proto.RegisterType((*MasterKeyFile)(nil), "encryptionpb.MasterKeyFile") proto.RegisterType((*MasterKeyKms)(nil), "encryptionpb.MasterKeyKms") + proto.RegisterType((*AzureKms)(nil), "encryptionpb.AzureKms") + proto.RegisterType((*GcpKms)(nil), "encryptionpb.GcpKms") proto.RegisterType((*EncryptedContent)(nil), "encryptionpb.EncryptedContent") proto.RegisterMapType((map[string][]byte)(nil), "encryptionpb.EncryptedContent.MetadataEntry") + proto.RegisterType((*FileEncryptionInfo)(nil), "encryptionpb.FileEncryptionInfo") + proto.RegisterType((*PlainTextDataKey)(nil), "encryptionpb.PlainTextDataKey") + proto.RegisterType((*MasterKeyBased)(nil), "encryptionpb.MasterKeyBased") } func init() { proto.RegisterFile("encryptionpb.proto", fileDescriptor_a483860494a778a2) } var fileDescriptor_a483860494a778a2 = []byte{ - // 768 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcb, 0x6e, 0xdb, 0x46, - 0x14, 0xd5, 0x50, 0xd4, 0x83, 0x57, 0x8f, 0x0a, 0x03, 0xdb, 0x15, 0x54, 0x40, 0x15, 0xe8, 0xba, - 0x15, 0x5a, 0x43, 0x85, 0xd9, 0xd6, 0xb5, 0x5b, 0x04, 0x88, 0x1f, 0x0a, 0x64, 0x28, 0x52, 0x0c, - 0x5a, 0x41, 0xb2, 0x13, 0x68, 0x71, 0x2c, 0x11, 0x14, 0x1f, 0x21, 0xc7, 0xb2, 0xf9, 0x27, 0xc9, - 0x32, 0x59, 0xe5, 0x1f, 0xb2, 0xc9, 0x32, 0xcb, 0x2c, 0xb3, 0x0c, 0x9c, 0x1f, 0x09, 0x38, 0x1c, - 0x51, 0x24, 0x6c, 0x03, 0xc9, 0x8a, 0x73, 0xee, 0x9c, 0x7b, 0x79, 0xe7, 0xcc, 0x99, 0x0b, 0x98, - 0xd8, 0x13, 0x2f, 0x70, 0xa9, 0xe1, 0xd8, 0xee, 0x79, 0xc7, 0xf5, 0x1c, 0xea, 0xe0, 0x72, 0x32, - 0xd6, 0x58, 0x9b, 0x3a, 0x53, 0x87, 0x6d, 0xfc, 0x19, 0xae, 0x22, 0x4e, 0xe3, 0x07, 0xef, 0xd2, - 0xa7, 0x6c, 0x19, 0x05, 0xe4, 0x7f, 0xa1, 0xda, 0x8d, 0xd3, 0x06, 0x84, 0x6a, 0x78, 0x1d, 0xf2, - 0x26, 0x09, 0xc6, 0x86, 0x5e, 0x47, 0x2d, 0xd4, 0x16, 0xd5, 0x9c, 0x49, 0x82, 0x13, 0x1d, 0x57, - 0x41, 0x30, 0x16, 0x75, 0xa1, 0x85, 0xda, 0x65, 0x55, 0x30, 0x16, 0xb2, 0x01, 0xc5, 0x47, 0xc6, - 0x9c, 0x9c, 0xd8, 0x17, 0xce, 0x37, 0xa6, 0xe0, 0x5d, 0xc8, 0x5b, 0x84, 0xce, 0x1c, 0xbd, 0x9e, - 0x6d, 0xa1, 0x76, 0x55, 0x69, 0x76, 0x52, 0xa7, 0x48, 0xf5, 0x31, 0x73, 0x74, 0x95, 0xb3, 0xe5, - 0xd7, 0x08, 0xaa, 0xe1, 0xbf, 0x8e, 0x8d, 0x49, 0xb8, 0xab, 0x79, 0x01, 0x7e, 0x00, 0xb9, 0x0b, - 0x63, 0x4e, 0xfc, 0x3a, 0x6a, 0x65, 0xdb, 0x25, 0xe5, 0xb7, 0x74, 0xa5, 0x34, 0x99, 0x41, 0xbf, - 0x6b, 0x53, 0x2f, 0x50, 0xa3, 0xac, 0xc6, 0x29, 0xc0, 0x2a, 0x88, 0x6b, 0x90, 0x35, 0x49, 0xc0, - 0x7a, 0x97, 0xd4, 0x70, 0x89, 0xb7, 0x21, 0xb7, 0xd0, 0xe6, 0x97, 0x84, 0x35, 0x5f, 0x52, 0x36, - 0x6e, 0x97, 0x0f, 0xcf, 0xad, 0x46, 0xa4, 0xff, 0x84, 0x3d, 0x24, 0xbf, 0x42, 0x50, 0x38, 0xd6, - 0xa8, 0xd6, 0x27, 0xa9, 0x7a, 0xe5, 0xa8, 0xde, 0xea, 0xe4, 0xc2, 0xf7, 0x9c, 0x1c, 0x6f, 0x42, - 0x65, 0xe2, 0x11, 0x2d, 0xdc, 0x19, 0x53, 0xc3, 0x22, 0x4c, 0x38, 0x51, 0x2d, 0x2f, 0x83, 0x23, - 0xc3, 0x22, 0xf8, 0x67, 0x28, 0x5d, 0x69, 0xfe, 0x98, 0x5c, 0xbb, 0x8e, 0x4f, 0xf4, 0xba, 0xd8, - 0x42, 0xed, 0xa2, 0x0a, 0x57, 0x9a, 0xdf, 0x8d, 0x22, 0xf2, 0x7b, 0x04, 0x95, 0x3e, 0x09, 0x12, - 0xf2, 0xed, 0x83, 0x68, 0x92, 0x60, 0xa9, 0xde, 0x56, 0xba, 0x9b, 0x14, 0x35, 0x44, 0x5c, 0x3b, - 0x96, 0x82, 0x7f, 0x81, 0xea, 0xe4, 0xd2, 0xf3, 0x88, 0x4d, 0xc7, 0xfc, 0xce, 0x05, 0xde, 0x53, - 0x14, 0xed, 0x87, 0x57, 0xdf, 0x18, 0x82, 0x14, 0x27, 0x26, 0xf5, 0x10, 0x23, 0x3d, 0xfe, 0x48, - 0xeb, 0xbb, 0x9e, 0x6e, 0x80, 0xeb, 0x98, 0x94, 0xf7, 0x1d, 0x02, 0x69, 0xa0, 0xf9, 0x94, 0x78, - 0xa1, 0xc0, 0x0f, 0x41, 0x72, 0xe7, 0x9a, 0x61, 0x53, 0x72, 0x4d, 0x59, 0xd9, 0x92, 0xd2, 0x4a, - 0x97, 0x88, 0xb9, 0xa7, 0x4b, 0x5e, 0x2f, 0xa3, 0xae, 0x92, 0xf0, 0x0e, 0x88, 0xa1, 0x13, 0xf8, - 0xff, 0x7f, 0xba, 0x27, 0x39, 0xbc, 0xe8, 0x5e, 0x46, 0x65, 0x54, 0xdc, 0x81, 0xac, 0x69, 0xf9, - 0xec, 0x06, 0x4a, 0x4a, 0xe3, 0x9e, 0x8c, 0xbe, 0xe5, 0xf7, 0x32, 0x6a, 0x48, 0x3c, 0x94, 0xa0, - 0x70, 0xae, 0x4d, 0x4c, 0x62, 0xeb, 0xf2, 0x1a, 0xe0, 0xdb, 0x0d, 0xc9, 0x9b, 0x50, 0x49, 0xfd, - 0x09, 0x63, 0x10, 0x5d, 0x8d, 0xce, 0xb8, 0x11, 0xd9, 0x5a, 0x7e, 0x01, 0xe5, 0x64, 0x71, 0xbc, - 0x01, 0xf9, 0x05, 0xb1, 0x75, 0xc7, 0xe3, 0x2c, 0x8e, 0x12, 0x4f, 0x50, 0x60, 0x71, 0xfe, 0x04, - 0x37, 0x20, 0xef, 0x91, 0xa9, 0xe1, 0xd8, 0xac, 0x6f, 0x49, 0xe5, 0x08, 0x37, 0xa0, 0x48, 0x6c, - 0xdd, 0x75, 0x0c, 0x9b, 0x32, 0xc3, 0x48, 0x6a, 0x8c, 0xe5, 0x37, 0x02, 0xd4, 0xb8, 0x23, 0x89, - 0x7e, 0xe4, 0xd8, 0x94, 0xd8, 0x14, 0xf7, 0xa0, 0x68, 0x11, 0xaa, 0xe9, 0x1a, 0xd5, 0xb8, 0x6b, - 0xb6, 0xef, 0xf4, 0x70, 0x9c, 0xd1, 0x19, 0x70, 0x7a, 0x64, 0x9e, 0x38, 0x1b, 0xd7, 0xa1, 0x30, - 0x89, 0x28, 0x7c, 0x34, 0x2c, 0x21, 0xde, 0x05, 0xb0, 0xd8, 0x59, 0x43, 0x67, 0x71, 0xa1, 0x7f, - 0xbc, 0x47, 0x68, 0x55, 0xb2, 0x62, 0x3b, 0x44, 0x73, 0x46, 0x8c, 0xe7, 0xcc, 0x16, 0x54, 0x27, - 0x86, 0x3b, 0x23, 0x5e, 0x28, 0x33, 0xab, 0x95, 0x63, 0x7b, 0x95, 0x55, 0xb4, 0x4f, 0x82, 0xc6, - 0xff, 0x50, 0x49, 0xf5, 0x78, 0xc7, 0x1c, 0x58, 0x4b, 0xfa, 0xb4, 0x9c, 0x30, 0xe4, 0xef, 0x66, - 0xac, 0x51, 0xfc, 0x6a, 0x71, 0x09, 0x0a, 0x4f, 0x87, 0xfd, 0xe1, 0x93, 0x67, 0xc3, 0x5a, 0x06, - 0x57, 0x40, 0x3a, 0x7d, 0x7c, 0x70, 0x32, 0x1c, 0x75, 0x9f, 0x8f, 0x6a, 0x08, 0x57, 0x01, 0x0e, - 0xba, 0x67, 0x3b, 0xca, 0xde, 0xf8, 0x68, 0xa4, 0xd6, 0x84, 0x25, 0xde, 0x57, 0x18, 0xce, 0x72, - 0xac, 0xfc, 0xb3, 0xcb, 0xb0, 0x18, 0xd6, 0x3a, 0x1b, 0xfc, 0xcd, 0x40, 0xee, 0xf0, 0xd7, 0x4f, - 0x6f, 0x8b, 0xe8, 0xc3, 0x4d, 0x13, 0x7d, 0xbc, 0x69, 0xa2, 0xcf, 0x37, 0x4d, 0xf4, 0xf2, 0x4b, - 0x33, 0x03, 0x35, 0xc7, 0x9b, 0x76, 0xa8, 0x61, 0x2e, 0x3a, 0xe6, 0x82, 0x0d, 0xf3, 0xf3, 0x3c, - 0xfb, 0xfc, 0xf5, 0x35, 0x00, 0x00, 0xff, 0xff, 0xec, 0x2d, 0xb0, 0x8e, 0x1e, 0x06, 0x00, 0x00, + // 1135 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0x49, 0x6f, 0x23, 0x45, + 0x14, 0x76, 0x3b, 0xde, 0xfa, 0x79, 0xc1, 0x53, 0x64, 0xf1, 0x38, 0xc8, 0x58, 0x3d, 0x0c, 0x58, + 0x30, 0x63, 0x34, 0x1e, 0x08, 0x33, 0x20, 0x10, 0x49, 0x26, 0x60, 0xcb, 0xc4, 0x13, 0x75, 0x32, + 0x80, 0xc4, 0xa1, 0x55, 0xe9, 0x7e, 0xb1, 0x5b, 0x76, 0x77, 0x5b, 0xdd, 0x65, 0x27, 0xe6, 0x97, + 0xc0, 0x11, 0x4e, 0xfc, 0x05, 0xc4, 0x85, 0x23, 0x47, 0x2e, 0x48, 0x1c, 0x51, 0xb8, 0xf0, 0x33, + 0x50, 0x2d, 0x5e, 0x3a, 0x0b, 0x62, 0x4e, 0xae, 0xb7, 0x7c, 0xaf, 0xeb, 0x7d, 0x55, 0xef, 0x2b, + 0x03, 0x41, 0xdf, 0x0e, 0x67, 0x63, 0xe6, 0x06, 0xfe, 0xf8, 0xb4, 0x39, 0x0e, 0x03, 0x16, 0x90, + 0xc2, 0xaa, 0xaf, 0xba, 0xde, 0x0f, 0xfa, 0x81, 0x08, 0xbc, 0xcb, 0x57, 0x32, 0xa7, 0xfa, 0x4a, + 0x38, 0x89, 0x98, 0x58, 0x4a, 0x87, 0xf1, 0x01, 0x94, 0x0e, 0x16, 0xb0, 0x43, 0x64, 0x94, 0x6c, + 0x40, 0x66, 0x88, 0x33, 0xcb, 0x75, 0x2a, 0x5a, 0x5d, 0x6b, 0xa4, 0xcc, 0xf4, 0x10, 0x67, 0x1d, + 0x87, 0x94, 0x20, 0xe9, 0x4e, 0x2b, 0xc9, 0xba, 0xd6, 0x28, 0x98, 0x49, 0x77, 0x6a, 0xb8, 0x90, + 0xfb, 0xcc, 0x1d, 0x61, 0xc7, 0x3f, 0x0b, 0xfe, 0x27, 0x84, 0xec, 0x40, 0xc6, 0x43, 0x36, 0x08, + 0x9c, 0xca, 0x5a, 0x5d, 0x6b, 0x94, 0x5a, 0xb5, 0x66, 0xac, 0x8b, 0xd8, 0x3e, 0x06, 0x81, 0x63, + 0xaa, 0x6c, 0xe3, 0x07, 0x0d, 0x4a, 0xfc, 0x5b, 0xcf, 0x5c, 0x9b, 0x47, 0x69, 0x38, 0x23, 0x1f, + 0x43, 0xfa, 0xcc, 0x1d, 0x61, 0x54, 0xd1, 0xea, 0x6b, 0x8d, 0x7c, 0xeb, 0xad, 0x78, 0xa5, 0x78, + 0xb2, 0x30, 0xa3, 0x03, 0x9f, 0x85, 0x33, 0x53, 0xa2, 0xaa, 0x47, 0x00, 0x4b, 0x27, 0x29, 0xc3, + 0xda, 0x10, 0x67, 0x62, 0xef, 0xba, 0xc9, 0x97, 0xe4, 0x01, 0xa4, 0xa7, 0x74, 0x34, 0x41, 0xb1, + 0xf9, 0x7c, 0x6b, 0xf3, 0x7a, 0x79, 0xde, 0xb7, 0x29, 0x93, 0x3e, 0x4c, 0x3e, 0xd1, 0x8c, 0xef, + 0x35, 0xc8, 0x3e, 0xa3, 0x8c, 0x76, 0x31, 0x56, 0xaf, 0x20, 0xeb, 0x2d, 0x3b, 0x4f, 0xbe, 0x4c, + 0xe7, 0xe4, 0x1e, 0x14, 0xed, 0x10, 0x29, 0x8f, 0x58, 0xcc, 0xf5, 0x50, 0x10, 0x97, 0x32, 0x0b, + 0x73, 0xe7, 0x89, 0xeb, 0x21, 0x79, 0x1d, 0xf2, 0xe7, 0x34, 0xb2, 0xf0, 0x62, 0x1c, 0x44, 0xe8, + 0x54, 0x52, 0x75, 0xad, 0x91, 0x33, 0xe1, 0x9c, 0x46, 0x07, 0xd2, 0x63, 0xfc, 0xaa, 0x41, 0xb1, + 0x8b, 0xb3, 0x15, 0xfa, 0x9e, 0x42, 0x6a, 0x88, 0xb3, 0x39, 0x7b, 0xf7, 0xe3, 0xbb, 0x89, 0xa5, + 0x72, 0x4b, 0x71, 0x27, 0x20, 0xe4, 0x0d, 0x28, 0xd9, 0x93, 0x30, 0x44, 0x9f, 0x59, 0xea, 0xcc, + 0x93, 0x6a, 0x4f, 0xd2, 0xdb, 0xe5, 0x47, 0x5f, 0xed, 0x81, 0xbe, 0x00, 0xae, 0xf2, 0x91, 0x92, + 0x7c, 0xbc, 0x13, 0xe7, 0x77, 0x23, 0xbe, 0x01, 0xc5, 0xe3, 0x2a, 0xbd, 0xbf, 0x68, 0xa0, 0x1f, + 0xd2, 0x88, 0x61, 0xc8, 0x09, 0xfe, 0x14, 0xf4, 0xf1, 0x88, 0xba, 0x3e, 0xc3, 0x0b, 0x26, 0xca, + 0xe6, 0x5b, 0xf5, 0x78, 0x89, 0x45, 0xee, 0xd1, 0x3c, 0xaf, 0x9d, 0x30, 0x97, 0x20, 0xf2, 0x08, + 0x52, 0xfc, 0x26, 0xa8, 0xef, 0x6f, 0xdf, 0x02, 0xe6, 0x07, 0xdd, 0x4e, 0x98, 0x22, 0x95, 0x34, + 0x61, 0x6d, 0xe8, 0x45, 0xe2, 0x04, 0xf2, 0xad, 0xea, 0x2d, 0x88, 0xae, 0x17, 0xb5, 0x13, 0x26, + 0x4f, 0xdc, 0xd3, 0x21, 0x7b, 0x4a, 0xed, 0x21, 0xfa, 0x8e, 0xb1, 0x0e, 0xe4, 0xfa, 0x86, 0x8c, + 0x7b, 0x50, 0x8c, 0x7d, 0x89, 0x10, 0x48, 0x8d, 0x29, 0x1b, 0xa8, 0x8b, 0x28, 0xd6, 0xc6, 0x1f, + 0x1a, 0x14, 0x56, 0xab, 0x93, 0x4d, 0xc8, 0x4c, 0xd1, 0x77, 0x82, 0x50, 0xa5, 0x29, 0x6b, 0x65, + 0x06, 0x93, 0xc2, 0xaf, 0x66, 0x70, 0x13, 0x32, 0x21, 0xf6, 0xdd, 0xc0, 0x17, 0x1b, 0xd7, 0x4d, + 0x65, 0x91, 0x2a, 0xe4, 0xd0, 0x77, 0xc6, 0x81, 0xeb, 0x33, 0x71, 0x63, 0x74, 0x73, 0x61, 0x93, + 0xc7, 0xa0, 0xd3, 0x6f, 0x27, 0x21, 0x5a, 0xbc, 0xdf, 0xf4, 0x4d, 0x13, 0xb0, 0xcb, 0xc3, 0x5d, + 0x2f, 0x32, 0x73, 0x54, 0xad, 0xc8, 0x43, 0xc8, 0xf6, 0xed, 0xb1, 0x80, 0x64, 0x04, 0x64, 0x3d, + 0x0e, 0xf9, 0xdc, 0x1e, 0x73, 0x40, 0xa6, 0x2f, 0x7e, 0x8d, 0x7f, 0x92, 0x90, 0x9b, 0x57, 0x21, + 0xdb, 0xa0, 0x33, 0xf4, 0xa9, 0xcf, 0xe6, 0x12, 0xa2, 0x9b, 0x39, 0xe9, 0xe8, 0x38, 0x3c, 0x68, + 0x8f, 0x5c, 0x94, 0x41, 0xd9, 0x5b, 0x4e, 0x3a, 0x3a, 0x72, 0x40, 0x64, 0x30, 0x42, 0x3b, 0x44, + 0xa6, 0xba, 0x2c, 0x48, 0xe7, 0xb1, 0xf0, 0x11, 0x03, 0x8a, 0x9c, 0x9a, 0x29, 0x9d, 0x8c, 0x98, + 0x35, 0x09, 0x47, 0xaa, 0xe1, 0xfc, 0x10, 0x67, 0x5f, 0x72, 0xdf, 0x8b, 0x70, 0x44, 0xee, 0x42, + 0x6e, 0x10, 0x79, 0x96, 0x4f, 0x3d, 0x14, 0x2d, 0xeb, 0x66, 0x76, 0x10, 0x79, 0x3d, 0xea, 0x21, + 0xd9, 0x02, 0xbe, 0x14, 0xc0, 0x8c, 0xe4, 0x70, 0x10, 0x79, 0x1c, 0xf3, 0x10, 0x88, 0xfa, 0xb8, + 0x8d, 0x21, 0x73, 0xcf, 0x5c, 0x9b, 0x32, 0xac, 0x64, 0x45, 0xce, 0x1d, 0x19, 0xd9, 0x5f, 0x06, + 0xc8, 0x0e, 0x6c, 0x5d, 0x4f, 0xb7, 0xc4, 0x89, 0xe7, 0x04, 0x66, 0xe3, 0x1a, 0xe6, 0x88, 0xb2, + 0x01, 0xf9, 0x04, 0xb6, 0x6f, 0xc4, 0x45, 0xd1, 0x79, 0x10, 0x3a, 0x15, 0x5d, 0x60, 0xef, 0xde, + 0x80, 0x95, 0x09, 0x46, 0x03, 0x32, 0x92, 0x7c, 0x52, 0x03, 0xb0, 0x43, 0x74, 0xd0, 0x67, 0x2e, + 0x1d, 0x29, 0xa2, 0x57, 0x3c, 0xc6, 0x8f, 0x49, 0x28, 0x2b, 0x2d, 0x42, 0x67, 0x3f, 0xf0, 0x19, + 0xfa, 0x8c, 0xb4, 0x21, 0xe7, 0x21, 0xa3, 0x0e, 0x65, 0x54, 0xe9, 0xc5, 0x83, 0x1b, 0xd5, 0x6b, + 0x81, 0x68, 0x1e, 0xaa, 0x74, 0x29, 0x1b, 0x0b, 0x34, 0xa9, 0x40, 0xd6, 0x96, 0x29, 0xea, 0x51, + 0x98, 0x9b, 0x64, 0x07, 0xc0, 0x13, 0x97, 0x9c, 0x6b, 0x8a, 0x1a, 0xb1, 0xad, 0x5b, 0x46, 0xcc, + 0xd4, 0xbd, 0x85, 0x10, 0xc8, 0x17, 0x26, 0xb5, 0x78, 0x61, 0xee, 0x43, 0xc9, 0x76, 0xc7, 0x03, + 0x0c, 0xf9, 0x80, 0x89, 0x5a, 0x69, 0x11, 0x2b, 0x2e, 0xbd, 0x5d, 0x9c, 0x55, 0x3f, 0x82, 0x62, + 0x6c, 0x8f, 0x37, 0xbc, 0x00, 0xeb, 0xab, 0x0a, 0x55, 0x58, 0x95, 0xa2, 0x9f, 0x93, 0x40, 0xf8, + 0xb8, 0x2e, 0x45, 0x5b, 0xbc, 0x81, 0xcf, 0xe1, 0x55, 0x21, 0x2f, 0x96, 0xf8, 0x34, 0x2f, 0x6d, + 0xcd, 0x4b, 0xe6, 0xaf, 0xea, 0xbd, 0xd0, 0x80, 0x13, 0xbc, 0x60, 0x4a, 0xe9, 0xda, 0x09, 0xb3, + 0x3c, 0xbe, 0xe2, 0x23, 0x6d, 0x28, 0x2f, 0x39, 0xb1, 0x4e, 0x29, 0xd7, 0x76, 0x29, 0x57, 0xaf, + 0xdd, 0xc2, 0xcc, 0x1e, 0xcf, 0x69, 0x27, 0xcc, 0x92, 0x17, 0xf3, 0x90, 0x2e, 0xdc, 0x59, 0x02, + 0xac, 0x97, 0x7a, 0x82, 0xcb, 0x78, 0xc5, 0xc3, 0xa7, 0x81, 0xcb, 0xa1, 0xb5, 0xe0, 0x3d, 0xc3, + 0xcd, 0xce, 0x94, 0x2b, 0x8a, 0x3d, 0x40, 0x7b, 0x18, 0x4d, 0x3c, 0xc5, 0xfa, 0xc2, 0xde, 0xcb, + 0x40, 0xca, 0x0b, 0x1c, 0x34, 0x08, 0x94, 0xaf, 0xf6, 0x6e, 0x78, 0x50, 0x8a, 0x77, 0x40, 0xbe, + 0x81, 0xea, 0x9c, 0x3f, 0x0b, 0xe7, 0x97, 0xcb, 0x9a, 0x5f, 0x1d, 0x79, 0x07, 0x6b, 0xff, 0x7d, + 0x07, 0xcd, 0x2d, 0x47, 0x96, 0xbf, 0x1a, 0x78, 0x7b, 0xb8, 0xb8, 0xe2, 0xcb, 0x9e, 0xf2, 0x90, + 0x7d, 0xd1, 0xeb, 0xf6, 0x9e, 0x7f, 0xd5, 0x2b, 0x27, 0x48, 0x11, 0xf4, 0xa3, 0x2f, 0x76, 0x3b, + 0xbd, 0x93, 0x83, 0xaf, 0x4f, 0xca, 0x1a, 0x29, 0x01, 0xec, 0x1e, 0x1c, 0x3f, 0x6a, 0x3d, 0xb1, + 0xf6, 0x4f, 0xcc, 0x72, 0x72, 0x6e, 0x3f, 0x6d, 0x09, 0x7b, 0x4d, 0xd9, 0xad, 0xf7, 0x77, 0x84, + 0x9d, 0xe2, 0xb5, 0x8e, 0x0f, 0xdf, 0x13, 0x46, 0x7a, 0xef, 0xcd, 0x3f, 0x7f, 0xca, 0x69, 0xbf, + 0x5d, 0xd6, 0xb4, 0xdf, 0x2f, 0x6b, 0xda, 0x5f, 0x97, 0x35, 0xed, 0xbb, 0xbf, 0x6b, 0x09, 0x28, + 0x07, 0x61, 0xbf, 0xc9, 0xdc, 0xe1, 0xb4, 0x39, 0x9c, 0x8a, 0x7f, 0x61, 0xa7, 0x19, 0xf1, 0xf3, + 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x62, 0x5d, 0xc5, 0xd7, 0x09, 0x00, 0x00, } func (m *EncryptionMeta) Marshal() (dAtA []byte, err error) { @@ -1224,6 +1634,30 @@ func (m *MasterKeyKms) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.GcpKms != nil { + { + size, err := m.GcpKms.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEncryptionpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.AzureKms != nil { + { + size, err := m.AzureKms.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEncryptionpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } if len(m.Endpoint) > 0 { i -= len(m.Endpoint) copy(dAtA[i:], m.Endpoint) @@ -1255,7 +1689,7 @@ func (m *MasterKeyKms) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EncryptedContent) Marshal() (dAtA []byte, err error) { +func (m *AzureKms) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1265,12 +1699,12 @@ func (m *EncryptedContent) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EncryptedContent) MarshalTo(dAtA []byte) (int, error) { +func (m *AzureKms) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EncryptedContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AzureKms) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1279,24 +1713,148 @@ func (m *EncryptedContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.CiphertextKey) > 0 { - i -= len(m.CiphertextKey) - copy(dAtA[i:], m.CiphertextKey) - i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.CiphertextKey))) + if len(m.ClientCertificatePassword) > 0 { + i -= len(m.ClientCertificatePassword) + copy(dAtA[i:], m.ClientCertificatePassword) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.ClientCertificatePassword))) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x4a } - if len(m.Iv) > 0 { - i -= len(m.Iv) - copy(dAtA[i:], m.Iv) - i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.Iv))) + if len(m.ClientCertificatePath) > 0 { + i -= len(m.ClientCertificatePath) + copy(dAtA[i:], m.ClientCertificatePath) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.ClientCertificatePath))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x42 } - if m.MasterKey != nil { - { - size, err := m.MasterKey.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { + if len(m.ClientCertificate) > 0 { + i -= len(m.ClientCertificate) + copy(dAtA[i:], m.ClientCertificate) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.ClientCertificate))) + i-- + dAtA[i] = 0x3a + } + if len(m.HsmUrl) > 0 { + i -= len(m.HsmUrl) + copy(dAtA[i:], m.HsmUrl) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.HsmUrl))) + i-- + dAtA[i] = 0x32 + } + if len(m.HsmName) > 0 { + i -= len(m.HsmName) + copy(dAtA[i:], m.HsmName) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.HsmName))) + i-- + dAtA[i] = 0x2a + } + if len(m.KeyVaultUrl) > 0 { + i -= len(m.KeyVaultUrl) + copy(dAtA[i:], m.KeyVaultUrl) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.KeyVaultUrl))) + i-- + dAtA[i] = 0x22 + } + if len(m.ClientSecret) > 0 { + i -= len(m.ClientSecret) + copy(dAtA[i:], m.ClientSecret) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.ClientSecret))) + i-- + dAtA[i] = 0x1a + } + if len(m.ClientId) > 0 { + i -= len(m.ClientId) + copy(dAtA[i:], m.ClientId) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.ClientId))) + i-- + dAtA[i] = 0x12 + } + if len(m.TenantId) > 0 { + i -= len(m.TenantId) + copy(dAtA[i:], m.TenantId) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.TenantId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GcpKms) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GcpKms) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GcpKms) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Credential) > 0 { + i -= len(m.Credential) + copy(dAtA[i:], m.Credential) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.Credential))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *EncryptedContent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EncryptedContent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EncryptedContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.CiphertextKey) > 0 { + i -= len(m.CiphertextKey) + copy(dAtA[i:], m.CiphertextKey) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.CiphertextKey))) + i-- + dAtA[i] = 0x2a + } + if len(m.Iv) > 0 { + i -= len(m.Iv) + copy(dAtA[i:], m.Iv) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.Iv))) + i-- + dAtA[i] = 0x22 + } + if m.MasterKey != nil { + { + size, err := m.MasterKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { return 0, err } i -= size @@ -1336,6 +1894,171 @@ func (m *EncryptedContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *FileEncryptionInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FileEncryptionInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FileEncryptionInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Checksum) > 0 { + i -= len(m.Checksum) + copy(dAtA[i:], m.Checksum) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.Checksum))) + i-- + dAtA[i] = 0x2a + } + if len(m.FileIv) > 0 { + i -= len(m.FileIv) + copy(dAtA[i:], m.FileIv) + i = encodeVarintEncryptionpb(dAtA, i, uint64(len(m.FileIv))) + i-- + dAtA[i] = 0x22 + } + if m.EncryptionMethod != 0 { + i = encodeVarintEncryptionpb(dAtA, i, uint64(m.EncryptionMethod)) + i-- + dAtA[i] = 0x18 + } + if m.Mode != nil { + { + size := m.Mode.Size() + i -= size + if _, err := m.Mode.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *FileEncryptionInfo_PlainTextDataKey) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FileEncryptionInfo_PlainTextDataKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.PlainTextDataKey != nil { + { + size, err := m.PlainTextDataKey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEncryptionpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *FileEncryptionInfo_MasterKeyBased) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FileEncryptionInfo_MasterKeyBased) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.MasterKeyBased != nil { + { + size, err := m.MasterKeyBased.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEncryptionpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *PlainTextDataKey) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PlainTextDataKey) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PlainTextDataKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + return len(dAtA) - i, nil +} + +func (m *MasterKeyBased) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MasterKeyBased) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MasterKeyBased) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.DataKeyEncryptedContent) > 0 { + for iNdEx := len(m.DataKeyEncryptedContent) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DataKeyEncryptedContent[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEncryptionpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintEncryptionpb(dAtA []byte, offset int, v uint64) int { offset -= sovEncryptionpb(v) base := offset @@ -1567,43 +2290,59 @@ func (m *MasterKeyKms) Size() (n int) { if l > 0 { n += 1 + l + sovEncryptionpb(uint64(l)) } + if m.AzureKms != nil { + l = m.AzureKms.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } + if m.GcpKms != nil { + l = m.GcpKms.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } return n } -func (m *EncryptedContent) Size() (n int) { +func (m *AzureKms) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Metadata) > 0 { - for k, v := range m.Metadata { - _ = k - _ = v - l = 0 - if len(v) > 0 { - l = 1 + len(v) + sovEncryptionpb(uint64(len(v))) - } - mapEntrySize := 1 + len(k) + sovEncryptionpb(uint64(len(k))) + l - n += mapEntrySize + 1 + sovEncryptionpb(uint64(mapEntrySize)) - } + l = len(m.TenantId) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) } - l = len(m.Content) + l = len(m.ClientId) if l > 0 { n += 1 + l + sovEncryptionpb(uint64(l)) } - if m.MasterKey != nil { - l = m.MasterKey.Size() + l = len(m.ClientSecret) + if l > 0 { n += 1 + l + sovEncryptionpb(uint64(l)) } - l = len(m.Iv) + l = len(m.KeyVaultUrl) if l > 0 { n += 1 + l + sovEncryptionpb(uint64(l)) } - l = len(m.CiphertextKey) + l = len(m.HsmName) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.HsmUrl) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.ClientCertificate) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.ClientCertificatePath) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.ClientCertificatePassword) if l > 0 { n += 1 + l + sovEncryptionpb(uint64(l)) } @@ -1613,8 +2352,144 @@ func (m *EncryptedContent) Size() (n int) { return n } -func sovEncryptionpb(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *GcpKms) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Credential) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *EncryptedContent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Metadata) > 0 { + for k, v := range m.Metadata { + _ = k + _ = v + l = 0 + if len(v) > 0 { + l = 1 + len(v) + sovEncryptionpb(uint64(len(v))) + } + mapEntrySize := 1 + len(k) + sovEncryptionpb(uint64(len(k))) + l + n += mapEntrySize + 1 + sovEncryptionpb(uint64(mapEntrySize)) + } + } + l = len(m.Content) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + if m.MasterKey != nil { + l = m.MasterKey.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.Iv) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.CiphertextKey) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FileEncryptionInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Mode != nil { + n += m.Mode.Size() + } + if m.EncryptionMethod != 0 { + n += 1 + sovEncryptionpb(uint64(m.EncryptionMethod)) + } + l = len(m.FileIv) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + l = len(m.Checksum) + if l > 0 { + n += 1 + l + sovEncryptionpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *FileEncryptionInfo_PlainTextDataKey) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PlainTextDataKey != nil { + l = m.PlainTextDataKey.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } + return n +} +func (m *FileEncryptionInfo_MasterKeyBased) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.MasterKeyBased != nil { + l = m.MasterKeyBased.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } + return n +} +func (m *PlainTextDataKey) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *MasterKeyBased) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.DataKeyEncryptedContent) > 0 { + for _, e := range m.DataKeyEncryptedContent { + l = e.Size() + n += 1 + l + sovEncryptionpb(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovEncryptionpb(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 } func sozEncryptionpb(x uint64) (n int) { return sovEncryptionpb(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -2801,6 +3676,78 @@ func (m *MasterKeyKms) Unmarshal(dAtA []byte) error { } m.Endpoint = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureKms", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureKms == nil { + m.AzureKms = &AzureKms{} + } + if err := m.AzureKms.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GcpKms", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GcpKms == nil { + m.GcpKms = &GcpKms{} + } + if err := m.GcpKms.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEncryptionpb(dAtA[iNdEx:]) @@ -2823,7 +3770,7 @@ func (m *MasterKeyKms) Unmarshal(dAtA []byte) error { } return nil } -func (m *EncryptedContent) Unmarshal(dAtA []byte) error { +func (m *AzureKms) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2846,17 +3793,17 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EncryptedContent: wiretype end group for non-group") + return fmt.Errorf("proto: AzureKms: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EncryptedContent: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AzureKms: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TenantId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEncryptionpb @@ -2866,79 +3813,501 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEncryptionpb } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEncryptionpb } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Metadata == nil { - m.Metadata = make(map[string][]byte) + m.TenantId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientId", wireType) } - var mapkey string - mapvalue := []byte{} - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEncryptionpb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEncryptionpb - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthEncryptionpb - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthEncryptionpb - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapbyteLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEncryptionpb - } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientSecret", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientSecret = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KeyVaultUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KeyVaultUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HsmName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HsmName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HsmUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HsmUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCertificate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCertificate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCertificatePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCertificatePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCertificatePassword", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCertificatePassword = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEncryptionpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEncryptionpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GcpKms) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GcpKms: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GcpKms: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Credential", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Credential = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEncryptionpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEncryptionpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EncryptedContent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EncryptedContent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EncryptedContent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = make(map[string][]byte) + } + var mapkey string + mapvalue := []byte{} + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthEncryptionpb + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthEncryptionpb + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapbyteLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } if iNdEx >= l { return io.ErrUnexpectedEOF } @@ -2978,11 +4347,115 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { iNdEx += skippy } } - m.Metadata[mapkey] = mapvalue + m.Metadata[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Content", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Content = append(m.Content[:0], dAtA[iNdEx:postIndex]...) + if m.Content == nil { + m.Content = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MasterKey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MasterKey == nil { + m.MasterKey = &MasterKey{} + } + if err := m.MasterKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Iv", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Iv = append(m.Iv[:0], dAtA[iNdEx:postIndex]...) + if m.Iv == nil { + m.Iv = []byte{} + } iNdEx = postIndex - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Content", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CiphertextKey", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -3009,14 +4482,65 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Content = append(m.Content[:0], dAtA[iNdEx:postIndex]...) - if m.Content == nil { - m.Content = []byte{} + m.CiphertextKey = append(m.CiphertextKey[:0], dAtA[iNdEx:postIndex]...) + if m.CiphertextKey == nil { + m.CiphertextKey = []byte{} } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipEncryptionpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEncryptionpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FileEncryptionInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FileEncryptionInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FileEncryptionInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MasterKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PlainTextDataKey", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3043,16 +4567,69 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MasterKey == nil { - m.MasterKey = &MasterKey{} + v := &PlainTextDataKey{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - if err := m.MasterKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Mode = &FileEncryptionInfo_PlainTextDataKey{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MasterKeyBased", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &MasterKeyBased{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Mode = &FileEncryptionInfo_MasterKeyBased{v} iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EncryptionMethod", wireType) + } + m.EncryptionMethod = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EncryptionMethod |= EncryptionMethod(b&0x7F) << shift + if b < 0x80 { + break + } + } case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Iv", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FileIv", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -3079,14 +4656,14 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Iv = append(m.Iv[:0], dAtA[iNdEx:postIndex]...) - if m.Iv == nil { - m.Iv = []byte{} + m.FileIv = append(m.FileIv[:0], dAtA[iNdEx:postIndex]...) + if m.FileIv == nil { + m.FileIv = []byte{} } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CiphertextKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Checksum", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -3113,9 +4690,145 @@ func (m *EncryptedContent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CiphertextKey = append(m.CiphertextKey[:0], dAtA[iNdEx:postIndex]...) - if m.CiphertextKey == nil { - m.CiphertextKey = []byte{} + m.Checksum = append(m.Checksum[:0], dAtA[iNdEx:postIndex]...) + if m.Checksum == nil { + m.Checksum = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEncryptionpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEncryptionpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PlainTextDataKey) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PlainTextDataKey: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PlainTextDataKey: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipEncryptionpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEncryptionpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MasterKeyBased) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MasterKeyBased: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MasterKeyBased: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataKeyEncryptedContent", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEncryptionpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEncryptionpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEncryptionpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataKeyEncryptedContent = append(m.DataKeyEncryptedContent, &EncryptedContent{}) + if err := m.DataKeyEncryptedContent[len(m.DataKeyEncryptedContent)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex default: diff --git a/pkg/import_sstpb/import_sstpb.pb.go b/pkg/import_sstpb/import_sstpb.pb.go index 8c077a5d8..ec1a34755 100644 --- a/pkg/import_sstpb/import_sstpb.pb.go +++ b/pkg/import_sstpb/import_sstpb.pb.go @@ -13,6 +13,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/golang/protobuf/proto" brpb "github.com/pingcap/kvproto/pkg/brpb" + encryptionpb "github.com/pingcap/kvproto/pkg/encryptionpb" errorpb "github.com/pingcap/kvproto/pkg/errorpb" kvrpcpb "github.com/pingcap/kvproto/pkg/kvrpcpb" metapb "github.com/pingcap/kvproto/pkg/metapb" @@ -2179,10 +2180,12 @@ type KVMeta struct { // Deprecated: this field 'start_snapshot_ts' is replaced by the field 'start_ts'. StartSnapshotTs uint64 `protobuf:"varint,9,opt,name=start_snapshot_ts,json=startSnapshotTs,proto3" json:"start_snapshot_ts,omitempty"` // the compression type for the file. - CompressionType brpb.CompressionType `protobuf:"varint,13,opt,name=compression_type,json=compressionType,proto3,enum=backup.CompressionType" json:"compression_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CompressionType brpb.CompressionType `protobuf:"varint,13,opt,name=compression_type,json=compressionType,proto3,enum=backup.CompressionType" json:"compression_type,omitempty"` + // encryption information of the kv file, not set if encryption is not enabled. + FileEncryptionInfo *encryptionpb.FileEncryptionInfo `protobuf:"bytes,14,opt,name=file_encryption_info,json=fileEncryptionInfo,proto3" json:"file_encryption_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *KVMeta) Reset() { *m = KVMeta{} } @@ -2309,6 +2312,13 @@ func (m *KVMeta) GetCompressionType() brpb.CompressionType { return brpb.CompressionType_UNKNOWN } +func (m *KVMeta) GetFileEncryptionInfo() *encryptionpb.FileEncryptionInfo { + if m != nil { + return m.FileEncryptionInfo + } + return nil +} + type ApplyRequest struct { // The meta of the KV file. Meta *KVMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"` @@ -2333,11 +2343,13 @@ type ApplyRequest struct { StorageBackend *brpb.StorageBackend `protobuf:"bytes,3,opt,name=storage_backend,json=storageBackend,proto3" json:"storage_backend,omitempty"` // context represents region info and it used to build raft commands. Context *kvrpcpb.Context `protobuf:"bytes,4,opt,name=context,proto3" json:"context,omitempty"` - // cipher_info is used to decrypt kv file when download file. - CipherInfo *brpb.CipherInfo `protobuf:"bytes,11,opt,name=cipher_info,json=cipherInfo,proto3" json:"cipher_info,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // plaintext data key to decrypt kv file if configured during log backup. + CipherInfo *brpb.CipherInfo `protobuf:"bytes,11,opt,name=cipher_info,json=cipherInfo,proto3" json:"cipher_info,omitempty"` + // master keys config used to decrypt data keys in restore if configured during log backup. + MasterKeys []*encryptionpb.MasterKey `protobuf:"bytes,14,rep,name=master_keys,json=masterKeys,proto3" json:"master_keys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ApplyRequest) Reset() { *m = ApplyRequest{} } @@ -2429,6 +2441,13 @@ func (m *ApplyRequest) GetCipherInfo() *brpb.CipherInfo { return nil } +func (m *ApplyRequest) GetMasterKeys() []*encryptionpb.MasterKey { + if m != nil { + return m.MasterKeys + } + return nil +} + type ApplyResponse struct { // The actual key range (after rewrite) of the downloaded file. The range is // inclusive in both ends. @@ -2627,145 +2646,149 @@ func init() { func init() { proto.RegisterFile("import_sstpb.proto", fileDescriptor_4d076b7935cfab6b) } var fileDescriptor_4d076b7935cfab6b = []byte{ - // 2197 bytes of a gzipped FileDescriptorProto + // 2264 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x73, 0xdb, 0xc8, - 0x11, 0x16, 0xf8, 0x66, 0x13, 0x7c, 0x78, 0xac, 0x95, 0x69, 0xfa, 0x8d, 0x78, 0xbd, 0xb2, 0x94, - 0xc8, 0x8e, 0xbc, 0x71, 0xa5, 0x36, 0x55, 0x71, 0xad, 0x1e, 0xb1, 0x15, 0xf9, 0xa1, 0x80, 0x8a, - 0x73, 0xc8, 0x01, 0x05, 0x81, 0x23, 0x09, 0x21, 0x08, 0x20, 0x98, 0x21, 0x65, 0x5e, 0xf2, 0x03, - 0x72, 0xcb, 0x2d, 0xb7, 0x54, 0x72, 0xda, 0xca, 0x39, 0x97, 0xfc, 0x83, 0x3d, 0xe6, 0x98, 0x53, - 0x2a, 0xe5, 0xfc, 0x90, 0x4d, 0x4d, 0xcf, 0x00, 0x04, 0x60, 0x4a, 0xb4, 0x55, 0xc9, 0x89, 0x98, - 0xee, 0x9e, 0x9e, 0x9e, 0x7e, 0x7c, 0xd3, 0x33, 0x04, 0xe2, 0x8e, 0xc2, 0x20, 0xe2, 0x16, 0x63, - 0x3c, 0x3c, 0xda, 0x08, 0xa3, 0x80, 0x07, 0x44, 0x4f, 0xd3, 0x7a, 0xfa, 0x88, 0x72, 0x3b, 0xe6, - 0xf5, 0x9a, 0x34, 0x8a, 0x82, 0x68, 0x36, 0x1c, 0x4e, 0xa2, 0xd0, 0x49, 0x86, 0xcb, 0x27, 0xc1, - 0x49, 0x80, 0x9f, 0x8f, 0xc4, 0x97, 0xa2, 0xb6, 0xa3, 0x31, 0xe3, 0xf8, 0xa9, 0x08, 0x70, 0x94, - 0x68, 0x30, 0xfe, 0xa0, 0xc1, 0xb5, 0xfe, 0x98, 0x85, 0xd4, 0x1f, 0xec, 0xe1, 0xb2, 0xe6, 0xc1, - 0xb6, 0x49, 0x7f, 0x3b, 0xa6, 0x8c, 0x93, 0x2f, 0x61, 0x85, 0x9d, 0x06, 0x63, 0x6f, 0x60, 0x31, - 0x29, 0x61, 0x49, 0xcb, 0x58, 0x57, 0xbb, 0xab, 0xad, 0xd6, 0xcc, 0x65, 0xc9, 0xcd, 0x4c, 0x67, - 0x64, 0x15, 0x3a, 0x83, 0x71, 0x64, 0x73, 0x37, 0xf0, 0x2d, 0xd7, 0xb7, 0x18, 0x75, 0x58, 0xb7, - 0x70, 0x57, 0x5b, 0x2d, 0x99, 0xad, 0x98, 0xbe, 0xe7, 0xf7, 0xa9, 0xc3, 0xc8, 0x0a, 0x54, 0x1c, - 0xdb, 0xf3, 0x68, 0xd4, 0x2d, 0xde, 0xd5, 0x56, 0xeb, 0xa6, 0x1a, 0x19, 0xcf, 0xa1, 0xfb, 0xa1, - 0x49, 0x2c, 0x0c, 0x7c, 0x46, 0xc9, 0x3a, 0x5c, 0xb1, 0xbd, 0x88, 0xda, 0x83, 0x69, 0x6c, 0x14, - 0x1d, 0x28, 0x73, 0x3a, 0x8a, 0xd1, 0x8f, 0xe9, 0x86, 0x0f, 0x57, 0xfa, 0x67, 0x2e, 0x77, 0x4e, - 0x5f, 0x05, 0x03, 0x1a, 0xef, 0xea, 0xfb, 0x50, 0x1a, 0x05, 0x03, 0x8a, 0x93, 0x5a, 0x9b, 0xdd, - 0x8d, 0x4c, 0x04, 0x52, 0xe2, 0x28, 0x45, 0xd6, 0xa1, 0x12, 0xd9, 0xfe, 0x09, 0x15, 0x7b, 0x28, - 0xae, 0x36, 0x36, 0xaf, 0x66, 0xe5, 0x4d, 0xc1, 0x33, 0x95, 0x88, 0xb1, 0x0c, 0x24, 0xbd, 0x9e, - 0x34, 0xd9, 0xe8, 0x40, 0xeb, 0x39, 0xe5, 0x29, 0x13, 0x8c, 0x67, 0xd0, 0x4e, 0x28, 0x6a, 0x5f, - 0x9f, 0x64, 0x95, 0xf1, 0x08, 0xca, 0xb8, 0x32, 0x59, 0x86, 0x32, 0xe3, 0x76, 0xc4, 0x71, 0x9e, - 0x6e, 0xca, 0x01, 0xe9, 0x40, 0x91, 0xfa, 0x03, 0xf4, 0xba, 0x6e, 0x8a, 0x4f, 0xe3, 0xcf, 0x45, - 0xa8, 0xf6, 0xfb, 0x87, 0xaf, 0x28, 0xb7, 0x09, 0x81, 0xd2, 0x78, 0xec, 0x0e, 0xd4, 0x14, 0xfc, - 0x26, 0x0f, 0xa1, 0x8c, 0x7b, 0xc0, 0x39, 0xe7, 0xec, 0x52, 0x4a, 0x88, 0x25, 0x9d, 0xc8, 0x79, - 0xb2, 0x89, 0x41, 0x6b, 0x9a, 0x72, 0x20, 0x62, 0xe9, 0x51, 0xff, 0x84, 0x9f, 0x76, 0x4b, 0x18, - 0x6b, 0x35, 0x22, 0xd7, 0xa0, 0xea, 0x1c, 0x5b, 0xbe, 0x3d, 0xa2, 0xdd, 0xb2, 0x0a, 0xf2, 0xf1, - 0x6b, 0x7b, 0x44, 0xc9, 0x0d, 0xa8, 0x47, 0xf4, 0x04, 0x93, 0x64, 0xd0, 0xad, 0xe0, 0x9c, 0x9a, - 0x24, 0xec, 0x0d, 0xc8, 0x53, 0xd0, 0x15, 0x93, 0x86, 0x81, 0x73, 0xda, 0xad, 0x2a, 0xab, 0x54, - 0x2d, 0x98, 0xc8, 0xdb, 0x15, 0x2c, 0xb3, 0x11, 0xcd, 0x06, 0x64, 0x0d, 0xae, 0x88, 0x34, 0x1d, - 0xd2, 0xa9, 0x45, 0xdf, 0x39, 0xde, 0x98, 0xb9, 0x13, 0xda, 0xad, 0x61, 0x76, 0xb4, 0xa9, 0x3f, - 0xd8, 0xa7, 0xd3, 0xdd, 0x98, 0x2c, 0x0c, 0xe0, 0x01, 0xb7, 0x3d, 0x6b, 0x38, 0x61, 0xdd, 0xba, - 0x34, 0x00, 0x09, 0xfb, 0x13, 0x46, 0xee, 0x40, 0x43, 0x32, 0x8f, 0xa6, 0x9c, 0xb2, 0x2e, 0x20, - 0x1b, 0x90, 0xb4, 0x25, 0x28, 0xe4, 0x4b, 0x68, 0xd8, 0xa1, 0x6b, 0x4d, 0x68, 0xc4, 0xdc, 0xc0, - 0xef, 0x36, 0x30, 0x6c, 0x57, 0x37, 0xe2, 0x7a, 0xfc, 0xfa, 0x60, 0xef, 0xad, 0x64, 0x99, 0x60, - 0x87, 0xae, 0xfa, 0x16, 0x6b, 0x3a, 0x6e, 0x78, 0x4a, 0x23, 0xcb, 0x9d, 0x74, 0x75, 0xf4, 0x7f, - 0x4d, 0x12, 0xf6, 0x26, 0xc6, 0xef, 0xa0, 0x61, 0xd2, 0xb3, 0xc8, 0xe5, 0xd4, 0x1c, 0x7b, 0x94, - 0xdc, 0x87, 0x56, 0xe0, 0xc9, 0xbd, 0x84, 0x11, 0x3d, 0x76, 0xdf, 0xa9, 0x80, 0xe9, 0x81, 0x27, - 0x36, 0x72, 0x80, 0x34, 0x21, 0xe5, 0xd3, 0xb3, 0xb4, 0x94, 0x8c, 0xba, 0xee, 0xd3, 0xb3, 0x99, - 0xd4, 0xf7, 0xa0, 0x29, 0xa4, 0xb8, 0x3b, 0xa2, 0x8c, 0xdb, 0xa3, 0x10, 0x63, 0x57, 0x42, 0xa1, - 0xc3, 0x98, 0x66, 0xfc, 0x1a, 0x9a, 0xbf, 0x0c, 0xbd, 0xc0, 0x1e, 0xc4, 0x95, 0xb2, 0x0e, 0x25, - 0xe1, 0x70, 0x5c, 0xb7, 0xb1, 0xf9, 0x59, 0x2e, 0x27, 0x65, 0x36, 0xbd, 0x58, 0x32, 0x51, 0x88, - 0x2c, 0x43, 0x69, 0x60, 0x73, 0x5b, 0x2e, 0x2f, 0xa8, 0x62, 0xb4, 0x55, 0x85, 0xb2, 0x73, 0x3a, - 0xf6, 0x87, 0xa2, 0x08, 0x62, 0xe5, 0xaa, 0x2c, 0x06, 0xd0, 0xdc, 0x13, 0x55, 0xc3, 0xe3, 0xe5, - 0xd6, 0xa0, 0xea, 0x04, 0x3e, 0xa7, 0xef, 0xb8, 0x5a, 0xb1, 0x93, 0xb8, 0x73, 0x5b, 0xd2, 0xcd, - 0x58, 0x80, 0x7c, 0x01, 0x45, 0xc6, 0xb8, 0xca, 0xd6, 0xf9, 0x96, 0x99, 0x42, 0xc2, 0x18, 0x02, - 0x79, 0x35, 0xf6, 0xb8, 0x7b, 0xf9, 0xa5, 0x1e, 0x42, 0x89, 0x31, 0x1e, 0xd7, 0xff, 0x39, 0x6b, - 0xa1, 0x88, 0xf1, 0x14, 0x5a, 0xf1, 0x3a, 0xaa, 0xac, 0xef, 0x43, 0x19, 0x11, 0x5b, 0x2d, 0xd3, - 0xda, 0x88, 0xf1, 0x7b, 0x57, 0xfc, 0x9a, 0x92, 0x69, 0xfc, 0x5e, 0x83, 0xd6, 0x76, 0x30, 0x0a, - 0x6d, 0x27, 0xb1, 0x30, 0x29, 0x48, 0x6d, 0x61, 0x41, 0xde, 0x03, 0x3d, 0x18, 0xf3, 0x70, 0xcc, - 0x2d, 0x8f, 0x4e, 0xa8, 0x87, 0x4e, 0x29, 0x9b, 0x0d, 0x49, 0x7b, 0x29, 0x48, 0xe9, 0xfd, 0x16, - 0x17, 0xec, 0xd7, 0xb8, 0x02, 0xed, 0xc4, 0x16, 0x15, 0xaa, 0xef, 0x4a, 0xd0, 0xde, 0x09, 0xce, - 0xfc, 0x74, 0x72, 0xfc, 0x44, 0xb9, 0x45, 0x43, 0xb7, 0x7c, 0x91, 0xb5, 0x2f, 0x27, 0xbc, 0xd1, - 0x67, 0x9c, 0xed, 0xfa, 0x3c, 0x9a, 0x4a, 0x47, 0x89, 0xf2, 0x8a, 0x28, 0x0b, 0xbc, 0x09, 0x1d, - 0x58, 0x9c, 0xa9, 0x6c, 0x84, 0x98, 0x74, 0xc8, 0xc8, 0x0f, 0x16, 0xc7, 0x77, 0xab, 0xf4, 0xed, - 0xbf, 0xee, 0x2c, 0x61, 0x94, 0x05, 0xa4, 0x21, 0xc4, 0xd4, 0x11, 0x62, 0xf0, 0x9b, 0x6c, 0x09, - 0x0c, 0xc1, 0x72, 0xb2, 0xa2, 0xb1, 0x47, 0xbb, 0x4d, 0xd4, 0x75, 0x3d, 0xe7, 0xc8, 0x59, 0xc1, - 0x29, 0x7d, 0x8d, 0x28, 0x55, 0x83, 0xcf, 0xa0, 0xcd, 0x78, 0x10, 0xd9, 0x27, 0xd4, 0x3a, 0xb2, - 0x9d, 0xa1, 0x00, 0xd5, 0x16, 0xaa, 0x59, 0xd9, 0x10, 0xe3, 0x71, 0xb8, 0xd1, 0x97, 0xec, 0x2d, - 0xc9, 0x35, 0x5b, 0x2c, 0x33, 0x16, 0x87, 0x61, 0xac, 0xc0, 0xb1, 0x9d, 0x53, 0x2a, 0xc0, 0xee, - 0x0a, 0x1a, 0x19, 0x4b, 0x6e, 0x0b, 0xf2, 0xde, 0x80, 0xf4, 0xa0, 0xee, 0x32, 0x2b, 0xb2, 0xcf, - 0xac, 0xe1, 0xa4, 0xdb, 0x46, 0xc8, 0xaa, 0xba, 0xcc, 0xb4, 0xcf, 0xf6, 0x27, 0xe4, 0x09, 0x34, - 0x62, 0xd8, 0xf0, 0x8f, 0x83, 0x6e, 0x07, 0x4d, 0x20, 0xb1, 0x09, 0xdb, 0x12, 0x40, 0xfc, 0xe3, - 0xc0, 0x04, 0x27, 0xf9, 0x26, 0x3b, 0x62, 0xff, 0xe8, 0x7e, 0x8b, 0x4f, 0x43, 0xda, 0x25, 0x08, - 0x51, 0xf7, 0x2e, 0x0c, 0xd4, 0xe1, 0x34, 0xa4, 0xc2, 0x03, 0xc9, 0x20, 0x9d, 0x39, 0x57, 0x17, - 0x64, 0x4e, 0xef, 0x35, 0xd4, 0x93, 0x40, 0x8b, 0x33, 0x68, 0x48, 0xa7, 0x98, 0xbe, 0x75, 0x53, - 0x7c, 0x92, 0x75, 0x28, 0x4f, 0x6c, 0x6f, 0x4c, 0x2f, 0xae, 0x5a, 0x29, 0xf3, 0x55, 0xe1, 0xc7, - 0xda, 0xcf, 0x4b, 0xb5, 0x5a, 0xa7, 0x6e, 0x16, 0xc7, 0x91, 0x67, 0x98, 0x50, 0xc6, 0x8a, 0x21, - 0x5d, 0xa8, 0x8e, 0x28, 0x63, 0xb6, 0xaa, 0x8c, 0xba, 0x19, 0x0f, 0xc9, 0x23, 0x68, 0x08, 0x97, - 0x52, 0x4b, 0x16, 0x5c, 0x61, 0x6e, 0xc1, 0x01, 0x8a, 0xe0, 0xb7, 0xf1, 0x5e, 0x83, 0xce, 0x6c, - 0xff, 0xaa, 0x60, 0x1f, 0x2d, 0xae, 0x3b, 0x95, 0x28, 0xaa, 0xfa, 0xae, 0x43, 0xcd, 0x65, 0x16, - 0x1d, 0x85, 0x7c, 0x8a, 0x6b, 0x62, 0xd8, 0x76, 0xc5, 0x50, 0xd4, 0xb0, 0xb4, 0xa5, 0x38, 0x4f, - 0x57, 0x1a, 0x01, 0x66, 0x87, 0x6a, 0x69, 0xfe, 0xa1, 0x5a, 0xce, 0x1c, 0xaa, 0x31, 0x24, 0x55, - 0x16, 0x43, 0xd2, 0x33, 0xb8, 0xd9, 0xa7, 0x3c, 0xde, 0x66, 0x3f, 0xa4, 0x74, 0xf0, 0xd2, 0x1d, - 0xb9, 0x09, 0xce, 0xdc, 0x81, 0x06, 0x13, 0x44, 0xcb, 0x13, 0x54, 0xdc, 0x75, 0xc9, 0x04, 0x96, - 0xc8, 0x19, 0x77, 0xe0, 0xd6, 0x39, 0x0a, 0x14, 0x38, 0x84, 0x50, 0x3a, 0xb0, 0xdd, 0x28, 0x1d, - 0x70, 0x5d, 0x06, 0x7c, 0x39, 0x1d, 0x70, 0x5d, 0x45, 0x96, 0x7c, 0x0e, 0x85, 0x40, 0x1e, 0x40, - 0xad, 0xbc, 0xe9, 0x42, 0xcf, 0xc6, 0x9b, 0x03, 0xb3, 0x10, 0x84, 0xc6, 0x75, 0x28, 0xbc, 0x39, - 0x20, 0x55, 0x28, 0x1e, 0x8c, 0x79, 0x67, 0x89, 0x00, 0x54, 0x76, 0xa8, 0x47, 0x39, 0xed, 0x68, - 0x46, 0x1f, 0xe0, 0x57, 0xa2, 0x44, 0xb7, 0x6c, 0xee, 0x9c, 0xe2, 0x99, 0x1a, 0x8c, 0x46, 0x2e, - 0xb7, 0x54, 0x63, 0x5a, 0x32, 0x6b, 0x92, 0x70, 0x28, 0x9a, 0xd1, 0x72, 0x68, 0xbb, 0x51, 0x8c, - 0xde, 0xe4, 0xc3, 0xf5, 0x4c, 0x29, 0x60, 0xfc, 0x45, 0x03, 0x1d, 0xb5, 0x5e, 0xea, 0xf4, 0x7b, - 0x0c, 0xe5, 0x23, 0x61, 0x8d, 0x4a, 0xbb, 0x5c, 0xff, 0x36, 0xb3, 0xf6, 0xc5, 0x92, 0x29, 0x05, - 0x3f, 0x05, 0x92, 0x67, 0xa7, 0xe8, 0x09, 0x34, 0x95, 0x8d, 0x2a, 0x5d, 0x1f, 0x66, 0xcf, 0x97, - 0x8b, 0x52, 0x6c, 0x1d, 0xca, 0xc2, 0xd4, 0x05, 0x07, 0x99, 0x94, 0x11, 0xbd, 0x80, 0x69, 0x9f, - 0xa5, 0xbc, 0xdc, 0x81, 0x22, 0xe7, 0x9e, 0xf2, 0xaf, 0xf8, 0xfc, 0x78, 0xd7, 0x92, 0x16, 0x14, - 0x12, 0x90, 0x2f, 0x70, 0x66, 0x7c, 0xa3, 0x41, 0x3b, 0xd6, 0x7e, 0x29, 0x6f, 0x3f, 0xc9, 0x7a, - 0xfb, 0x46, 0xbe, 0x48, 0xcf, 0xfe, 0x67, 0x0e, 0xff, 0x0d, 0x74, 0x66, 0x96, 0xfe, 0x9f, 0x7d, - 0xfe, 0x77, 0x0d, 0x56, 0x76, 0xc6, 0xa1, 0xe7, 0x3a, 0x36, 0xa7, 0x3b, 0x94, 0x53, 0xe7, 0x52, - 0xfd, 0xca, 0x0d, 0xa8, 0xe3, 0x2d, 0x40, 0xf4, 0x84, 0xaa, 0xf2, 0x6a, 0x48, 0xd8, 0xa7, 0x53, - 0xd1, 0x8e, 0xab, 0x06, 0x19, 0x9d, 0xa0, 0x9b, 0x15, 0xd9, 0x16, 0x0b, 0x18, 0x13, 0x3d, 0x64, - 0xe0, 0x7b, 0x53, 0xc4, 0xa0, 0x9a, 0x59, 0x1d, 0xd2, 0xe9, 0x1b, 0xdf, 0x9b, 0x12, 0x03, 0x9a, - 0x23, 0xd7, 0xb7, 0x66, 0x45, 0x26, 0xc1, 0xa8, 0x31, 0x72, 0xfd, 0x6d, 0x55, 0x67, 0xc6, 0x2b, - 0xa8, 0xec, 0x4f, 0x3e, 0x09, 0x06, 0x32, 0x65, 0x5b, 0xcc, 0x96, 0xad, 0xf1, 0x57, 0x0d, 0xae, - 0x7d, 0xe0, 0x0a, 0xe5, 0xfe, 0x1f, 0xce, 0xee, 0x06, 0x17, 0x74, 0x56, 0xf1, 0xb5, 0x00, 0xc3, - 0xf0, 0x18, 0xea, 0x78, 0x25, 0x48, 0x1d, 0x0c, 0x73, 0xa3, 0x26, 0x5c, 0x20, 0x67, 0xac, 0xc5, - 0xc9, 0x5d, 0xc4, 0xc0, 0x2d, 0x67, 0xa5, 0xe5, 0x56, 0x63, 0xe4, 0xf8, 0x53, 0x11, 0x2a, 0xfb, - 0x6f, 0xe3, 0xab, 0x15, 0xf6, 0x21, 0x5a, 0xaa, 0x0f, 0xb9, 0x07, 0x3a, 0x9e, 0x14, 0x56, 0x70, - 0x7c, 0xcc, 0x28, 0xc7, 0xab, 0x42, 0xc9, 0x6c, 0x20, 0xed, 0x0d, 0x92, 0x52, 0x38, 0x5f, 0xc8, - 0xe0, 0x7c, 0x32, 0x55, 0x71, 0xf5, 0xd4, 0xd4, 0x97, 0x52, 0xa4, 0x05, 0x05, 0xe7, 0x58, 0xdd, - 0x9f, 0x0b, 0xce, 0xb1, 0x70, 0xab, 0xcb, 0xac, 0x01, 0x42, 0xa5, 0x0a, 0x64, 0xcd, 0x65, 0x12, - 0x3a, 0x45, 0x90, 0x65, 0x6a, 0xf0, 0xf8, 0x4a, 0x53, 0xc5, 0xf1, 0x21, 0x23, 0xb7, 0x40, 0xb4, - 0x5f, 0x78, 0x7e, 0x26, 0x11, 0xae, 0x2b, 0xca, 0x21, 0xcb, 0x26, 0x55, 0xe5, 0xfc, 0xa4, 0xaa, - 0x66, 0x92, 0x6a, 0x05, 0x2a, 0xec, 0xd4, 0xde, 0xfc, 0xd1, 0x53, 0xbc, 0x83, 0xe9, 0xa6, 0x1a, - 0x89, 0x6b, 0x9a, 0xd4, 0xc6, 0x7c, 0x3b, 0x64, 0xa7, 0x01, 0x1a, 0x24, 0xaf, 0x60, 0x6d, 0x64, - 0xf4, 0x15, 0xfd, 0x90, 0x91, 0x2d, 0xe8, 0x38, 0xc1, 0x28, 0x8c, 0x28, 0x13, 0x37, 0x28, 0xd9, - 0xca, 0x34, 0xf1, 0xf0, 0xb8, 0x96, 0x34, 0x40, 0x33, 0x3e, 0x36, 0x30, 0x6d, 0x27, 0x4b, 0x30, - 0xfe, 0x56, 0x04, 0xfd, 0xeb, 0x30, 0xf4, 0xa6, 0x71, 0x3d, 0xad, 0x66, 0xd0, 0x26, 0x1f, 0xdd, - 0xb7, 0xf2, 0xfc, 0x44, 0xa8, 0x59, 0x8b, 0x2b, 0x58, 0x9f, 0x9b, 0x08, 0x6f, 0x53, 0x05, 0xfc, - 0x41, 0xc7, 0x59, 0xb8, 0x44, 0xc7, 0xf9, 0x53, 0x68, 0xa6, 0x75, 0xb0, 0x6e, 0x13, 0xd7, 0x3d, - 0x5f, 0x89, 0xa9, 0xa7, 0xa6, 0xb3, 0xb9, 0x0d, 0x67, 0x79, 0x6e, 0xc3, 0x39, 0xa7, 0xb7, 0x2d, - 0x7e, 0x52, 0x6f, 0x9b, 0x02, 0xa5, 0xd2, 0x22, 0x50, 0xca, 0x75, 0xb0, 0x8d, 0x8f, 0xe9, 0x60, - 0x8d, 0x21, 0x34, 0x55, 0xd4, 0x2e, 0xdb, 0x9c, 0x25, 0x50, 0x5d, 0x58, 0x04, 0xd5, 0xc6, 0x03, - 0xd0, 0xb7, 0x3d, 0x6a, 0x47, 0x71, 0x8a, 0xac, 0x40, 0x25, 0x75, 0xed, 0xae, 0x9b, 0x6a, 0x64, - 0x7c, 0x05, 0x4d, 0x25, 0xf7, 0xc9, 0xc7, 0xc1, 0xda, 0x7d, 0x80, 0xd9, 0x53, 0x8e, 0x68, 0x69, - 0x5e, 0x07, 0xd1, 0xc8, 0xf6, 0x64, 0x7b, 0x23, 0xdf, 0xba, 0x3a, 0xda, 0xda, 0x23, 0xb8, 0x3a, - 0xa7, 0x2d, 0x17, 0x22, 0x2f, 0xe9, 0x89, 0xed, 0x4c, 0x3b, 0x4b, 0x44, 0x87, 0xda, 0x3e, 0x9d, - 0xb2, 0xd0, 0x76, 0x68, 0x47, 0xdb, 0xfc, 0xae, 0x06, 0x75, 0x39, 0xbb, 0xdf, 0x3f, 0x24, 0xbf, - 0xc8, 0x2c, 0x72, 0xe7, 0xdc, 0x97, 0x24, 0xa9, 0xba, 0x77, 0xf7, 0x7c, 0x01, 0xd5, 0xe0, 0x2d, - 0x91, 0x17, 0x50, 0x55, 0xef, 0x55, 0xe4, 0x66, 0x56, 0x3c, 0xfb, 0xb0, 0xd5, 0xbb, 0x75, 0x0e, - 0x37, 0xd1, 0xf4, 0x1c, 0x2a, 0xf2, 0x19, 0x80, 0xe4, 0x0e, 0xed, 0xcc, 0xcb, 0x43, 0xef, 0xe6, - 0x7c, 0x66, 0xac, 0x66, 0x55, 0x23, 0xbb, 0x50, 0x91, 0x57, 0xed, 0xbc, 0xa2, 0xcc, 0x45, 0x3f, - 0xaf, 0x28, 0x7b, 0x3b, 0x97, 0x3b, 0x53, 0x97, 0xdd, 0xfc, 0xce, 0xb2, 0xf7, 0xf1, 0xfc, 0xce, - 0xf2, 0x37, 0xe4, 0x25, 0x12, 0xc1, 0x67, 0x73, 0xfb, 0x64, 0xb2, 0x96, 0x73, 0xf0, 0x05, 0xdd, - 0x78, 0x6f, 0xfd, 0xa3, 0x64, 0x93, 0x35, 0xf7, 0xa1, 0x16, 0xf3, 0xc9, 0xad, 0x0b, 0x2f, 0x76, - 0xbd, 0xdb, 0xe7, 0xb1, 0x13, 0x65, 0x3b, 0x50, 0xc6, 0x3e, 0x87, 0xf4, 0xe6, 0x34, 0xaf, 0xb1, - 0x9a, 0x1b, 0x73, 0x79, 0xa9, 0xb8, 0xbc, 0x82, 0x5a, 0xdc, 0x30, 0xe5, 0x4d, 0xca, 0xb5, 0x7c, - 0x79, 0x93, 0xf2, 0x7d, 0x16, 0xaa, 0x7b, 0x03, 0x8d, 0xd4, 0xf3, 0x0d, 0xc9, 0x25, 0xeb, 0x87, - 0x2f, 0x3b, 0x0b, 0x03, 0x7e, 0x04, 0xed, 0x5c, 0x63, 0x41, 0xee, 0xe7, 0x5c, 0x33, 0xb7, 0x05, - 0xeb, 0x7d, 0xbe, 0x40, 0x2a, 0x5e, 0xe1, 0xb1, 0x46, 0xb6, 0xa0, 0x8c, 0xb8, 0x95, 0xf7, 0x64, - 0xfa, 0x08, 0xca, 0x7b, 0x32, 0x03, 0x74, 0x58, 0x28, 0x80, 0x30, 0xf3, 0x33, 0x57, 0xa0, 0x7a, - 0x4e, 0x51, 0x1a, 0xa8, 0xf2, 0x8a, 0x32, 0xe0, 0x64, 0x2c, 0x11, 0x07, 0x3a, 0xf9, 0xc7, 0x74, - 0x92, 0xdb, 0xcb, 0x39, 0xef, 0xff, 0xbd, 0x07, 0x8b, 0xc4, 0xe2, 0x45, 0xb6, 0x1e, 0xfc, 0xf3, - 0x9b, 0x9a, 0xf6, 0xed, 0xfb, 0xdb, 0xda, 0x3f, 0xde, 0xdf, 0xd6, 0xfe, 0xfd, 0xfe, 0xb6, 0xf6, - 0xc7, 0xff, 0xdc, 0x5e, 0x82, 0x4e, 0x10, 0x9d, 0x6c, 0x70, 0x77, 0x38, 0xd9, 0x18, 0x4e, 0xf0, - 0xdf, 0x86, 0xa3, 0x0a, 0xfe, 0x3c, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x3f, 0xff, - 0xb2, 0xf7, 0x18, 0x00, 0x00, + 0xf1, 0x17, 0xf8, 0x66, 0xf3, 0x21, 0x7a, 0xac, 0x95, 0x61, 0xfa, 0x8d, 0xbf, 0xd7, 0x2b, 0x4b, + 0xff, 0xd0, 0x8e, 0xbc, 0x71, 0x6d, 0x6d, 0xaa, 0xe2, 0x5a, 0x3d, 0x62, 0x2b, 0xb2, 0x6c, 0x05, + 0x54, 0x9c, 0x43, 0x0e, 0x28, 0x08, 0x1c, 0x4a, 0x08, 0x41, 0x00, 0xc1, 0x0c, 0x29, 0xf3, 0x92, + 0x0f, 0x90, 0x5b, 0x6e, 0xb9, 0x26, 0xa7, 0xad, 0x7c, 0x83, 0x7c, 0x83, 0x3d, 0xe6, 0x98, 0x53, + 0x2a, 0xe5, 0xdc, 0x73, 0xc9, 0x07, 0xd8, 0xd4, 0xf4, 0x0c, 0x48, 0x00, 0xa2, 0x44, 0x5b, 0x95, + 0x9c, 0x38, 0xd3, 0xd3, 0xe8, 0xe9, 0xe9, 0xe7, 0x6f, 0x86, 0x40, 0xdc, 0x61, 0x18, 0x44, 0xdc, + 0x62, 0x8c, 0x87, 0xc7, 0x9d, 0x30, 0x0a, 0x78, 0x40, 0xea, 0x49, 0x5a, 0xbb, 0x3e, 0xa4, 0xdc, + 0x8e, 0xd7, 0xda, 0x0d, 0x1a, 0x45, 0x41, 0x34, 0x9b, 0x0e, 0xc6, 0x51, 0xe8, 0x4c, 0xa7, 0x2b, + 0x27, 0xc1, 0x49, 0x80, 0xc3, 0x27, 0x62, 0xa4, 0xa8, 0xcb, 0xd1, 0x88, 0x71, 0x1c, 0x2a, 0x02, + 0x1c, 0xcf, 0x24, 0x10, 0xea, 0x3b, 0xd1, 0x24, 0xe4, 0x6e, 0xe0, 0xc7, 0x34, 0xe3, 0xf7, 0x1a, + 0xdc, 0xe8, 0x8e, 0x58, 0x48, 0xfd, 0xde, 0x1e, 0xaa, 0x62, 0x1e, 0x6e, 0x9b, 0xf4, 0x37, 0x23, + 0xca, 0x38, 0xf9, 0x12, 0x56, 0xd9, 0x69, 0x30, 0xf2, 0x7a, 0x16, 0x93, 0x1c, 0x96, 0xd4, 0x96, + 0xe9, 0xda, 0x7d, 0x6d, 0xad, 0x62, 0xae, 0xc8, 0xd5, 0xd4, 0xe7, 0x8c, 0xac, 0x41, 0xab, 0x37, + 0x8a, 0x6c, 0xb1, 0x8b, 0xe5, 0xfa, 0x16, 0xa3, 0x0e, 0xd3, 0x73, 0xf7, 0xb5, 0xb5, 0x82, 0xd9, + 0x8c, 0xe9, 0x7b, 0x7e, 0x97, 0x3a, 0x8c, 0xac, 0x42, 0xc9, 0xb1, 0x3d, 0x8f, 0x46, 0x7a, 0xfe, + 0xbe, 0xb6, 0x56, 0x35, 0xd5, 0xcc, 0x78, 0x09, 0xfa, 0x79, 0x95, 0x58, 0x18, 0xf8, 0x8c, 0x92, + 0x0d, 0xb8, 0x66, 0x7b, 0x11, 0xb5, 0x7b, 0x93, 0x58, 0x29, 0xda, 0x53, 0xea, 0xb4, 0xd4, 0x42, + 0x37, 0xa6, 0x1b, 0x3e, 0x5c, 0xeb, 0x9e, 0xb9, 0xdc, 0x39, 0x3d, 0x08, 0x7a, 0x34, 0x3e, 0xd5, + 0xff, 0x43, 0x61, 0x18, 0xf4, 0x28, 0x7e, 0xd4, 0xdc, 0xd4, 0x3b, 0x29, 0xaf, 0x24, 0xd8, 0x91, + 0x8b, 0x6c, 0x40, 0x29, 0xb2, 0xfd, 0x13, 0x2a, 0xce, 0x90, 0x5f, 0xab, 0x6d, 0x5e, 0x4f, 0xf3, + 0x9b, 0x62, 0xcd, 0x54, 0x2c, 0xc6, 0x0a, 0x90, 0xe4, 0x7e, 0x52, 0x65, 0xa3, 0x05, 0xcd, 0x97, + 0x94, 0x27, 0x54, 0x30, 0x5e, 0xc0, 0xf2, 0x94, 0xa2, 0xce, 0xf5, 0x49, 0x5a, 0x19, 0x4f, 0xa0, + 0x88, 0x3b, 0x93, 0x15, 0x28, 0x32, 0x6e, 0x47, 0x1c, 0xbf, 0xab, 0x9b, 0x72, 0x42, 0x5a, 0x90, + 0xa7, 0x7e, 0x0f, 0xad, 0x5e, 0x37, 0xc5, 0xd0, 0xf8, 0x63, 0x1e, 0xca, 0xdd, 0xee, 0xd1, 0x01, + 0xe5, 0x36, 0x21, 0x50, 0x18, 0x8d, 0xdc, 0x9e, 0xfa, 0x04, 0xc7, 0xe4, 0x31, 0x14, 0xf1, 0x0c, + 0xf8, 0xcd, 0x05, 0xa7, 0x94, 0x1c, 0x62, 0x4b, 0x27, 0x72, 0x9e, 0x6d, 0xa2, 0xd3, 0x1a, 0xa6, + 0x9c, 0x08, 0x5f, 0x7a, 0xd4, 0x3f, 0xe1, 0xa7, 0x7a, 0x01, 0x7d, 0xad, 0x66, 0xe4, 0x06, 0x94, + 0x9d, 0xbe, 0xe5, 0xdb, 0x43, 0xaa, 0x17, 0x95, 0x93, 0xfb, 0x6f, 0xec, 0x21, 0x25, 0xb7, 0xa0, + 0x1a, 0xd1, 0x13, 0x0c, 0x92, 0x9e, 0x5e, 0xc2, 0x6f, 0x2a, 0x92, 0xb0, 0xd7, 0x23, 0xcf, 0xa1, + 0xae, 0x16, 0x69, 0x18, 0x38, 0xa7, 0x7a, 0x59, 0x69, 0xa5, 0xf2, 0xc3, 0xc4, 0xb5, 0x5d, 0xb1, + 0x64, 0xd6, 0xa2, 0xd9, 0x84, 0xac, 0xc3, 0x35, 0x11, 0xa6, 0x03, 0x3a, 0xb1, 0xe8, 0x7b, 0xc7, + 0x1b, 0x31, 0x77, 0x4c, 0xf5, 0x0a, 0x46, 0xc7, 0x32, 0xf5, 0x7b, 0xfb, 0x74, 0xb2, 0x1b, 0x93, + 0x85, 0x02, 0x3c, 0xe0, 0xb6, 0x67, 0x0d, 0xc6, 0x4c, 0xaf, 0x4a, 0x05, 0x90, 0xb0, 0x3f, 0x66, + 0xe4, 0x1e, 0xd4, 0xe4, 0xe2, 0xf1, 0x84, 0x53, 0xa6, 0x03, 0x2e, 0x03, 0x92, 0xb6, 0x04, 0x85, + 0x7c, 0x09, 0x35, 0x3b, 0x74, 0xad, 0x31, 0x8d, 0x98, 0x1b, 0xf8, 0x7a, 0x0d, 0xdd, 0x76, 0xbd, + 0x13, 0xe7, 0xe8, 0x37, 0x87, 0x7b, 0xef, 0xe4, 0x92, 0x09, 0x76, 0xe8, 0xaa, 0xb1, 0xd8, 0xd3, + 0x71, 0xc3, 0x53, 0x1a, 0x59, 0xee, 0x58, 0xaf, 0xa3, 0xfd, 0x2b, 0x92, 0xb0, 0x37, 0x36, 0x7e, + 0x0b, 0x35, 0x93, 0x9e, 0x45, 0x2e, 0xa7, 0xe6, 0xc8, 0xa3, 0xe4, 0x21, 0x34, 0x03, 0x4f, 0x9e, + 0x25, 0x8c, 0x68, 0xdf, 0x7d, 0xaf, 0x1c, 0x56, 0x0f, 0x3c, 0x71, 0x90, 0x43, 0xa4, 0x09, 0x2e, + 0x9f, 0x9e, 0x25, 0xb9, 0xa4, 0xd7, 0xeb, 0x3e, 0x3d, 0x9b, 0x71, 0xfd, 0x1f, 0x34, 0x04, 0x17, + 0x77, 0x87, 0x94, 0x71, 0x7b, 0x18, 0xa2, 0xef, 0x0a, 0xc8, 0x74, 0x14, 0xd3, 0x8c, 0x5f, 0x41, + 0xe3, 0x17, 0xa1, 0x17, 0xd8, 0xbd, 0x38, 0x53, 0x36, 0xa0, 0x20, 0x0c, 0x8e, 0xfb, 0xd6, 0x36, + 0x3f, 0xcb, 0xc4, 0xa4, 0x8c, 0xa6, 0x57, 0x4b, 0x26, 0x32, 0x91, 0x15, 0x28, 0xf4, 0x6c, 0x6e, + 0xcb, 0xed, 0x05, 0x55, 0xcc, 0xb6, 0xca, 0x50, 0x74, 0x4e, 0x47, 0xfe, 0x40, 0x24, 0x41, 0x2c, + 0x5c, 0xa5, 0x45, 0x0f, 0x1a, 0x7b, 0x22, 0x6b, 0x78, 0xbc, 0xdd, 0x3a, 0x94, 0x9d, 0xc0, 0xe7, + 0xf4, 0x3d, 0x57, 0x3b, 0xb6, 0xa6, 0xe6, 0xdc, 0x96, 0x74, 0x33, 0x66, 0x20, 0x5f, 0x40, 0x9e, + 0x31, 0xae, 0xa2, 0x75, 0xbe, 0x66, 0xa6, 0xe0, 0x30, 0x06, 0x40, 0x0e, 0x46, 0x1e, 0x77, 0xaf, + 0xbe, 0xd5, 0x63, 0x28, 0x30, 0xc6, 0xe3, 0xfc, 0xbf, 0x60, 0x2f, 0x64, 0x31, 0x9e, 0x43, 0x33, + 0xde, 0x47, 0xa5, 0xf5, 0x43, 0x28, 0x62, 0x15, 0x57, 0xdb, 0x34, 0x3b, 0x71, 0x4d, 0xdf, 0x15, + 0xbf, 0xa6, 0x5c, 0x34, 0x7e, 0xa7, 0x41, 0x73, 0x3b, 0x18, 0x86, 0xb6, 0x33, 0xd5, 0x70, 0x9a, + 0x90, 0xda, 0xc2, 0x84, 0x7c, 0x00, 0xf5, 0x60, 0xc4, 0xc3, 0x11, 0xb7, 0x3c, 0x3a, 0xa6, 0x1e, + 0x1a, 0xa5, 0x68, 0xd6, 0x24, 0xed, 0xb5, 0x20, 0x25, 0xcf, 0x9b, 0x5f, 0x70, 0x5e, 0xe3, 0x1a, + 0x2c, 0x4f, 0x75, 0x51, 0xae, 0xfa, 0xbe, 0x00, 0xcb, 0x3b, 0xc1, 0x99, 0x9f, 0x0c, 0x8e, 0x1f, + 0x2b, 0xb3, 0x68, 0x68, 0x96, 0x2f, 0xd2, 0xfa, 0x65, 0x98, 0x3b, 0x5d, 0xc6, 0xd9, 0xae, 0xcf, + 0xa3, 0x89, 0x34, 0x94, 0x48, 0xaf, 0x88, 0xb2, 0xc0, 0x1b, 0xd3, 0x9e, 0xc5, 0x99, 0x8a, 0x46, + 0x88, 0x49, 0x47, 0x8c, 0xfc, 0x60, 0xb1, 0x7f, 0xb7, 0x0a, 0xdf, 0xfd, 0xfd, 0xde, 0x12, 0x7a, + 0x59, 0x94, 0x34, 0x2c, 0x31, 0x55, 0x2c, 0x31, 0x38, 0x26, 0x5b, 0xa2, 0x86, 0x60, 0x3a, 0x59, + 0xd1, 0xc8, 0xa3, 0x7a, 0x03, 0x65, 0xdd, 0xcc, 0x18, 0x72, 0x96, 0x70, 0x4a, 0x5e, 0x2d, 0x4a, + 0xe4, 0xe0, 0x0b, 0x58, 0x66, 0x3c, 0x88, 0xec, 0x13, 0x6a, 0x1d, 0xdb, 0xce, 0x40, 0x14, 0xd5, + 0x26, 0x8a, 0x59, 0xed, 0x88, 0xf9, 0x28, 0xec, 0x74, 0xe5, 0xf2, 0x96, 0x5c, 0x35, 0x9b, 0x2c, + 0x35, 0x17, 0xcd, 0x30, 0x16, 0xe0, 0xd8, 0xce, 0x29, 0x15, 0xc5, 0xee, 0x1a, 0x2a, 0x19, 0x73, + 0x6e, 0x0b, 0xf2, 0x5e, 0x8f, 0xb4, 0xa1, 0xea, 0x32, 0x2b, 0xb2, 0xcf, 0xac, 0xc1, 0x58, 0x5f, + 0xc6, 0x92, 0x55, 0x76, 0x99, 0x69, 0x9f, 0xed, 0x8f, 0xc9, 0x33, 0xa8, 0xc5, 0x65, 0xc3, 0xef, + 0x07, 0x7a, 0x0b, 0x55, 0x20, 0xb1, 0x0a, 0xdb, 0xb2, 0x80, 0xf8, 0xfd, 0xc0, 0x04, 0x67, 0x3a, + 0x26, 0x3b, 0xe2, 0xfc, 0x68, 0x7e, 0x8b, 0x4f, 0x42, 0xaa, 0x13, 0x2c, 0x51, 0x0f, 0x2e, 0x75, + 0xd4, 0xd1, 0x24, 0xa4, 0xc2, 0x02, 0xd3, 0x49, 0x32, 0x72, 0xae, 0x2f, 0x88, 0x9c, 0xf6, 0x1b, + 0xa8, 0x4e, 0x1d, 0x2d, 0x7a, 0xd0, 0x80, 0x4e, 0x30, 0x7c, 0xab, 0xa6, 0x18, 0x92, 0x0d, 0x28, + 0x8e, 0x6d, 0x6f, 0x44, 0x2f, 0xcf, 0x5a, 0xc9, 0xf3, 0x75, 0xee, 0x2b, 0xed, 0x67, 0x85, 0x4a, + 0xa5, 0x55, 0x35, 0xf3, 0xa3, 0xc8, 0x33, 0x4c, 0x28, 0x62, 0xc6, 0x10, 0x1d, 0xca, 0x43, 0xca, + 0x98, 0xad, 0x32, 0xa3, 0x6a, 0xc6, 0x53, 0xf2, 0x04, 0x6a, 0xc2, 0xa4, 0xd4, 0x92, 0x09, 0x97, + 0x9b, 0x9b, 0x70, 0x80, 0x2c, 0x38, 0x36, 0x3e, 0x68, 0xd0, 0x9a, 0x9d, 0x5f, 0x25, 0xec, 0x93, + 0xc5, 0x79, 0xa7, 0x02, 0x45, 0x65, 0xdf, 0x4d, 0xa8, 0xb8, 0xcc, 0xa2, 0xc3, 0x90, 0x4f, 0x70, + 0x4f, 0x74, 0xdb, 0xae, 0x98, 0x8a, 0x1c, 0x96, 0xba, 0xe4, 0xe7, 0xc9, 0x4a, 0x56, 0x80, 0x59, + 0x53, 0x2d, 0xcc, 0x6f, 0xaa, 0xc5, 0x54, 0x53, 0x8d, 0x4b, 0x52, 0x69, 0x71, 0x49, 0x7a, 0x01, + 0xb7, 0xbb, 0x94, 0xc7, 0xc7, 0xec, 0x86, 0x94, 0xf6, 0x5e, 0xbb, 0x43, 0x77, 0x5a, 0x67, 0xee, + 0x41, 0x8d, 0x09, 0xa2, 0xe5, 0x09, 0x2a, 0x9e, 0xba, 0x60, 0x02, 0x9b, 0xf2, 0x19, 0xf7, 0xe0, + 0xce, 0x05, 0x02, 0x54, 0x71, 0x08, 0xa1, 0x70, 0x68, 0xbb, 0x51, 0xd2, 0xe1, 0x75, 0xe9, 0xf0, + 0x95, 0xa4, 0xc3, 0xeb, 0xca, 0xb3, 0xe4, 0x73, 0xc8, 0x05, 0xb2, 0x01, 0x35, 0xb3, 0xaa, 0x0b, + 0x39, 0x9d, 0xb7, 0x87, 0x66, 0x2e, 0x08, 0x8d, 0x9b, 0x90, 0x7b, 0x7b, 0x48, 0xca, 0x90, 0x3f, + 0x1c, 0xf1, 0xd6, 0x12, 0x01, 0x28, 0xed, 0x50, 0x8f, 0x72, 0xda, 0xd2, 0x8c, 0x2e, 0xc0, 0x2f, + 0x45, 0x8a, 0x6e, 0xd9, 0xdc, 0x39, 0xc5, 0x9e, 0x1a, 0x0c, 0x87, 0x2e, 0xb7, 0x14, 0x30, 0x2d, + 0x98, 0x15, 0x49, 0x38, 0x12, 0x60, 0xb4, 0x18, 0xda, 0x6e, 0x14, 0x57, 0x6f, 0x72, 0x7e, 0x3f, + 0x53, 0x32, 0x18, 0x7f, 0xd2, 0xa0, 0x8e, 0x52, 0xaf, 0xd4, 0xfd, 0x9e, 0x42, 0xf1, 0x58, 0x68, + 0xa3, 0xc2, 0x2e, 0x83, 0xdf, 0x66, 0xda, 0xbe, 0x5a, 0x32, 0x25, 0xe3, 0xa7, 0x94, 0xe4, 0x59, + 0x17, 0x3d, 0x81, 0x86, 0xd2, 0x51, 0x85, 0xeb, 0xe3, 0x74, 0x7f, 0xb9, 0x2c, 0xc4, 0x36, 0xa0, + 0x28, 0x54, 0x5d, 0xd0, 0xc8, 0x24, 0x8f, 0xc0, 0x02, 0xa6, 0x7d, 0x96, 0xb0, 0x72, 0x0b, 0xf2, + 0x9c, 0x7b, 0xca, 0xbe, 0x62, 0xf8, 0xf1, 0xa6, 0x25, 0x4d, 0xc8, 0x4d, 0x8b, 0x7c, 0x8e, 0x33, + 0xe3, 0x5b, 0x0d, 0x96, 0x63, 0xe9, 0x57, 0xb2, 0xf6, 0xb3, 0xb4, 0xb5, 0x6f, 0x65, 0x93, 0xf4, + 0xec, 0xbf, 0x66, 0xf0, 0x5f, 0x43, 0x6b, 0xa6, 0xe9, 0xff, 0xd8, 0xe6, 0x7f, 0xd1, 0x60, 0x75, + 0x67, 0x14, 0x7a, 0xae, 0x63, 0x73, 0xba, 0x43, 0x39, 0x75, 0xae, 0x84, 0x57, 0x6e, 0x41, 0x15, + 0x6f, 0x01, 0x02, 0x13, 0xaa, 0xcc, 0xab, 0x20, 0x61, 0x9f, 0x4e, 0x04, 0x1c, 0x57, 0x00, 0x19, + 0x8d, 0x50, 0x37, 0x4b, 0x12, 0x16, 0x8b, 0x32, 0x26, 0x30, 0x64, 0xe0, 0x7b, 0x13, 0xac, 0x41, + 0x15, 0xb3, 0x3c, 0xa0, 0x93, 0xb7, 0xbe, 0x37, 0x21, 0x06, 0x34, 0x86, 0xae, 0x6f, 0xcd, 0x92, + 0x4c, 0x16, 0xa3, 0xda, 0xd0, 0xf5, 0xb7, 0x55, 0x9e, 0x19, 0x07, 0x50, 0xda, 0x1f, 0x7f, 0x52, + 0x19, 0x48, 0xa5, 0x6d, 0x3e, 0x9d, 0xb6, 0xc6, 0x9f, 0x35, 0xb8, 0x71, 0xce, 0x14, 0xca, 0xfc, + 0x3f, 0x9c, 0xdd, 0x0d, 0x2e, 0x41, 0x56, 0xf1, 0xb5, 0x00, 0xdd, 0xf0, 0x14, 0xaa, 0x78, 0x25, + 0x48, 0x34, 0x86, 0xb9, 0x5e, 0x13, 0x26, 0x90, 0x5f, 0xac, 0xc7, 0xc1, 0x9d, 0x47, 0xc7, 0xad, + 0xa4, 0xb9, 0xe5, 0x51, 0xe3, 0xca, 0xf1, 0xef, 0x3c, 0x94, 0xf6, 0xdf, 0xc5, 0x57, 0x2b, 0xc4, + 0x21, 0x5a, 0x02, 0x87, 0x3c, 0x80, 0x3a, 0x76, 0x0a, 0x2b, 0xe8, 0xf7, 0x19, 0xe5, 0x78, 0x55, + 0x28, 0x98, 0x35, 0xa4, 0xbd, 0x45, 0x52, 0xa2, 0xce, 0xe7, 0x52, 0x75, 0x7e, 0xfa, 0xa9, 0x5a, + 0xad, 0x27, 0x3e, 0x7d, 0x2d, 0x59, 0x9a, 0x90, 0x73, 0xfa, 0xea, 0xfe, 0x9c, 0x73, 0xfa, 0xc2, + 0xac, 0x2e, 0xb3, 0x7a, 0x58, 0x2a, 0x95, 0x23, 0x2b, 0x2e, 0x93, 0xa5, 0x53, 0x38, 0x59, 0x86, + 0x06, 0x8f, 0xaf, 0x34, 0x65, 0x9c, 0x1f, 0x31, 0x72, 0x07, 0x04, 0xfc, 0xc2, 0xfe, 0x39, 0xf5, + 0x70, 0x55, 0x51, 0x8e, 0x58, 0x3a, 0xa8, 0x4a, 0x17, 0x07, 0x55, 0x39, 0x15, 0x54, 0xab, 0x50, + 0x62, 0xa7, 0xf6, 0xe6, 0x8f, 0x9e, 0xe3, 0x1d, 0xac, 0x6e, 0xaa, 0x99, 0xb8, 0xa6, 0x49, 0x69, + 0xcc, 0xb7, 0x43, 0x76, 0x1a, 0xa0, 0x42, 0xf2, 0x0a, 0xb6, 0x8c, 0x0b, 0x5d, 0x45, 0x3f, 0x62, + 0x64, 0x0b, 0x5a, 0x4e, 0x30, 0x0c, 0x23, 0xca, 0xc4, 0x0d, 0x4a, 0x42, 0x99, 0x06, 0x36, 0x8f, + 0x1b, 0x53, 0x00, 0x34, 0x5b, 0x47, 0x00, 0xb3, 0xec, 0xa4, 0x09, 0xc4, 0x84, 0x95, 0xbe, 0xeb, + 0x51, 0x6b, 0xf6, 0xfe, 0x21, 0x81, 0x94, 0xc4, 0x72, 0xf7, 0x3b, 0xa9, 0x77, 0x91, 0x9f, 0xba, + 0x1e, 0xdd, 0x9d, 0x12, 0x10, 0x56, 0x91, 0xfe, 0x39, 0x9a, 0xf1, 0xaf, 0x3c, 0xd4, 0xbf, 0x09, + 0x43, 0x6f, 0x12, 0xe7, 0xe8, 0x5a, 0xaa, 0x82, 0x65, 0x23, 0xe6, 0x9d, 0xec, 0xc9, 0x58, 0xbe, + 0xd6, 0xe3, 0xaa, 0x50, 0x9f, 0x1b, 0x5c, 0xef, 0x12, 0x45, 0xe1, 0x1c, 0x8a, 0xcd, 0x5d, 0x01, + 0xc5, 0xfe, 0x04, 0x1a, 0x49, 0x19, 0x4c, 0x6f, 0xe0, 0xbe, 0x17, 0x0b, 0x31, 0xeb, 0x89, 0xcf, + 0xd9, 0x5c, 0x10, 0x5b, 0x9c, 0x0b, 0x62, 0xe7, 0xe0, 0xe5, 0xfc, 0x27, 0xe1, 0xe5, 0x44, 0xa1, + 0x2b, 0x2c, 0x2a, 0x74, 0x19, 0x54, 0x5c, 0xfb, 0x28, 0x54, 0xfc, 0x15, 0xd4, 0x86, 0x36, 0xe3, + 0x34, 0x12, 0xe1, 0xca, 0xf4, 0x26, 0x5a, 0xe2, 0x46, 0x3a, 0x02, 0x0e, 0x90, 0x61, 0x9f, 0x4e, + 0x4c, 0x18, 0xc6, 0x43, 0x66, 0x0c, 0xa0, 0xa1, 0xfc, 0x7d, 0x55, 0xa8, 0x38, 0x6d, 0x1c, 0xb9, + 0x45, 0x8d, 0xc3, 0x78, 0x04, 0xf5, 0x6d, 0x8f, 0xda, 0x51, 0x1c, 0x5c, 0xab, 0x50, 0x4a, 0x3c, + 0x02, 0x54, 0x4d, 0x35, 0x33, 0xbe, 0x86, 0x86, 0xe2, 0xfb, 0xe4, 0xe6, 0xb4, 0xfe, 0x10, 0x60, + 0xf6, 0xb0, 0x24, 0x00, 0xd6, 0x9b, 0x20, 0x1a, 0xda, 0x9e, 0x04, 0x5b, 0xf2, 0xe5, 0xad, 0xa5, + 0xad, 0x3f, 0x81, 0xeb, 0x73, 0x2e, 0x09, 0x82, 0xe5, 0x35, 0x3d, 0xb1, 0x9d, 0x49, 0x6b, 0x89, + 0xd4, 0xa1, 0x22, 0x2c, 0x14, 0xda, 0x0e, 0x6d, 0x69, 0x9b, 0xdf, 0x57, 0xa0, 0x2a, 0xbf, 0xee, + 0x76, 0x8f, 0xc8, 0xcf, 0x53, 0x9b, 0xdc, 0xbb, 0xf0, 0x5d, 0x4b, 0x8a, 0x6e, 0xdf, 0xbf, 0x98, + 0x41, 0xc1, 0xcd, 0x25, 0xf2, 0x0a, 0xca, 0xea, 0xf5, 0x8c, 0xdc, 0x4e, 0xb3, 0xa7, 0x9f, 0xd9, + 0xda, 0x77, 0x2e, 0x58, 0x9d, 0x4a, 0x7a, 0x09, 0x25, 0xf9, 0x28, 0x41, 0x32, 0x10, 0x22, 0xf5, + 0x0e, 0xd2, 0xbe, 0x3d, 0x7f, 0x31, 0x16, 0xb3, 0xa6, 0x91, 0x5d, 0x28, 0xc9, 0x8b, 0x7f, 0x56, + 0x50, 0xea, 0xd9, 0x21, 0x2b, 0x28, 0xfd, 0x56, 0x20, 0x4f, 0xa6, 0xae, 0xde, 0xd9, 0x93, 0xa5, + 0x5f, 0x07, 0xb2, 0x27, 0xcb, 0xde, 0xd7, 0x97, 0x48, 0x04, 0x9f, 0xcd, 0x45, 0xed, 0x64, 0x3d, + 0x63, 0xe0, 0x4b, 0xee, 0x06, 0xed, 0x8d, 0x8f, 0xe2, 0x9d, 0xee, 0xb9, 0x0f, 0x95, 0x78, 0x9d, + 0xdc, 0xb9, 0xf4, 0x9a, 0xd9, 0xbe, 0x7b, 0xd1, 0xf2, 0x54, 0xd8, 0x0e, 0x14, 0x11, 0x75, 0x91, + 0xf6, 0x1c, 0x28, 0x1d, 0x8b, 0xb9, 0x35, 0x77, 0x2d, 0xe1, 0x97, 0x03, 0xa8, 0xc4, 0xf0, 0x2d, + 0xab, 0x52, 0x06, 0x80, 0x66, 0x55, 0xca, 0xa2, 0x3e, 0x14, 0xf7, 0x16, 0x6a, 0x89, 0xc7, 0x24, + 0x92, 0x09, 0xd6, 0xf3, 0xef, 0x4c, 0x0b, 0x1d, 0x7e, 0x0c, 0xcb, 0x19, 0x98, 0x43, 0x1e, 0x66, + 0x4c, 0x33, 0x17, 0x10, 0xb6, 0x3f, 0x5f, 0xc0, 0x15, 0xef, 0xf0, 0x54, 0x23, 0x5b, 0x50, 0xc4, + 0xba, 0x95, 0xb5, 0x64, 0xb2, 0x79, 0x65, 0x2d, 0x99, 0x2a, 0x74, 0x98, 0x28, 0x80, 0x65, 0x46, + 0xf4, 0x46, 0x96, 0x15, 0x94, 0x2c, 0x54, 0x59, 0x41, 0xa9, 0xe2, 0x64, 0x2c, 0x11, 0x07, 0x5a, + 0xd9, 0xa7, 0x7d, 0x92, 0x39, 0xcb, 0x05, 0xff, 0x46, 0xb4, 0x1f, 0x2d, 0x62, 0x8b, 0x37, 0xd9, + 0x7a, 0xf4, 0xb7, 0x6f, 0x2b, 0xda, 0x77, 0x1f, 0xee, 0x6a, 0x7f, 0xfd, 0x70, 0x57, 0xfb, 0xc7, + 0x87, 0xbb, 0xda, 0x1f, 0xfe, 0x79, 0x77, 0x09, 0x5a, 0x41, 0x74, 0xd2, 0xe1, 0xee, 0x60, 0xdc, + 0x19, 0x8c, 0xf1, 0xbf, 0x8f, 0xe3, 0x12, 0xfe, 0x3c, 0xfb, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x99, 0xc4, 0x8b, 0x0d, 0x99, 0x19, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5186,6 +5209,18 @@ func (m *KVMeta) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.FileEncryptionInfo != nil { + { + size, err := m.FileEncryptionInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintImportSstpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } if m.CompressionType != 0 { i = encodeVarintImportSstpb(dAtA, i, uint64(m.CompressionType)) i-- @@ -5293,6 +5328,20 @@ func (m *ApplyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.MasterKeys) > 0 { + for iNdEx := len(m.MasterKeys) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MasterKeys[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintImportSstpb(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } if len(m.RewriteRules) > 0 { for iNdEx := len(m.RewriteRules) - 1; iNdEx >= 0; iNdEx-- { { @@ -6324,6 +6373,10 @@ func (m *KVMeta) Size() (n int) { if m.CompressionType != 0 { n += 1 + sovImportSstpb(uint64(m.CompressionType)) } + if m.FileEncryptionInfo != nil { + l = m.FileEncryptionInfo.Size() + n += 1 + l + sovImportSstpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -6370,6 +6423,12 @@ func (m *ApplyRequest) Size() (n int) { n += 1 + l + sovImportSstpb(uint64(l)) } } + if len(m.MasterKeys) > 0 { + for _, e := range m.MasterKeys { + l = e.Size() + n += 1 + l + sovImportSstpb(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -10895,6 +10954,42 @@ func (m *KVMeta) Unmarshal(dAtA []byte) error { break } } + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FileEncryptionInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowImportSstpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthImportSstpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthImportSstpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FileEncryptionInfo == nil { + m.FileEncryptionInfo = &encryptionpb.FileEncryptionInfo{} + } + if err := m.FileEncryptionInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipImportSstpb(dAtA[iNdEx:]) @@ -11223,6 +11318,40 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MasterKeys", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowImportSstpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthImportSstpb + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthImportSstpb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MasterKeys = append(m.MasterKeys, &encryptionpb.MasterKey{}) + if err := m.MasterKeys[len(m.MasterKeys)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipImportSstpb(dAtA[iNdEx:]) diff --git a/proto/brpb.proto b/proto/brpb.proto index 9c64a1545..f328f779e 100644 --- a/proto/brpb.proto +++ b/proto/brpb.proto @@ -277,6 +277,14 @@ enum CompressionType { ZSTD = 3; } +message StreamBackupTaskSecurityConfig { + oneof encryption { + // not recommended in production. configure KMS based or locally managed master key instead in TiKV StreamBackupConfig + CipherInfo plaintext_data_key = 1; + MasterKeyConfig master_key_config = 2; + } +} + // BackupMpde represents the mode of this whole backup request to the cluster. // and we need to store it in `backupmeta`. enum BackupMode { @@ -295,6 +303,11 @@ message CipherInfo { bytes cipher_key = 2; } +message MasterKeyConfig { + encryptionpb.EncryptionMethod encryption_type = 1; + repeated encryptionpb.MasterKey master_keys = 2; +} + message BackupRequest { uint64 cluster_id = 1; @@ -356,7 +369,7 @@ message StreamBackupTaskInfo { uint64 start_ts = 2; uint64 end_ts = 3; - // Misc meta datas. + // Misc meta data. // The name of the task, also the ID of the task. string name = 4; // The table filter of the task. @@ -366,7 +379,10 @@ message StreamBackupTaskInfo { // compression type CompressionType compression_type = 6; - // The last timestamp of the task has been updated. + // security config for backup files + StreamBackupTaskSecurityConfig security_config = 7; + + // The last timestamp of the task has been updated. // This is a simple solution for unfrequent config changing: // When we watched a config change(via polling or etcd watching), // We perform a incremental scan between [last_update_ts, now), @@ -665,7 +681,7 @@ message DataFileGroup { } message DataFileInfo { - // SHA256 of the file. + // Checksum of the plaintext file, i.e., pre-compression, pre-encryption. bytes sha256 = 1; // Path of the file. string path = 2; @@ -721,12 +737,12 @@ message DataFileInfo { bytes region_end_key = 21; // The region epoch that the log file belongs to. // In older versions, this might be empty. - // If a region get split or merged during observing, + // If a region get split or merged during observing, // the file may contain multi epoches. repeated metapb.RegionEpoch region_epoch = 22; - // It may support encrypting at future. - reserved "iv"; + // Encryption information of this data file, not set if plaintext. + encryptionpb.FileEncryptionInfo file_encryption_info = 23; } message StreamBackupError { @@ -812,12 +828,12 @@ message LogFileCompaction { } message MetaEdit { - // Path to the meta file. + // Path to the meta file. string path = 1; // Delete the physical files (MetaFileGroup) in the meta file. repeated string delete_physical_files = 2; // Delete the logical files (MetaFileInfo) in the meta file. - // Note: Even the operation have been performed in the meta, + // Note: Even the operation have been performed in the meta, // this modification should be kept as long as the corresponding physical // file not deleted. Or we may cannot know when to delete the physical file. // Then the file will be leak until truncated. @@ -826,7 +842,7 @@ message MetaEdit { bool destruct_self = 4; } -// An extended version of `SpansOfFile`, added more metadata for the +// An extended version of `SpansOfFile`, added more metadata for the // execution of delayed deletion. message DeleteSpansOfFile { string path = 1; diff --git a/proto/encryptionpb.proto b/proto/encryptionpb.proto index 2328088c7..af03b9d66 100644 --- a/proto/encryptionpb.proto +++ b/proto/encryptionpb.proto @@ -96,6 +96,30 @@ message MasterKeyKms { string region = 3; // KMS endpoint. Normally not needed. string endpoint = 4; + // optional, used to set up azure master key backend + AzureKms azure_kms = 5; + // optional, used to set up gcp master key backend + GcpKms gcp_kms = 6; + +} + +message AzureKms { + string tenant_id = 1; + string client_id = 2; + string client_secret = 3; + // Key vault to encrypt/decrypt data key. + string key_vault_url = 4; + // optional hsm used to generate data key + string hsm_name = 5; + string hsm_url = 6; + string client_certificate = 7; + string client_certificate_path = 8; + string client_certificate_password = 9; + +} + +message GcpKms { + string credential = 1; } message EncryptedContent { @@ -113,3 +137,25 @@ message EncryptedContent { // Valid only when KMS is used. bytes ciphertext_key = 5; } + +message FileEncryptionInfo { + oneof mode { + PlainTextDataKey plain_text_data_key = 1; + MasterKeyBased master_key_based = 2; + } + // file encryption method + encryptionpb.EncryptionMethod encryption_method = 3; + // iv to encrypt the file by data key + bytes file_iv = 4; + // file checksum after encryption, optional if using GCM + bytes checksum = 5; +} + +// not recommended in production. +// user needs to pass back the same data key for restore. +message PlainTextDataKey {} + +message MasterKeyBased { + // encrypted data key with metadata + repeated encryptionpb.EncryptedContent data_key_encrypted_content = 1; +} diff --git a/proto/import_sstpb.proto b/proto/import_sstpb.proto index 089dd35f4..508f98c77 100644 --- a/proto/import_sstpb.proto +++ b/proto/import_sstpb.proto @@ -8,6 +8,7 @@ import "kvrpcpb.proto"; import "gogoproto/gogo.proto"; import "rustproto.proto"; import "brpb.proto"; +import "encryptionpb.proto"; option (gogoproto.sizer_all) = true; option (gogoproto.marshaler_all) = true; @@ -394,6 +395,9 @@ message KVMeta { // the compression type for the file. backup.CompressionType compression_type = 13; + + // encryption information of the kv file, not set if encryption is not enabled. + encryptionpb.FileEncryptionInfo file_encryption_info = 14; } @@ -425,8 +429,11 @@ message ApplyRequest { // context represents region info and it used to build raft commands. kvrpcpb.Context context = 4; - // cipher_info is used to decrypt kv file when download file. + // plaintext data key to decrypt kv file if configured during log backup. backup.CipherInfo cipher_info = 11; + + // master keys config used to decrypt data keys in restore if configured during log backup. + repeated encryptionpb.MasterKey master_keys = 14; } message ApplyResponse { diff --git a/scripts/check.sh b/scripts/check.sh index 4a0bd6fbf..d6c982cd0 100755 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -1,12 +1,17 @@ #!/usr/bin/env bash check_protoc_version() { - version=$(protoc --version) - major=$(echo ${version} | sed -n -e 's/.*\([0-9]\{1,\}\)\.[0-9]\{1,\}\.[0-9]\{1,\}.*/\1/p') - minor=$(echo ${version} | sed -n -e 's/.*[0-9]\{1,\}\.\([0-9]\{1,\}\)\.[0-9]\{1,\}.*/\1/p') + version=$(protoc --version | awk '{print $NF}') + major=$(echo ${version} | cut -d '.' -f 1) + minor=$(echo ${version} | cut -d '.' -f 2) if [ "$major" -eq 3 ] && [ "$minor" -ge 8 ]; then return 0 fi + # protobuf bumps the major version to 21 after 3. + # https://github.com/protocolbuffers/protobuf/releases/tag/v21.7 + if [ "$major" -ge 21 ]; then + return 0 + fi echo "protoc version not match, version 3.8.x+ is needed, current version: ${version}" return 1 } diff --git a/scripts/proto.lock b/scripts/proto.lock index 69c5e845f..02344e3e2 100644 --- a/scripts/proto.lock +++ b/scripts/proto.lock @@ -794,6 +794,23 @@ } ] }, + { + "name": "StreamBackupTaskSecurityConfig", + "fields": [ + { + "id": 1, + "name": "plaintext_data_key", + "type": "CipherInfo", + "oneof_parent": "encryption" + }, + { + "id": 2, + "name": "master_key_config", + "type": "MasterKeyConfig", + "oneof_parent": "encryption" + } + ] + }, { "name": "CipherInfo", "fields": [ @@ -809,6 +826,22 @@ } ] }, + { + "name": "MasterKeyConfig", + "fields": [ + { + "id": 1, + "name": "encryption_type", + "type": "encryptionpb.EncryptionMethod" + }, + { + "id": 2, + "name": "master_keys", + "type": "encryptionpb.MasterKey", + "is_repeated": true + } + ] + }, { "name": "BackupRequest", "fields": [ @@ -949,6 +982,11 @@ "id": 6, "name": "compression_type", "type": "CompressionType" + }, + { + "id": 7, + "name": "security_config", + "type": "StreamBackupTaskSecurityConfig" } ], "reserved_names": [ @@ -1628,10 +1666,12 @@ "name": "region_epoch", "type": "metapb.RegionEpoch", "is_repeated": true + }, + { + "id": 23, + "name": "file_encryption_info", + "type": "encryptionpb.FileEncryptionInfo" } - ], - "reserved_names": [ - "iv" ] }, { @@ -5433,6 +5473,76 @@ "id": 4, "name": "endpoint", "type": "string" + }, + { + "id": 5, + "name": "azure_kms", + "type": "AzureKms" + }, + { + "id": 6, + "name": "gcp_kms", + "type": "GcpKms" + } + ] + }, + { + "name": "AzureKms", + "fields": [ + { + "id": 1, + "name": "tenant_id", + "type": "string" + }, + { + "id": 2, + "name": "client_id", + "type": "string" + }, + { + "id": 3, + "name": "client_secret", + "type": "string" + }, + { + "id": 4, + "name": "key_vault_url", + "type": "string" + }, + { + "id": 5, + "name": "hsm_name", + "type": "string" + }, + { + "id": 6, + "name": "hsm_url", + "type": "string" + }, + { + "id": 7, + "name": "client_certificate", + "type": "string" + }, + { + "id": 8, + "name": "client_certificate_path", + "type": "string" + }, + { + "id": 9, + "name": "client_certificate_password", + "type": "string" + } + ] + }, + { + "name": "GcpKms", + "fields": [ + { + "id": 1, + "name": "credential", + "type": "string" } ] }, @@ -5470,6 +5580,52 @@ } } ] + }, + { + "name": "FileEncryptionInfo", + "fields": [ + { + "id": 1, + "name": "plain_text_data_key", + "type": "PlainTextDataKey", + "oneof_parent": "mode" + }, + { + "id": 2, + "name": "master_key_based", + "type": "MasterKeyBased", + "oneof_parent": "mode" + }, + { + "id": 3, + "name": "encryption_method", + "type": "encryptionpb.EncryptionMethod" + }, + { + "id": 4, + "name": "file_iv", + "type": "bytes" + }, + { + "id": 5, + "name": "checksum", + "type": "bytes" + } + ] + }, + { + "name": "PlainTextDataKey" + }, + { + "name": "MasterKeyBased", + "fields": [ + { + "id": 1, + "name": "data_key_encrypted_content", + "type": "encryptionpb.EncryptedContent", + "is_repeated": true + } + ] } ], "imports": [ @@ -7566,6 +7722,11 @@ "id": 13, "name": "compression_type", "type": "backup.CompressionType" + }, + { + "id": 14, + "name": "file_encryption_info", + "type": "encryptionpb.FileEncryptionInfo" } ] }, @@ -7619,6 +7780,12 @@ "id": 11, "name": "cipher_info", "type": "backup.CipherInfo" + }, + { + "id": 14, + "name": "master_keys", + "type": "encryptionpb.MasterKey", + "is_repeated": true } ] }, @@ -7763,6 +7930,9 @@ }, { "path": "brpb.proto" + }, + { + "path": "encryptionpb.proto" } ], "package": {