// Extracted from: Spotify 1.1.73.517 (macOS) // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.12 // source: metadata.proto package proto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type Album_Type int32 const ( Album_ALBUM Album_Type = 1 Album_SINGLE Album_Type = 2 Album_COMPILATION Album_Type = 3 Album_EP Album_Type = 4 Album_AUDIOBOOK Album_Type = 5 Album_PODCAST Album_Type = 6 ) // Enum value maps for Album_Type. var ( Album_Type_name = map[int32]string{ 1: "ALBUM", 2: "SINGLE", 3: "COMPILATION", 4: "EP", 5: "AUDIOBOOK", 6: "PODCAST", } Album_Type_value = map[string]int32{ "ALBUM": 1, "SINGLE": 2, "COMPILATION": 3, "EP": 4, "AUDIOBOOK": 5, "PODCAST": 6, } ) func (x Album_Type) Enum() *Album_Type { p := new(Album_Type) *p = x return p } func (x Album_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Album_Type) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[0].Descriptor() } func (Album_Type) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[0] } func (x Album_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Album_Type) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Album_Type(num) return nil } // Deprecated: Use Album_Type.Descriptor instead. func (Album_Type) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{1, 0} } type ArtistWithRole_ArtistRole int32 const ( ArtistWithRole_ARTIST_ROLE_UNKNOWN ArtistWithRole_ArtistRole = 0 ArtistWithRole_ARTIST_ROLE_MAIN_ARTIST ArtistWithRole_ArtistRole = 1 ArtistWithRole_ARTIST_ROLE_FEATURED_ARTIST ArtistWithRole_ArtistRole = 2 ArtistWithRole_ARTIST_ROLE_REMIXER ArtistWithRole_ArtistRole = 3 ArtistWithRole_ARTIST_ROLE_ACTOR ArtistWithRole_ArtistRole = 4 ArtistWithRole_ARTIST_ROLE_COMPOSER ArtistWithRole_ArtistRole = 5 ArtistWithRole_ARTIST_ROLE_CONDUCTOR ArtistWithRole_ArtistRole = 6 ArtistWithRole_ARTIST_ROLE_ORCHESTRA ArtistWithRole_ArtistRole = 7 ) // Enum value maps for ArtistWithRole_ArtistRole. var ( ArtistWithRole_ArtistRole_name = map[int32]string{ 0: "ARTIST_ROLE_UNKNOWN", 1: "ARTIST_ROLE_MAIN_ARTIST", 2: "ARTIST_ROLE_FEATURED_ARTIST", 3: "ARTIST_ROLE_REMIXER", 4: "ARTIST_ROLE_ACTOR", 5: "ARTIST_ROLE_COMPOSER", 6: "ARTIST_ROLE_CONDUCTOR", 7: "ARTIST_ROLE_ORCHESTRA", } ArtistWithRole_ArtistRole_value = map[string]int32{ "ARTIST_ROLE_UNKNOWN": 0, "ARTIST_ROLE_MAIN_ARTIST": 1, "ARTIST_ROLE_FEATURED_ARTIST": 2, "ARTIST_ROLE_REMIXER": 3, "ARTIST_ROLE_ACTOR": 4, "ARTIST_ROLE_COMPOSER": 5, "ARTIST_ROLE_CONDUCTOR": 6, "ARTIST_ROLE_ORCHESTRA": 7, } ) func (x ArtistWithRole_ArtistRole) Enum() *ArtistWithRole_ArtistRole { p := new(ArtistWithRole_ArtistRole) *p = x return p } func (x ArtistWithRole_ArtistRole) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ArtistWithRole_ArtistRole) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[1].Descriptor() } func (ArtistWithRole_ArtistRole) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[1] } func (x ArtistWithRole_ArtistRole) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *ArtistWithRole_ArtistRole) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = ArtistWithRole_ArtistRole(num) return nil } // Deprecated: Use ArtistWithRole_ArtistRole.Descriptor instead. func (ArtistWithRole_ArtistRole) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{3, 0} } type Show_MediaType int32 const ( Show_MIXED Show_MediaType = 0 Show_AUDIO Show_MediaType = 1 Show_VIDEO Show_MediaType = 2 ) // Enum value maps for Show_MediaType. var ( Show_MediaType_name = map[int32]string{ 0: "MIXED", 1: "AUDIO", 2: "VIDEO", } Show_MediaType_value = map[string]int32{ "MIXED": 0, "AUDIO": 1, "VIDEO": 2, } ) func (x Show_MediaType) Enum() *Show_MediaType { p := new(Show_MediaType) *p = x return p } func (x Show_MediaType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Show_MediaType) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[2].Descriptor() } func (Show_MediaType) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[2] } func (x Show_MediaType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Show_MediaType) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Show_MediaType(num) return nil } // Deprecated: Use Show_MediaType.Descriptor instead. func (Show_MediaType) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{4, 0} } type Show_ConsumptionOrder int32 const ( Show_SEQUENTIAL Show_ConsumptionOrder = 1 Show_EPISODIC Show_ConsumptionOrder = 2 Show_RECENT Show_ConsumptionOrder = 3 ) // Enum value maps for Show_ConsumptionOrder. var ( Show_ConsumptionOrder_name = map[int32]string{ 1: "SEQUENTIAL", 2: "EPISODIC", 3: "RECENT", } Show_ConsumptionOrder_value = map[string]int32{ "SEQUENTIAL": 1, "EPISODIC": 2, "RECENT": 3, } ) func (x Show_ConsumptionOrder) Enum() *Show_ConsumptionOrder { p := new(Show_ConsumptionOrder) *p = x return p } func (x Show_ConsumptionOrder) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Show_ConsumptionOrder) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[3].Descriptor() } func (Show_ConsumptionOrder) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[3] } func (x Show_ConsumptionOrder) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Show_ConsumptionOrder) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Show_ConsumptionOrder(num) return nil } // Deprecated: Use Show_ConsumptionOrder.Descriptor instead. func (Show_ConsumptionOrder) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{4, 1} } type Episode_EpisodeType int32 const ( Episode_FULL Episode_EpisodeType = 0 Episode_TRAILER Episode_EpisodeType = 1 Episode_BONUS Episode_EpisodeType = 2 ) // Enum value maps for Episode_EpisodeType. var ( Episode_EpisodeType_name = map[int32]string{ 0: "FULL", 1: "TRAILER", 2: "BONUS", } Episode_EpisodeType_value = map[string]int32{ "FULL": 0, "TRAILER": 1, "BONUS": 2, } ) func (x Episode_EpisodeType) Enum() *Episode_EpisodeType { p := new(Episode_EpisodeType) *p = x return p } func (x Episode_EpisodeType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Episode_EpisodeType) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[4].Descriptor() } func (Episode_EpisodeType) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[4] } func (x Episode_EpisodeType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Episode_EpisodeType) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Episode_EpisodeType(num) return nil } // Deprecated: Use Episode_EpisodeType.Descriptor instead. func (Episode_EpisodeType) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{5, 0} } type Image_Size int32 const ( Image_DEFAULT Image_Size = 0 Image_SMALL Image_Size = 1 Image_LARGE Image_Size = 2 Image_XLARGE Image_Size = 3 ) // Enum value maps for Image_Size. var ( Image_Size_name = map[int32]string{ 0: "DEFAULT", 1: "SMALL", 2: "LARGE", 3: "XLARGE", } Image_Size_value = map[string]int32{ "DEFAULT": 0, "SMALL": 1, "LARGE": 2, "XLARGE": 3, } ) func (x Image_Size) Enum() *Image_Size { p := new(Image_Size) *p = x return p } func (x Image_Size) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Image_Size) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[5].Descriptor() } func (Image_Size) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[5] } func (x Image_Size) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Image_Size) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Image_Size(num) return nil } // Deprecated: Use Image_Size.Descriptor instead. func (Image_Size) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{11, 0} } type Copyright_Type int32 const ( Copyright_P Copyright_Type = 0 Copyright_C Copyright_Type = 1 ) // Enum value maps for Copyright_Type. var ( Copyright_Type_name = map[int32]string{ 0: "P", 1: "C", } Copyright_Type_value = map[string]int32{ "P": 0, "C": 1, } ) func (x Copyright_Type) Enum() *Copyright_Type { p := new(Copyright_Type) *p = x return p } func (x Copyright_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Copyright_Type) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[6].Descriptor() } func (Copyright_Type) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[6] } func (x Copyright_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Copyright_Type) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Copyright_Type(num) return nil } // Deprecated: Use Copyright_Type.Descriptor instead. func (Copyright_Type) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{15, 0} } type Restriction_Catalogue int32 const ( Restriction_AD Restriction_Catalogue = 0 Restriction_SUBSCRIPTION Restriction_Catalogue = 1 Restriction_CATALOGUE_ALL Restriction_Catalogue = 2 Restriction_SHUFFLE Restriction_Catalogue = 3 Restriction_COMMERCIAL Restriction_Catalogue = 4 ) // Enum value maps for Restriction_Catalogue. var ( Restriction_Catalogue_name = map[int32]string{ 0: "AD", 1: "SUBSCRIPTION", 2: "CATALOGUE_ALL", 3: "SHUFFLE", 4: "COMMERCIAL", } Restriction_Catalogue_value = map[string]int32{ "AD": 0, "SUBSCRIPTION": 1, "CATALOGUE_ALL": 2, "SHUFFLE": 3, "COMMERCIAL": 4, } ) func (x Restriction_Catalogue) Enum() *Restriction_Catalogue { p := new(Restriction_Catalogue) *p = x return p } func (x Restriction_Catalogue) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Restriction_Catalogue) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[7].Descriptor() } func (Restriction_Catalogue) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[7] } func (x Restriction_Catalogue) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Restriction_Catalogue) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Restriction_Catalogue(num) return nil } // Deprecated: Use Restriction_Catalogue.Descriptor instead. func (Restriction_Catalogue) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{16, 0} } type Restriction_Type int32 const ( Restriction_STREAMING Restriction_Type = 0 ) // Enum value maps for Restriction_Type. var ( Restriction_Type_name = map[int32]string{ 0: "STREAMING", } Restriction_Type_value = map[string]int32{ "STREAMING": 0, } ) func (x Restriction_Type) Enum() *Restriction_Type { p := new(Restriction_Type) *p = x return p } func (x Restriction_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Restriction_Type) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[8].Descriptor() } func (Restriction_Type) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[8] } func (x Restriction_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *Restriction_Type) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = Restriction_Type(num) return nil } // Deprecated: Use Restriction_Type.Descriptor instead. func (Restriction_Type) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{16, 1} } type AudioFile_Format int32 const ( AudioFile_OGG_VORBIS_96 AudioFile_Format = 0 AudioFile_OGG_VORBIS_160 AudioFile_Format = 1 AudioFile_OGG_VORBIS_320 AudioFile_Format = 2 AudioFile_MP3_256 AudioFile_Format = 3 AudioFile_MP3_320 AudioFile_Format = 4 AudioFile_MP3_160 AudioFile_Format = 5 AudioFile_MP3_96 AudioFile_Format = 6 AudioFile_MP3_160_ENC AudioFile_Format = 7 AudioFile_AAC_24 AudioFile_Format = 8 AudioFile_AAC_48 AudioFile_Format = 9 AudioFile_FLAC_FLAC AudioFile_Format = 16 ) // Enum value maps for AudioFile_Format. var ( AudioFile_Format_name = map[int32]string{ 0: "OGG_VORBIS_96", 1: "OGG_VORBIS_160", 2: "OGG_VORBIS_320", 3: "MP3_256", 4: "MP3_320", 5: "MP3_160", 6: "MP3_96", 7: "MP3_160_ENC", 8: "AAC_24", 9: "AAC_48", 16: "FLAC_FLAC", } AudioFile_Format_value = map[string]int32{ "OGG_VORBIS_96": 0, "OGG_VORBIS_160": 1, "OGG_VORBIS_320": 2, "MP3_256": 3, "MP3_320": 4, "MP3_160": 5, "MP3_96": 6, "MP3_160_ENC": 7, "AAC_24": 8, "AAC_48": 9, "FLAC_FLAC": 16, } ) func (x AudioFile_Format) Enum() *AudioFile_Format { p := new(AudioFile_Format) *p = x return p } func (x AudioFile_Format) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AudioFile_Format) Descriptor() protoreflect.EnumDescriptor { return file_metadata_proto_enumTypes[9].Descriptor() } func (AudioFile_Format) Type() protoreflect.EnumType { return &file_metadata_proto_enumTypes[9] } func (x AudioFile_Format) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *AudioFile_Format) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = AudioFile_Format(num) return nil } // Deprecated: Use AudioFile_Format.Descriptor instead. func (AudioFile_Format) EnumDescriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{20, 0} } type Artist struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Popularity *int32 `protobuf:"zigzag32,3,opt,name=popularity" json:"popularity,omitempty"` TopTrack []*TopTracks `protobuf:"bytes,4,rep,name=top_track,json=topTrack" json:"top_track,omitempty"` AlbumGroup []*AlbumGroup `protobuf:"bytes,5,rep,name=album_group,json=albumGroup" json:"album_group,omitempty"` SingleGroup []*AlbumGroup `protobuf:"bytes,6,rep,name=single_group,json=singleGroup" json:"single_group,omitempty"` CompilationGroup []*AlbumGroup `protobuf:"bytes,7,rep,name=compilation_group,json=compilationGroup" json:"compilation_group,omitempty"` AppearsOnGroup []*AlbumGroup `protobuf:"bytes,8,rep,name=appears_on_group,json=appearsOnGroup" json:"appears_on_group,omitempty"` Genre []string `protobuf:"bytes,9,rep,name=genre" json:"genre,omitempty"` ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"` Portrait []*Image `protobuf:"bytes,11,rep,name=portrait" json:"portrait,omitempty"` Biography []*Biography `protobuf:"bytes,12,rep,name=biography" json:"biography,omitempty"` ActivityPeriod []*ActivityPeriod `protobuf:"bytes,13,rep,name=activity_period,json=activityPeriod" json:"activity_period,omitempty"` Restriction []*Restriction `protobuf:"bytes,14,rep,name=restriction" json:"restriction,omitempty"` Related []*Artist `protobuf:"bytes,15,rep,name=related" json:"related,omitempty"` IsPortraitAlbumCover *bool `protobuf:"varint,16,opt,name=is_portrait_album_cover,json=isPortraitAlbumCover" json:"is_portrait_album_cover,omitempty"` PortraitGroup *ImageGroup `protobuf:"bytes,17,opt,name=portrait_group,json=portraitGroup" json:"portrait_group,omitempty"` SalePeriod []*SalePeriod `protobuf:"bytes,18,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"` Availability []*Availability `protobuf:"bytes,20,rep,name=availability" json:"availability,omitempty"` } func (x *Artist) Reset() { *x = Artist{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Artist) String() string { return protoimpl.X.MessageStringOf(x) } func (*Artist) ProtoMessage() {} func (x *Artist) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Artist.ProtoReflect.Descriptor instead. func (*Artist) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{0} } func (x *Artist) GetGid() []byte { if x != nil { return x.Gid } return nil } func (x *Artist) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Artist) GetPopularity() int32 { if x != nil && x.Popularity != nil { return *x.Popularity } return 0 } func (x *Artist) GetTopTrack() []*TopTracks { if x != nil { return x.TopTrack } return nil } func (x *Artist) GetAlbumGroup() []*AlbumGroup { if x != nil { return x.AlbumGroup } return nil } func (x *Artist) GetSingleGroup() []*AlbumGroup { if x != nil { return x.SingleGroup } return nil } func (x *Artist) GetCompilationGroup() []*AlbumGroup { if x != nil { return x.CompilationGroup } return nil } func (x *Artist) GetAppearsOnGroup() []*AlbumGroup { if x != nil { return x.AppearsOnGroup } return nil } func (x *Artist) GetGenre() []string { if x != nil { return x.Genre } return nil } func (x *Artist) GetExternalId() []*ExternalId { if x != nil { return x.ExternalId } return nil } func (x *Artist) GetPortrait() []*Image { if x != nil { return x.Portrait } return nil } func (x *Artist) GetBiography() []*Biography { if x != nil { return x.Biography } return nil } func (x *Artist) GetActivityPeriod() []*ActivityPeriod { if x != nil { return x.ActivityPeriod } return nil } func (x *Artist) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *Artist) GetRelated() []*Artist { if x != nil { return x.Related } return nil } func (x *Artist) GetIsPortraitAlbumCover() bool { if x != nil && x.IsPortraitAlbumCover != nil { return *x.IsPortraitAlbumCover } return false } func (x *Artist) GetPortraitGroup() *ImageGroup { if x != nil { return x.PortraitGroup } return nil } func (x *Artist) GetSalePeriod() []*SalePeriod { if x != nil { return x.SalePeriod } return nil } func (x *Artist) GetAvailability() []*Availability { if x != nil { return x.Availability } return nil } type Album struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Artist []*Artist `protobuf:"bytes,3,rep,name=artist" json:"artist,omitempty"` Type *Album_Type `protobuf:"varint,4,opt,name=type,enum=spotify.metadata.Album_Type" json:"type,omitempty"` Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"` Date *Date `protobuf:"bytes,6,opt,name=date" json:"date,omitempty"` Popularity *int32 `protobuf:"zigzag32,7,opt,name=popularity" json:"popularity,omitempty"` Genre []string `protobuf:"bytes,8,rep,name=genre" json:"genre,omitempty"` Cover []*Image `protobuf:"bytes,9,rep,name=cover" json:"cover,omitempty"` ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"` Disc []*Disc `protobuf:"bytes,11,rep,name=disc" json:"disc,omitempty"` Review []string `protobuf:"bytes,12,rep,name=review" json:"review,omitempty"` Copyright []*Copyright `protobuf:"bytes,13,rep,name=copyright" json:"copyright,omitempty"` Restriction []*Restriction `protobuf:"bytes,14,rep,name=restriction" json:"restriction,omitempty"` Related []*Album `protobuf:"bytes,15,rep,name=related" json:"related,omitempty"` SalePeriod []*SalePeriod `protobuf:"bytes,16,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"` CoverGroup *ImageGroup `protobuf:"bytes,17,opt,name=cover_group,json=coverGroup" json:"cover_group,omitempty"` OriginalTitle *string `protobuf:"bytes,18,opt,name=original_title,json=originalTitle" json:"original_title,omitempty"` VersionTitle *string `protobuf:"bytes,19,opt,name=version_title,json=versionTitle" json:"version_title,omitempty"` TypeStr *string `protobuf:"bytes,20,opt,name=type_str,json=typeStr" json:"type_str,omitempty"` Availability []*Availability `protobuf:"bytes,23,rep,name=availability" json:"availability,omitempty"` } func (x *Album) Reset() { *x = Album{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Album) String() string { return protoimpl.X.MessageStringOf(x) } func (*Album) ProtoMessage() {} func (x *Album) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Album.ProtoReflect.Descriptor instead. func (*Album) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{1} } func (x *Album) GetGid() []byte { if x != nil { return x.Gid } return nil } func (x *Album) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Album) GetArtist() []*Artist { if x != nil { return x.Artist } return nil } func (x *Album) GetType() Album_Type { if x != nil && x.Type != nil { return *x.Type } return Album_ALBUM } func (x *Album) GetLabel() string { if x != nil && x.Label != nil { return *x.Label } return "" } func (x *Album) GetDate() *Date { if x != nil { return x.Date } return nil } func (x *Album) GetPopularity() int32 { if x != nil && x.Popularity != nil { return *x.Popularity } return 0 } func (x *Album) GetGenre() []string { if x != nil { return x.Genre } return nil } func (x *Album) GetCover() []*Image { if x != nil { return x.Cover } return nil } func (x *Album) GetExternalId() []*ExternalId { if x != nil { return x.ExternalId } return nil } func (x *Album) GetDisc() []*Disc { if x != nil { return x.Disc } return nil } func (x *Album) GetReview() []string { if x != nil { return x.Review } return nil } func (x *Album) GetCopyright() []*Copyright { if x != nil { return x.Copyright } return nil } func (x *Album) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *Album) GetRelated() []*Album { if x != nil { return x.Related } return nil } func (x *Album) GetSalePeriod() []*SalePeriod { if x != nil { return x.SalePeriod } return nil } func (x *Album) GetCoverGroup() *ImageGroup { if x != nil { return x.CoverGroup } return nil } func (x *Album) GetOriginalTitle() string { if x != nil && x.OriginalTitle != nil { return *x.OriginalTitle } return "" } func (x *Album) GetVersionTitle() string { if x != nil && x.VersionTitle != nil { return *x.VersionTitle } return "" } func (x *Album) GetTypeStr() string { if x != nil && x.TypeStr != nil { return *x.TypeStr } return "" } func (x *Album) GetAvailability() []*Availability { if x != nil { return x.Availability } return nil } type Track struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Album *Album `protobuf:"bytes,3,opt,name=album" json:"album,omitempty"` Artist []*Artist `protobuf:"bytes,4,rep,name=artist" json:"artist,omitempty"` Number *int32 `protobuf:"zigzag32,5,opt,name=number" json:"number,omitempty"` DiscNumber *int32 `protobuf:"zigzag32,6,opt,name=disc_number,json=discNumber" json:"disc_number,omitempty"` Duration *int32 `protobuf:"zigzag32,7,opt,name=duration" json:"duration,omitempty"` Popularity *int32 `protobuf:"zigzag32,8,opt,name=popularity" json:"popularity,omitempty"` Explicit *bool `protobuf:"varint,9,opt,name=explicit" json:"explicit,omitempty"` ExternalId []*ExternalId `protobuf:"bytes,10,rep,name=external_id,json=externalId" json:"external_id,omitempty"` Restriction []*Restriction `protobuf:"bytes,11,rep,name=restriction" json:"restriction,omitempty"` File []*AudioFile `protobuf:"bytes,12,rep,name=file" json:"file,omitempty"` Alternative []*Track `protobuf:"bytes,13,rep,name=alternative" json:"alternative,omitempty"` SalePeriod []*SalePeriod `protobuf:"bytes,14,rep,name=sale_period,json=salePeriod" json:"sale_period,omitempty"` Preview []*AudioFile `protobuf:"bytes,15,rep,name=preview" json:"preview,omitempty"` Tags []string `protobuf:"bytes,16,rep,name=tags" json:"tags,omitempty"` EarliestLiveTimestamp *int64 `protobuf:"varint,17,opt,name=earliest_live_timestamp,json=earliestLiveTimestamp" json:"earliest_live_timestamp,omitempty"` HasLyrics *bool `protobuf:"varint,18,opt,name=has_lyrics,json=hasLyrics" json:"has_lyrics,omitempty"` Availability []*Availability `protobuf:"bytes,19,rep,name=availability" json:"availability,omitempty"` Licensor *Licensor `protobuf:"bytes,21,opt,name=licensor" json:"licensor,omitempty"` LanguageOfPerformance []string `protobuf:"bytes,22,rep,name=language_of_performance,json=languageOfPerformance" json:"language_of_performance,omitempty"` ContentRating []*ContentRating `protobuf:"bytes,25,rep,name=content_rating,json=contentRating" json:"content_rating,omitempty"` OriginalTitle *string `protobuf:"bytes,27,opt,name=original_title,json=originalTitle" json:"original_title,omitempty"` VersionTitle *string `protobuf:"bytes,28,opt,name=version_title,json=versionTitle" json:"version_title,omitempty"` ArtistWithRole []*ArtistWithRole `protobuf:"bytes,32,rep,name=artist_with_role,json=artistWithRole" json:"artist_with_role,omitempty"` } func (x *Track) Reset() { *x = Track{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Track) String() string { return protoimpl.X.MessageStringOf(x) } func (*Track) ProtoMessage() {} func (x *Track) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Track.ProtoReflect.Descriptor instead. func (*Track) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{2} } func (x *Track) GetGid() []byte { if x != nil { return x.Gid } return nil } func (x *Track) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Track) GetAlbum() *Album { if x != nil { return x.Album } return nil } func (x *Track) GetArtist() []*Artist { if x != nil { return x.Artist } return nil } func (x *Track) GetNumber() int32 { if x != nil && x.Number != nil { return *x.Number } return 0 } func (x *Track) GetDiscNumber() int32 { if x != nil && x.DiscNumber != nil { return *x.DiscNumber } return 0 } func (x *Track) GetDuration() int32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *Track) GetPopularity() int32 { if x != nil && x.Popularity != nil { return *x.Popularity } return 0 } func (x *Track) GetExplicit() bool { if x != nil && x.Explicit != nil { return *x.Explicit } return false } func (x *Track) GetExternalId() []*ExternalId { if x != nil { return x.ExternalId } return nil } func (x *Track) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *Track) GetFile() []*AudioFile { if x != nil { return x.File } return nil } func (x *Track) GetAlternative() []*Track { if x != nil { return x.Alternative } return nil } func (x *Track) GetSalePeriod() []*SalePeriod { if x != nil { return x.SalePeriod } return nil } func (x *Track) GetPreview() []*AudioFile { if x != nil { return x.Preview } return nil } func (x *Track) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *Track) GetEarliestLiveTimestamp() int64 { if x != nil && x.EarliestLiveTimestamp != nil { return *x.EarliestLiveTimestamp } return 0 } func (x *Track) GetHasLyrics() bool { if x != nil && x.HasLyrics != nil { return *x.HasLyrics } return false } func (x *Track) GetAvailability() []*Availability { if x != nil { return x.Availability } return nil } func (x *Track) GetLicensor() *Licensor { if x != nil { return x.Licensor } return nil } func (x *Track) GetLanguageOfPerformance() []string { if x != nil { return x.LanguageOfPerformance } return nil } func (x *Track) GetContentRating() []*ContentRating { if x != nil { return x.ContentRating } return nil } func (x *Track) GetOriginalTitle() string { if x != nil && x.OriginalTitle != nil { return *x.OriginalTitle } return "" } func (x *Track) GetVersionTitle() string { if x != nil && x.VersionTitle != nil { return *x.VersionTitle } return "" } func (x *Track) GetArtistWithRole() []*ArtistWithRole { if x != nil { return x.ArtistWithRole } return nil } type ArtistWithRole struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ArtistGid []byte `protobuf:"bytes,1,opt,name=artist_gid,json=artistGid" json:"artist_gid,omitempty"` ArtistName *string `protobuf:"bytes,2,opt,name=artist_name,json=artistName" json:"artist_name,omitempty"` Role *ArtistWithRole_ArtistRole `protobuf:"varint,3,opt,name=role,enum=spotify.metadata.ArtistWithRole_ArtistRole" json:"role,omitempty"` } func (x *ArtistWithRole) Reset() { *x = ArtistWithRole{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ArtistWithRole) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArtistWithRole) ProtoMessage() {} func (x *ArtistWithRole) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ArtistWithRole.ProtoReflect.Descriptor instead. func (*ArtistWithRole) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{3} } func (x *ArtistWithRole) GetArtistGid() []byte { if x != nil { return x.ArtistGid } return nil } func (x *ArtistWithRole) GetArtistName() string { if x != nil && x.ArtistName != nil { return *x.ArtistName } return "" } func (x *ArtistWithRole) GetRole() ArtistWithRole_ArtistRole { if x != nil && x.Role != nil { return *x.Role } return ArtistWithRole_ARTIST_ROLE_UNKNOWN } type Show struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Description *string `protobuf:"bytes,64,opt,name=description" json:"description,omitempty"` DeprecatedPopularity *int32 `protobuf:"zigzag32,65,opt,name=deprecated_popularity,json=deprecatedPopularity" json:"deprecated_popularity,omitempty"` Publisher *string `protobuf:"bytes,66,opt,name=publisher" json:"publisher,omitempty"` Language *string `protobuf:"bytes,67,opt,name=language" json:"language,omitempty"` Explicit *bool `protobuf:"varint,68,opt,name=explicit" json:"explicit,omitempty"` CoverImage *ImageGroup `protobuf:"bytes,69,opt,name=cover_image,json=coverImage" json:"cover_image,omitempty"` Episode []*Episode `protobuf:"bytes,70,rep,name=episode" json:"episode,omitempty"` Copyright []*Copyright `protobuf:"bytes,71,rep,name=copyright" json:"copyright,omitempty"` Restriction []*Restriction `protobuf:"bytes,72,rep,name=restriction" json:"restriction,omitempty"` Keyword []string `protobuf:"bytes,73,rep,name=keyword" json:"keyword,omitempty"` MediaType *Show_MediaType `protobuf:"varint,74,opt,name=media_type,json=mediaType,enum=spotify.metadata.Show_MediaType" json:"media_type,omitempty"` ConsumptionOrder *Show_ConsumptionOrder `protobuf:"varint,75,opt,name=consumption_order,json=consumptionOrder,enum=spotify.metadata.Show_ConsumptionOrder" json:"consumption_order,omitempty"` Availability []*Availability `protobuf:"bytes,78,rep,name=availability" json:"availability,omitempty"` TrailerUri *string `protobuf:"bytes,83,opt,name=trailer_uri,json=trailerUri" json:"trailer_uri,omitempty"` MusicAndTalk *bool `protobuf:"varint,85,opt,name=music_and_talk,json=musicAndTalk" json:"music_and_talk,omitempty"` IsAudiobook *bool `protobuf:"varint,89,opt,name=is_audiobook,json=isAudiobook" json:"is_audiobook,omitempty"` } func (x *Show) Reset() { *x = Show{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Show) String() string { return protoimpl.X.MessageStringOf(x) } func (*Show) ProtoMessage() {} func (x *Show) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Show.ProtoReflect.Descriptor instead. func (*Show) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{4} } func (x *Show) GetGid() []byte { if x != nil { return x.Gid } return nil } func (x *Show) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Show) GetDescription() string { if x != nil && x.Description != nil { return *x.Description } return "" } func (x *Show) GetDeprecatedPopularity() int32 { if x != nil && x.DeprecatedPopularity != nil { return *x.DeprecatedPopularity } return 0 } func (x *Show) GetPublisher() string { if x != nil && x.Publisher != nil { return *x.Publisher } return "" } func (x *Show) GetLanguage() string { if x != nil && x.Language != nil { return *x.Language } return "" } func (x *Show) GetExplicit() bool { if x != nil && x.Explicit != nil { return *x.Explicit } return false } func (x *Show) GetCoverImage() *ImageGroup { if x != nil { return x.CoverImage } return nil } func (x *Show) GetEpisode() []*Episode { if x != nil { return x.Episode } return nil } func (x *Show) GetCopyright() []*Copyright { if x != nil { return x.Copyright } return nil } func (x *Show) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *Show) GetKeyword() []string { if x != nil { return x.Keyword } return nil } func (x *Show) GetMediaType() Show_MediaType { if x != nil && x.MediaType != nil { return *x.MediaType } return Show_MIXED } func (x *Show) GetConsumptionOrder() Show_ConsumptionOrder { if x != nil && x.ConsumptionOrder != nil { return *x.ConsumptionOrder } return Show_SEQUENTIAL } func (x *Show) GetAvailability() []*Availability { if x != nil { return x.Availability } return nil } func (x *Show) GetTrailerUri() string { if x != nil && x.TrailerUri != nil { return *x.TrailerUri } return "" } func (x *Show) GetMusicAndTalk() bool { if x != nil && x.MusicAndTalk != nil { return *x.MusicAndTalk } return false } func (x *Show) GetIsAudiobook() bool { if x != nil && x.IsAudiobook != nil { return *x.IsAudiobook } return false } type Episode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Gid []byte `protobuf:"bytes,1,opt,name=gid" json:"gid,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Duration *int32 `protobuf:"zigzag32,7,opt,name=duration" json:"duration,omitempty"` Audio []*AudioFile `protobuf:"bytes,12,rep,name=audio" json:"audio,omitempty"` Description *string `protobuf:"bytes,64,opt,name=description" json:"description,omitempty"` Number *int32 `protobuf:"zigzag32,65,opt,name=number" json:"number,omitempty"` PublishTime *Date `protobuf:"bytes,66,opt,name=publish_time,json=publishTime" json:"publish_time,omitempty"` DeprecatedPopularity *int32 `protobuf:"zigzag32,67,opt,name=deprecated_popularity,json=deprecatedPopularity" json:"deprecated_popularity,omitempty"` CoverImage *ImageGroup `protobuf:"bytes,68,opt,name=cover_image,json=coverImage" json:"cover_image,omitempty"` Language *string `protobuf:"bytes,69,opt,name=language" json:"language,omitempty"` Explicit *bool `protobuf:"varint,70,opt,name=explicit" json:"explicit,omitempty"` Show *Show `protobuf:"bytes,71,opt,name=show" json:"show,omitempty"` Video []*VideoFile `protobuf:"bytes,72,rep,name=video" json:"video,omitempty"` VideoPreview []*VideoFile `protobuf:"bytes,73,rep,name=video_preview,json=videoPreview" json:"video_preview,omitempty"` AudioPreview []*AudioFile `protobuf:"bytes,74,rep,name=audio_preview,json=audioPreview" json:"audio_preview,omitempty"` Restriction []*Restriction `protobuf:"bytes,75,rep,name=restriction" json:"restriction,omitempty"` FreezeFrame *ImageGroup `protobuf:"bytes,76,opt,name=freeze_frame,json=freezeFrame" json:"freeze_frame,omitempty"` Keyword []string `protobuf:"bytes,77,rep,name=keyword" json:"keyword,omitempty"` AllowBackgroundPlayback *bool `protobuf:"varint,81,opt,name=allow_background_playback,json=allowBackgroundPlayback" json:"allow_background_playback,omitempty"` Availability []*Availability `protobuf:"bytes,82,rep,name=availability" json:"availability,omitempty"` ExternalUrl *string `protobuf:"bytes,83,opt,name=external_url,json=externalUrl" json:"external_url,omitempty"` Type *Episode_EpisodeType `protobuf:"varint,87,opt,name=type,enum=spotify.metadata.Episode_EpisodeType" json:"type,omitempty"` MusicAndTalk *bool `protobuf:"varint,91,opt,name=music_and_talk,json=musicAndTalk" json:"music_and_talk,omitempty"` ContentRating []*ContentRating `protobuf:"bytes,95,rep,name=content_rating,json=contentRating" json:"content_rating,omitempty"` IsAudiobookChapter *bool `protobuf:"varint,96,opt,name=is_audiobook_chapter,json=isAudiobookChapter" json:"is_audiobook_chapter,omitempty"` } func (x *Episode) Reset() { *x = Episode{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Episode) String() string { return protoimpl.X.MessageStringOf(x) } func (*Episode) ProtoMessage() {} func (x *Episode) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Episode.ProtoReflect.Descriptor instead. func (*Episode) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{5} } func (x *Episode) GetGid() []byte { if x != nil { return x.Gid } return nil } func (x *Episode) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Episode) GetDuration() int32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *Episode) GetAudio() []*AudioFile { if x != nil { return x.Audio } return nil } func (x *Episode) GetDescription() string { if x != nil && x.Description != nil { return *x.Description } return "" } func (x *Episode) GetNumber() int32 { if x != nil && x.Number != nil { return *x.Number } return 0 } func (x *Episode) GetPublishTime() *Date { if x != nil { return x.PublishTime } return nil } func (x *Episode) GetDeprecatedPopularity() int32 { if x != nil && x.DeprecatedPopularity != nil { return *x.DeprecatedPopularity } return 0 } func (x *Episode) GetCoverImage() *ImageGroup { if x != nil { return x.CoverImage } return nil } func (x *Episode) GetLanguage() string { if x != nil && x.Language != nil { return *x.Language } return "" } func (x *Episode) GetExplicit() bool { if x != nil && x.Explicit != nil { return *x.Explicit } return false } func (x *Episode) GetShow() *Show { if x != nil { return x.Show } return nil } func (x *Episode) GetVideo() []*VideoFile { if x != nil { return x.Video } return nil } func (x *Episode) GetVideoPreview() []*VideoFile { if x != nil { return x.VideoPreview } return nil } func (x *Episode) GetAudioPreview() []*AudioFile { if x != nil { return x.AudioPreview } return nil } func (x *Episode) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *Episode) GetFreezeFrame() *ImageGroup { if x != nil { return x.FreezeFrame } return nil } func (x *Episode) GetKeyword() []string { if x != nil { return x.Keyword } return nil } func (x *Episode) GetAllowBackgroundPlayback() bool { if x != nil && x.AllowBackgroundPlayback != nil { return *x.AllowBackgroundPlayback } return false } func (x *Episode) GetAvailability() []*Availability { if x != nil { return x.Availability } return nil } func (x *Episode) GetExternalUrl() string { if x != nil && x.ExternalUrl != nil { return *x.ExternalUrl } return "" } func (x *Episode) GetType() Episode_EpisodeType { if x != nil && x.Type != nil { return *x.Type } return Episode_FULL } func (x *Episode) GetMusicAndTalk() bool { if x != nil && x.MusicAndTalk != nil { return *x.MusicAndTalk } return false } func (x *Episode) GetContentRating() []*ContentRating { if x != nil { return x.ContentRating } return nil } func (x *Episode) GetIsAudiobookChapter() bool { if x != nil && x.IsAudiobookChapter != nil { return *x.IsAudiobookChapter } return false } type Licensor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Uuid []byte `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"` } func (x *Licensor) Reset() { *x = Licensor{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Licensor) String() string { return protoimpl.X.MessageStringOf(x) } func (*Licensor) ProtoMessage() {} func (x *Licensor) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Licensor.ProtoReflect.Descriptor instead. func (*Licensor) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{6} } func (x *Licensor) GetUuid() []byte { if x != nil { return x.Uuid } return nil } type TopTracks struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Country *string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"` Track []*Track `protobuf:"bytes,2,rep,name=track" json:"track,omitempty"` } func (x *TopTracks) Reset() { *x = TopTracks{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopTracks) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopTracks) ProtoMessage() {} func (x *TopTracks) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TopTracks.ProtoReflect.Descriptor instead. func (*TopTracks) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{7} } func (x *TopTracks) GetCountry() string { if x != nil && x.Country != nil { return *x.Country } return "" } func (x *TopTracks) GetTrack() []*Track { if x != nil { return x.Track } return nil } type ActivityPeriod struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StartYear *int32 `protobuf:"zigzag32,1,opt,name=start_year,json=startYear" json:"start_year,omitempty"` EndYear *int32 `protobuf:"zigzag32,2,opt,name=end_year,json=endYear" json:"end_year,omitempty"` Decade *int32 `protobuf:"zigzag32,3,opt,name=decade" json:"decade,omitempty"` } func (x *ActivityPeriod) Reset() { *x = ActivityPeriod{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActivityPeriod) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActivityPeriod) ProtoMessage() {} func (x *ActivityPeriod) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ActivityPeriod.ProtoReflect.Descriptor instead. func (*ActivityPeriod) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{8} } func (x *ActivityPeriod) GetStartYear() int32 { if x != nil && x.StartYear != nil { return *x.StartYear } return 0 } func (x *ActivityPeriod) GetEndYear() int32 { if x != nil && x.EndYear != nil { return *x.EndYear } return 0 } func (x *ActivityPeriod) GetDecade() int32 { if x != nil && x.Decade != nil { return *x.Decade } return 0 } type AlbumGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Album []*Album `protobuf:"bytes,1,rep,name=album" json:"album,omitempty"` } func (x *AlbumGroup) Reset() { *x = AlbumGroup{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AlbumGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*AlbumGroup) ProtoMessage() {} func (x *AlbumGroup) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AlbumGroup.ProtoReflect.Descriptor instead. func (*AlbumGroup) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{9} } func (x *AlbumGroup) GetAlbum() []*Album { if x != nil { return x.Album } return nil } type Date struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Year *int32 `protobuf:"zigzag32,1,opt,name=year" json:"year,omitempty"` Month *int32 `protobuf:"zigzag32,2,opt,name=month" json:"month,omitempty"` Day *int32 `protobuf:"zigzag32,3,opt,name=day" json:"day,omitempty"` Hour *int32 `protobuf:"zigzag32,4,opt,name=hour" json:"hour,omitempty"` Minute *int32 `protobuf:"zigzag32,5,opt,name=minute" json:"minute,omitempty"` } func (x *Date) Reset() { *x = Date{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Date) String() string { return protoimpl.X.MessageStringOf(x) } func (*Date) ProtoMessage() {} func (x *Date) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Date.ProtoReflect.Descriptor instead. func (*Date) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{10} } func (x *Date) GetYear() int32 { if x != nil && x.Year != nil { return *x.Year } return 0 } func (x *Date) GetMonth() int32 { if x != nil && x.Month != nil { return *x.Month } return 0 } func (x *Date) GetDay() int32 { if x != nil && x.Day != nil { return *x.Day } return 0 } func (x *Date) GetHour() int32 { if x != nil && x.Hour != nil { return *x.Hour } return 0 } func (x *Date) GetMinute() int32 { if x != nil && x.Minute != nil { return *x.Minute } return 0 } type Image struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"` Size *Image_Size `protobuf:"varint,2,opt,name=size,enum=spotify.metadata.Image_Size" json:"size,omitempty"` Width *int32 `protobuf:"zigzag32,3,opt,name=width" json:"width,omitempty"` Height *int32 `protobuf:"zigzag32,4,opt,name=height" json:"height,omitempty"` } func (x *Image) Reset() { *x = Image{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Image) String() string { return protoimpl.X.MessageStringOf(x) } func (*Image) ProtoMessage() {} func (x *Image) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Image.ProtoReflect.Descriptor instead. func (*Image) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{11} } func (x *Image) GetFileId() []byte { if x != nil { return x.FileId } return nil } func (x *Image) GetSize() Image_Size { if x != nil && x.Size != nil { return *x.Size } return Image_DEFAULT } func (x *Image) GetWidth() int32 { if x != nil && x.Width != nil { return *x.Width } return 0 } func (x *Image) GetHeight() int32 { if x != nil && x.Height != nil { return *x.Height } return 0 } type ImageGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Image []*Image `protobuf:"bytes,1,rep,name=image" json:"image,omitempty"` } func (x *ImageGroup) Reset() { *x = ImageGroup{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ImageGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ImageGroup) ProtoMessage() {} func (x *ImageGroup) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ImageGroup.ProtoReflect.Descriptor instead. func (*ImageGroup) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{12} } func (x *ImageGroup) GetImage() []*Image { if x != nil { return x.Image } return nil } type Biography struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` Portrait []*Image `protobuf:"bytes,2,rep,name=portrait" json:"portrait,omitempty"` PortraitGroup []*ImageGroup `protobuf:"bytes,3,rep,name=portrait_group,json=portraitGroup" json:"portrait_group,omitempty"` } func (x *Biography) Reset() { *x = Biography{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Biography) String() string { return protoimpl.X.MessageStringOf(x) } func (*Biography) ProtoMessage() {} func (x *Biography) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Biography.ProtoReflect.Descriptor instead. func (*Biography) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{13} } func (x *Biography) GetText() string { if x != nil && x.Text != nil { return *x.Text } return "" } func (x *Biography) GetPortrait() []*Image { if x != nil { return x.Portrait } return nil } func (x *Biography) GetPortraitGroup() []*ImageGroup { if x != nil { return x.PortraitGroup } return nil } type Disc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Number *int32 `protobuf:"zigzag32,1,opt,name=number" json:"number,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Track []*Track `protobuf:"bytes,3,rep,name=track" json:"track,omitempty"` } func (x *Disc) Reset() { *x = Disc{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Disc) String() string { return protoimpl.X.MessageStringOf(x) } func (*Disc) ProtoMessage() {} func (x *Disc) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Disc.ProtoReflect.Descriptor instead. func (*Disc) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{14} } func (x *Disc) GetNumber() int32 { if x != nil && x.Number != nil { return *x.Number } return 0 } func (x *Disc) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *Disc) GetTrack() []*Track { if x != nil { return x.Track } return nil } type Copyright struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type *Copyright_Type `protobuf:"varint,1,opt,name=type,enum=spotify.metadata.Copyright_Type" json:"type,omitempty"` Text *string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"` } func (x *Copyright) Reset() { *x = Copyright{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Copyright) String() string { return protoimpl.X.MessageStringOf(x) } func (*Copyright) ProtoMessage() {} func (x *Copyright) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Copyright.ProtoReflect.Descriptor instead. func (*Copyright) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{15} } func (x *Copyright) GetType() Copyright_Type { if x != nil && x.Type != nil { return *x.Type } return Copyright_P } func (x *Copyright) GetText() string { if x != nil && x.Text != nil { return *x.Text } return "" } type Restriction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Catalogue []Restriction_Catalogue `protobuf:"varint,1,rep,name=catalogue,enum=spotify.metadata.Restriction_Catalogue" json:"catalogue,omitempty"` Type *Restriction_Type `protobuf:"varint,4,opt,name=type,enum=spotify.metadata.Restriction_Type" json:"type,omitempty"` CatalogueStr []string `protobuf:"bytes,5,rep,name=catalogue_str,json=catalogueStr" json:"catalogue_str,omitempty"` // Types that are assignable to CountryRestriction: // // *Restriction_CountriesAllowed // *Restriction_CountriesForbidden CountryRestriction isRestriction_CountryRestriction `protobuf_oneof:"country_restriction"` } func (x *Restriction) Reset() { *x = Restriction{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Restriction) String() string { return protoimpl.X.MessageStringOf(x) } func (*Restriction) ProtoMessage() {} func (x *Restriction) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Restriction.ProtoReflect.Descriptor instead. func (*Restriction) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{16} } func (x *Restriction) GetCatalogue() []Restriction_Catalogue { if x != nil { return x.Catalogue } return nil } func (x *Restriction) GetType() Restriction_Type { if x != nil && x.Type != nil { return *x.Type } return Restriction_STREAMING } func (x *Restriction) GetCatalogueStr() []string { if x != nil { return x.CatalogueStr } return nil } func (m *Restriction) GetCountryRestriction() isRestriction_CountryRestriction { if m != nil { return m.CountryRestriction } return nil } func (x *Restriction) GetCountriesAllowed() string { if x, ok := x.GetCountryRestriction().(*Restriction_CountriesAllowed); ok { return x.CountriesAllowed } return "" } func (x *Restriction) GetCountriesForbidden() string { if x, ok := x.GetCountryRestriction().(*Restriction_CountriesForbidden); ok { return x.CountriesForbidden } return "" } type isRestriction_CountryRestriction interface { isRestriction_CountryRestriction() } type Restriction_CountriesAllowed struct { CountriesAllowed string `protobuf:"bytes,2,opt,name=countries_allowed,json=countriesAllowed,oneof"` } type Restriction_CountriesForbidden struct { CountriesForbidden string `protobuf:"bytes,3,opt,name=countries_forbidden,json=countriesForbidden,oneof"` } func (*Restriction_CountriesAllowed) isRestriction_CountryRestriction() {} func (*Restriction_CountriesForbidden) isRestriction_CountryRestriction() {} type Availability struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CatalogueStr []string `protobuf:"bytes,1,rep,name=catalogue_str,json=catalogueStr" json:"catalogue_str,omitempty"` Start *Date `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"` } func (x *Availability) Reset() { *x = Availability{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Availability) String() string { return protoimpl.X.MessageStringOf(x) } func (*Availability) ProtoMessage() {} func (x *Availability) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Availability.ProtoReflect.Descriptor instead. func (*Availability) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{17} } func (x *Availability) GetCatalogueStr() []string { if x != nil { return x.CatalogueStr } return nil } func (x *Availability) GetStart() *Date { if x != nil { return x.Start } return nil } type SalePeriod struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Restriction []*Restriction `protobuf:"bytes,1,rep,name=restriction" json:"restriction,omitempty"` Start *Date `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"` End *Date `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"` } func (x *SalePeriod) Reset() { *x = SalePeriod{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SalePeriod) String() string { return protoimpl.X.MessageStringOf(x) } func (*SalePeriod) ProtoMessage() {} func (x *SalePeriod) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SalePeriod.ProtoReflect.Descriptor instead. func (*SalePeriod) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{18} } func (x *SalePeriod) GetRestriction() []*Restriction { if x != nil { return x.Restriction } return nil } func (x *SalePeriod) GetStart() *Date { if x != nil { return x.Start } return nil } func (x *SalePeriod) GetEnd() *Date { if x != nil { return x.End } return nil } type ExternalId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type *string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` } func (x *ExternalId) Reset() { *x = ExternalId{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExternalId) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExternalId) ProtoMessage() {} func (x *ExternalId) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExternalId.ProtoReflect.Descriptor instead. func (*ExternalId) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{19} } func (x *ExternalId) GetType() string { if x != nil && x.Type != nil { return *x.Type } return "" } func (x *ExternalId) GetId() string { if x != nil && x.Id != nil { return *x.Id } return "" } type AudioFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"` Format *AudioFile_Format `protobuf:"varint,2,opt,name=format,enum=spotify.metadata.AudioFile_Format" json:"format,omitempty"` } func (x *AudioFile) Reset() { *x = AudioFile{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AudioFile) String() string { return protoimpl.X.MessageStringOf(x) } func (*AudioFile) ProtoMessage() {} func (x *AudioFile) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AudioFile.ProtoReflect.Descriptor instead. func (*AudioFile) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{20} } func (x *AudioFile) GetFileId() []byte { if x != nil { return x.FileId } return nil } func (x *AudioFile) GetFormat() AudioFile_Format { if x != nil && x.Format != nil { return *x.Format } return AudioFile_OGG_VORBIS_96 } type VideoFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileId []byte `protobuf:"bytes,1,opt,name=file_id,json=fileId" json:"file_id,omitempty"` } func (x *VideoFile) Reset() { *x = VideoFile{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VideoFile) String() string { return protoimpl.X.MessageStringOf(x) } func (*VideoFile) ProtoMessage() {} func (x *VideoFile) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use VideoFile.ProtoReflect.Descriptor instead. func (*VideoFile) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{21} } func (x *VideoFile) GetFileId() []byte { if x != nil { return x.FileId } return nil } type ContentRating struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Country *string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"` Tag []string `protobuf:"bytes,2,rep,name=tag" json:"tag,omitempty"` } func (x *ContentRating) Reset() { *x = ContentRating{} if protoimpl.UnsafeEnabled { mi := &file_metadata_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ContentRating) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContentRating) ProtoMessage() {} func (x *ContentRating) ProtoReflect() protoreflect.Message { mi := &file_metadata_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ContentRating.ProtoReflect.Descriptor instead. func (*ContentRating) Descriptor() ([]byte, []int) { return file_metadata_proto_rawDescGZIP(), []int{22} } func (x *ContentRating) GetCountry() string { if x != nil && x.Country != nil { return *x.Country } return "" } func (x *ContentRating) GetTag() []string { if x != nil { return x.Tag } return nil } var File_metadata_proto protoreflect.FileDescriptor var file_metadata_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9f, 0x08, 0x0a, 0x06, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x49, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x46, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x4f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x62, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x52, 0x09, 0x62, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x12, 0x49, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xe7, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x63, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x53, 0x74, 0x72, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x52, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x42, 0x55, 0x4d, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4d, 0x50, 0x49, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x50, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x4f, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x06, 0x22, 0x80, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x52, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x06, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x4c, 0x79, 0x72, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x10, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xf7, 0x02, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x47, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x58, 0x45, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x55, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x10, 0x07, 0x22, 0x94, 0x07, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x41, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x43, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x49, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x53, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x55, 0x72, 0x69, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x6c, 0x6b, 0x18, 0x55, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x41, 0x6e, 0x64, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x59, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x2c, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x49, 0x58, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x02, 0x22, 0x3c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x50, 0x49, 0x53, 0x4f, 0x44, 0x49, 0x43, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x22, 0xcd, 0x09, 0x0a, 0x07, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x41, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x43, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x45, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x40, 0x0a, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x40, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x4a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x4b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x4d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x52, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x53, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x2e, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x6c, 0x6b, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x75, 0x73, 0x69, 0x63, 0x41, 0x6e, 0x64, 0x54, 0x61, 0x6c, 0x6b, 0x12, 0x46, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x18, 0x60, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x62, 0x6f, 0x6f, 0x6b, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x22, 0x2f, 0x0a, 0x0b, 0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x10, 0x02, 0x22, 0x1e, 0x0a, 0x08, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x22, 0x62, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x59, 0x65, 0x61, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x63, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x64, 0x65, 0x63, 0x61, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x0a, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6c, 0x62, 0x75, 0x6d, 0x52, 0x05, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x22, 0x6e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x35, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x58, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x03, 0x22, 0x3b, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x09, 0x42, 0x69, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x61, 0x0a, 0x04, 0x44, 0x69, 0x73, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x22, 0x6b, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x14, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x05, 0x0a, 0x01, 0x50, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x01, 0x22, 0x98, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x09, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x52, 0x09, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2d, 0x0a, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x55, 0x0a, 0x09, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x55, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x48, 0x55, 0x46, 0x46, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x52, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x15, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x42, 0x15, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x0a, 0x53, 0x61, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x30, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xae, 0x01, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x47, 0x47, 0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53, 0x5f, 0x39, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x47, 0x47, 0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53, 0x5f, 0x31, 0x36, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x47, 0x47, 0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53, 0x5f, 0x33, 0x32, 0x30, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x50, 0x33, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x50, 0x33, 0x5f, 0x33, 0x32, 0x30, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x50, 0x33, 0x5f, 0x31, 0x36, 0x30, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x50, 0x33, 0x5f, 0x39, 0x36, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x50, 0x33, 0x5f, 0x31, 0x36, 0x30, 0x5f, 0x45, 0x4e, 0x43, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x41, 0x43, 0x5f, 0x32, 0x34, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x41, 0x43, 0x5f, 0x34, 0x38, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4c, 0x41, 0x43, 0x5f, 0x46, 0x4c, 0x41, 0x43, 0x10, 0x10, 0x22, 0x24, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x42, 0x4b, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x5a, 0x21, 0x74, 0x75, 0x78, 0x70, 0x61, 0x2e, 0x69, 0x6e, 0x2f, 0x61, 0x2f, 0x67, 0x6f, 0x70, 0x6c, 0x61, 0x79, 0x64, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x73, 0x70, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, } var ( file_metadata_proto_rawDescOnce sync.Once file_metadata_proto_rawDescData = file_metadata_proto_rawDesc ) func file_metadata_proto_rawDescGZIP() []byte { file_metadata_proto_rawDescOnce.Do(func() { file_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_metadata_proto_rawDescData) }) return file_metadata_proto_rawDescData } var file_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 10) var file_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_metadata_proto_goTypes = []interface{}{ (Album_Type)(0), // 0: spotify.metadata.Album.Type (ArtistWithRole_ArtistRole)(0), // 1: spotify.metadata.ArtistWithRole.ArtistRole (Show_MediaType)(0), // 2: spotify.metadata.Show.MediaType (Show_ConsumptionOrder)(0), // 3: spotify.metadata.Show.ConsumptionOrder (Episode_EpisodeType)(0), // 4: spotify.metadata.Episode.EpisodeType (Image_Size)(0), // 5: spotify.metadata.Image.Size (Copyright_Type)(0), // 6: spotify.metadata.Copyright.Type (Restriction_Catalogue)(0), // 7: spotify.metadata.Restriction.Catalogue (Restriction_Type)(0), // 8: spotify.metadata.Restriction.Type (AudioFile_Format)(0), // 9: spotify.metadata.AudioFile.Format (*Artist)(nil), // 10: spotify.metadata.Artist (*Album)(nil), // 11: spotify.metadata.Album (*Track)(nil), // 12: spotify.metadata.Track (*ArtistWithRole)(nil), // 13: spotify.metadata.ArtistWithRole (*Show)(nil), // 14: spotify.metadata.Show (*Episode)(nil), // 15: spotify.metadata.Episode (*Licensor)(nil), // 16: spotify.metadata.Licensor (*TopTracks)(nil), // 17: spotify.metadata.TopTracks (*ActivityPeriod)(nil), // 18: spotify.metadata.ActivityPeriod (*AlbumGroup)(nil), // 19: spotify.metadata.AlbumGroup (*Date)(nil), // 20: spotify.metadata.Date (*Image)(nil), // 21: spotify.metadata.Image (*ImageGroup)(nil), // 22: spotify.metadata.ImageGroup (*Biography)(nil), // 23: spotify.metadata.Biography (*Disc)(nil), // 24: spotify.metadata.Disc (*Copyright)(nil), // 25: spotify.metadata.Copyright (*Restriction)(nil), // 26: spotify.metadata.Restriction (*Availability)(nil), // 27: spotify.metadata.Availability (*SalePeriod)(nil), // 28: spotify.metadata.SalePeriod (*ExternalId)(nil), // 29: spotify.metadata.ExternalId (*AudioFile)(nil), // 30: spotify.metadata.AudioFile (*VideoFile)(nil), // 31: spotify.metadata.VideoFile (*ContentRating)(nil), // 32: spotify.metadata.ContentRating } var file_metadata_proto_depIdxs = []int32{ 17, // 0: spotify.metadata.Artist.top_track:type_name -> spotify.metadata.TopTracks 19, // 1: spotify.metadata.Artist.album_group:type_name -> spotify.metadata.AlbumGroup 19, // 2: spotify.metadata.Artist.single_group:type_name -> spotify.metadata.AlbumGroup 19, // 3: spotify.metadata.Artist.compilation_group:type_name -> spotify.metadata.AlbumGroup 19, // 4: spotify.metadata.Artist.appears_on_group:type_name -> spotify.metadata.AlbumGroup 29, // 5: spotify.metadata.Artist.external_id:type_name -> spotify.metadata.ExternalId 21, // 6: spotify.metadata.Artist.portrait:type_name -> spotify.metadata.Image 23, // 7: spotify.metadata.Artist.biography:type_name -> spotify.metadata.Biography 18, // 8: spotify.metadata.Artist.activity_period:type_name -> spotify.metadata.ActivityPeriod 26, // 9: spotify.metadata.Artist.restriction:type_name -> spotify.metadata.Restriction 10, // 10: spotify.metadata.Artist.related:type_name -> spotify.metadata.Artist 22, // 11: spotify.metadata.Artist.portrait_group:type_name -> spotify.metadata.ImageGroup 28, // 12: spotify.metadata.Artist.sale_period:type_name -> spotify.metadata.SalePeriod 27, // 13: spotify.metadata.Artist.availability:type_name -> spotify.metadata.Availability 10, // 14: spotify.metadata.Album.artist:type_name -> spotify.metadata.Artist 0, // 15: spotify.metadata.Album.type:type_name -> spotify.metadata.Album.Type 20, // 16: spotify.metadata.Album.date:type_name -> spotify.metadata.Date 21, // 17: spotify.metadata.Album.cover:type_name -> spotify.metadata.Image 29, // 18: spotify.metadata.Album.external_id:type_name -> spotify.metadata.ExternalId 24, // 19: spotify.metadata.Album.disc:type_name -> spotify.metadata.Disc 25, // 20: spotify.metadata.Album.copyright:type_name -> spotify.metadata.Copyright 26, // 21: spotify.metadata.Album.restriction:type_name -> spotify.metadata.Restriction 11, // 22: spotify.metadata.Album.related:type_name -> spotify.metadata.Album 28, // 23: spotify.metadata.Album.sale_period:type_name -> spotify.metadata.SalePeriod 22, // 24: spotify.metadata.Album.cover_group:type_name -> spotify.metadata.ImageGroup 27, // 25: spotify.metadata.Album.availability:type_name -> spotify.metadata.Availability 11, // 26: spotify.metadata.Track.album:type_name -> spotify.metadata.Album 10, // 27: spotify.metadata.Track.artist:type_name -> spotify.metadata.Artist 29, // 28: spotify.metadata.Track.external_id:type_name -> spotify.metadata.ExternalId 26, // 29: spotify.metadata.Track.restriction:type_name -> spotify.metadata.Restriction 30, // 30: spotify.metadata.Track.file:type_name -> spotify.metadata.AudioFile 12, // 31: spotify.metadata.Track.alternative:type_name -> spotify.metadata.Track 28, // 32: spotify.metadata.Track.sale_period:type_name -> spotify.metadata.SalePeriod 30, // 33: spotify.metadata.Track.preview:type_name -> spotify.metadata.AudioFile 27, // 34: spotify.metadata.Track.availability:type_name -> spotify.metadata.Availability 16, // 35: spotify.metadata.Track.licensor:type_name -> spotify.metadata.Licensor 32, // 36: spotify.metadata.Track.content_rating:type_name -> spotify.metadata.ContentRating 13, // 37: spotify.metadata.Track.artist_with_role:type_name -> spotify.metadata.ArtistWithRole 1, // 38: spotify.metadata.ArtistWithRole.role:type_name -> spotify.metadata.ArtistWithRole.ArtistRole 22, // 39: spotify.metadata.Show.cover_image:type_name -> spotify.metadata.ImageGroup 15, // 40: spotify.metadata.Show.episode:type_name -> spotify.metadata.Episode 25, // 41: spotify.metadata.Show.copyright:type_name -> spotify.metadata.Copyright 26, // 42: spotify.metadata.Show.restriction:type_name -> spotify.metadata.Restriction 2, // 43: spotify.metadata.Show.media_type:type_name -> spotify.metadata.Show.MediaType 3, // 44: spotify.metadata.Show.consumption_order:type_name -> spotify.metadata.Show.ConsumptionOrder 27, // 45: spotify.metadata.Show.availability:type_name -> spotify.metadata.Availability 30, // 46: spotify.metadata.Episode.audio:type_name -> spotify.metadata.AudioFile 20, // 47: spotify.metadata.Episode.publish_time:type_name -> spotify.metadata.Date 22, // 48: spotify.metadata.Episode.cover_image:type_name -> spotify.metadata.ImageGroup 14, // 49: spotify.metadata.Episode.show:type_name -> spotify.metadata.Show 31, // 50: spotify.metadata.Episode.video:type_name -> spotify.metadata.VideoFile 31, // 51: spotify.metadata.Episode.video_preview:type_name -> spotify.metadata.VideoFile 30, // 52: spotify.metadata.Episode.audio_preview:type_name -> spotify.metadata.AudioFile 26, // 53: spotify.metadata.Episode.restriction:type_name -> spotify.metadata.Restriction 22, // 54: spotify.metadata.Episode.freeze_frame:type_name -> spotify.metadata.ImageGroup 27, // 55: spotify.metadata.Episode.availability:type_name -> spotify.metadata.Availability 4, // 56: spotify.metadata.Episode.type:type_name -> spotify.metadata.Episode.EpisodeType 32, // 57: spotify.metadata.Episode.content_rating:type_name -> spotify.metadata.ContentRating 12, // 58: spotify.metadata.TopTracks.track:type_name -> spotify.metadata.Track 11, // 59: spotify.metadata.AlbumGroup.album:type_name -> spotify.metadata.Album 5, // 60: spotify.metadata.Image.size:type_name -> spotify.metadata.Image.Size 21, // 61: spotify.metadata.ImageGroup.image:type_name -> spotify.metadata.Image 21, // 62: spotify.metadata.Biography.portrait:type_name -> spotify.metadata.Image 22, // 63: spotify.metadata.Biography.portrait_group:type_name -> spotify.metadata.ImageGroup 12, // 64: spotify.metadata.Disc.track:type_name -> spotify.metadata.Track 6, // 65: spotify.metadata.Copyright.type:type_name -> spotify.metadata.Copyright.Type 7, // 66: spotify.metadata.Restriction.catalogue:type_name -> spotify.metadata.Restriction.Catalogue 8, // 67: spotify.metadata.Restriction.type:type_name -> spotify.metadata.Restriction.Type 20, // 68: spotify.metadata.Availability.start:type_name -> spotify.metadata.Date 26, // 69: spotify.metadata.SalePeriod.restriction:type_name -> spotify.metadata.Restriction 20, // 70: spotify.metadata.SalePeriod.start:type_name -> spotify.metadata.Date 20, // 71: spotify.metadata.SalePeriod.end:type_name -> spotify.metadata.Date 9, // 72: spotify.metadata.AudioFile.format:type_name -> spotify.metadata.AudioFile.Format 73, // [73:73] is the sub-list for method output_type 73, // [73:73] is the sub-list for method input_type 73, // [73:73] is the sub-list for extension type_name 73, // [73:73] is the sub-list for extension extendee 0, // [0:73] is the sub-list for field type_name } func init() { file_metadata_proto_init() } func file_metadata_proto_init() { if File_metadata_proto != nil { return } if !protoimpl.UnsafeEnabled { file_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Artist); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Album); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Track); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtistWithRole); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Show); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Episode); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Licensor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopTracks); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivityPeriod); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AlbumGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Date); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Image); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImageGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Biography); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Disc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Copyright); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Restriction); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Availability); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SalePeriod); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExternalId); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AudioFile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VideoFile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_metadata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContentRating); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_metadata_proto_msgTypes[16].OneofWrappers = []interface{}{ (*Restriction_CountriesAllowed)(nil), (*Restriction_CountriesForbidden)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_metadata_proto_rawDesc, NumEnums: 10, NumMessages: 23, NumExtensions: 0, NumServices: 0, }, GoTypes: file_metadata_proto_goTypes, DependencyIndexes: file_metadata_proto_depIdxs, EnumInfos: file_metadata_proto_enumTypes, MessageInfos: file_metadata_proto_msgTypes, }.Build() File_metadata_proto = out.File file_metadata_proto_rawDesc = nil file_metadata_proto_goTypes = nil file_metadata_proto_depIdxs = nil }