goplayd/lib/spot/proto/playlist4_external.pb.go

3763 lines
134 KiB
Go

// 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: playlist4_external.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 ListAttributeKind int32
const (
ListAttributeKind_LIST_UNKNOWN ListAttributeKind = 0
ListAttributeKind_LIST_NAME ListAttributeKind = 1
ListAttributeKind_LIST_DESCRIPTION ListAttributeKind = 2
ListAttributeKind_LIST_PICTURE ListAttributeKind = 3
ListAttributeKind_LIST_COLLABORATIVE ListAttributeKind = 4
ListAttributeKind_LIST_PL3_VERSION ListAttributeKind = 5
ListAttributeKind_LIST_DELETED_BY_OWNER ListAttributeKind = 6
ListAttributeKind_LIST_CLIENT_ID ListAttributeKind = 10
ListAttributeKind_LIST_FORMAT ListAttributeKind = 11
ListAttributeKind_LIST_FORMAT_ATTRIBUTES ListAttributeKind = 12
ListAttributeKind_LIST_PICTURE_SIZE ListAttributeKind = 13
)
// Enum value maps for ListAttributeKind.
var (
ListAttributeKind_name = map[int32]string{
0: "LIST_UNKNOWN",
1: "LIST_NAME",
2: "LIST_DESCRIPTION",
3: "LIST_PICTURE",
4: "LIST_COLLABORATIVE",
5: "LIST_PL3_VERSION",
6: "LIST_DELETED_BY_OWNER",
10: "LIST_CLIENT_ID",
11: "LIST_FORMAT",
12: "LIST_FORMAT_ATTRIBUTES",
13: "LIST_PICTURE_SIZE",
}
ListAttributeKind_value = map[string]int32{
"LIST_UNKNOWN": 0,
"LIST_NAME": 1,
"LIST_DESCRIPTION": 2,
"LIST_PICTURE": 3,
"LIST_COLLABORATIVE": 4,
"LIST_PL3_VERSION": 5,
"LIST_DELETED_BY_OWNER": 6,
"LIST_CLIENT_ID": 10,
"LIST_FORMAT": 11,
"LIST_FORMAT_ATTRIBUTES": 12,
"LIST_PICTURE_SIZE": 13,
}
)
func (x ListAttributeKind) Enum() *ListAttributeKind {
p := new(ListAttributeKind)
*p = x
return p
}
func (x ListAttributeKind) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ListAttributeKind) Descriptor() protoreflect.EnumDescriptor {
return file_playlist4_external_proto_enumTypes[0].Descriptor()
}
func (ListAttributeKind) Type() protoreflect.EnumType {
return &file_playlist4_external_proto_enumTypes[0]
}
func (x ListAttributeKind) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ListAttributeKind) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ListAttributeKind(num)
return nil
}
// Deprecated: Use ListAttributeKind.Descriptor instead.
func (ListAttributeKind) EnumDescriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{0}
}
type ItemAttributeKind int32
const (
ItemAttributeKind_ITEM_UNKNOWN ItemAttributeKind = 0
ItemAttributeKind_ITEM_ADDED_BY ItemAttributeKind = 1
ItemAttributeKind_ITEM_TIMESTAMP ItemAttributeKind = 2
ItemAttributeKind_ITEM_SEEN_AT ItemAttributeKind = 9
ItemAttributeKind_ITEM_PUBLIC ItemAttributeKind = 10
ItemAttributeKind_ITEM_FORMAT_ATTRIBUTES ItemAttributeKind = 11
ItemAttributeKind_ITEM_ID ItemAttributeKind = 12
)
// Enum value maps for ItemAttributeKind.
var (
ItemAttributeKind_name = map[int32]string{
0: "ITEM_UNKNOWN",
1: "ITEM_ADDED_BY",
2: "ITEM_TIMESTAMP",
9: "ITEM_SEEN_AT",
10: "ITEM_PUBLIC",
11: "ITEM_FORMAT_ATTRIBUTES",
12: "ITEM_ID",
}
ItemAttributeKind_value = map[string]int32{
"ITEM_UNKNOWN": 0,
"ITEM_ADDED_BY": 1,
"ITEM_TIMESTAMP": 2,
"ITEM_SEEN_AT": 9,
"ITEM_PUBLIC": 10,
"ITEM_FORMAT_ATTRIBUTES": 11,
"ITEM_ID": 12,
}
)
func (x ItemAttributeKind) Enum() *ItemAttributeKind {
p := new(ItemAttributeKind)
*p = x
return p
}
func (x ItemAttributeKind) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ItemAttributeKind) Descriptor() protoreflect.EnumDescriptor {
return file_playlist4_external_proto_enumTypes[1].Descriptor()
}
func (ItemAttributeKind) Type() protoreflect.EnumType {
return &file_playlist4_external_proto_enumTypes[1]
}
func (x ItemAttributeKind) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ItemAttributeKind) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ItemAttributeKind(num)
return nil
}
// Deprecated: Use ItemAttributeKind.Descriptor instead.
func (ItemAttributeKind) EnumDescriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{1}
}
type GeoblockBlockingType int32
const (
GeoblockBlockingType_GEOBLOCK_BLOCKING_TYPE_UNSPECIFIED GeoblockBlockingType = 0
GeoblockBlockingType_GEOBLOCK_BLOCKING_TYPE_TITLE GeoblockBlockingType = 1
GeoblockBlockingType_GEOBLOCK_BLOCKING_TYPE_DESCRIPTION GeoblockBlockingType = 2
GeoblockBlockingType_GEOBLOCK_BLOCKING_TYPE_IMAGE GeoblockBlockingType = 3
)
// Enum value maps for GeoblockBlockingType.
var (
GeoblockBlockingType_name = map[int32]string{
0: "GEOBLOCK_BLOCKING_TYPE_UNSPECIFIED",
1: "GEOBLOCK_BLOCKING_TYPE_TITLE",
2: "GEOBLOCK_BLOCKING_TYPE_DESCRIPTION",
3: "GEOBLOCK_BLOCKING_TYPE_IMAGE",
}
GeoblockBlockingType_value = map[string]int32{
"GEOBLOCK_BLOCKING_TYPE_UNSPECIFIED": 0,
"GEOBLOCK_BLOCKING_TYPE_TITLE": 1,
"GEOBLOCK_BLOCKING_TYPE_DESCRIPTION": 2,
"GEOBLOCK_BLOCKING_TYPE_IMAGE": 3,
}
)
func (x GeoblockBlockingType) Enum() *GeoblockBlockingType {
p := new(GeoblockBlockingType)
*p = x
return p
}
func (x GeoblockBlockingType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (GeoblockBlockingType) Descriptor() protoreflect.EnumDescriptor {
return file_playlist4_external_proto_enumTypes[2].Descriptor()
}
func (GeoblockBlockingType) Type() protoreflect.EnumType {
return &file_playlist4_external_proto_enumTypes[2]
}
func (x GeoblockBlockingType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *GeoblockBlockingType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = GeoblockBlockingType(num)
return nil
}
// Deprecated: Use GeoblockBlockingType.Descriptor instead.
func (GeoblockBlockingType) EnumDescriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{2}
}
type Op_Kind int32
const (
Op_KIND_UNKNOWN Op_Kind = 0
Op_ADD Op_Kind = 2
Op_REM Op_Kind = 3
Op_MOV Op_Kind = 4
Op_UPDATE_ITEM_ATTRIBUTES Op_Kind = 5
Op_UPDATE_LIST_ATTRIBUTES Op_Kind = 6
)
// Enum value maps for Op_Kind.
var (
Op_Kind_name = map[int32]string{
0: "KIND_UNKNOWN",
2: "ADD",
3: "REM",
4: "MOV",
5: "UPDATE_ITEM_ATTRIBUTES",
6: "UPDATE_LIST_ATTRIBUTES",
}
Op_Kind_value = map[string]int32{
"KIND_UNKNOWN": 0,
"ADD": 2,
"REM": 3,
"MOV": 4,
"UPDATE_ITEM_ATTRIBUTES": 5,
"UPDATE_LIST_ATTRIBUTES": 6,
}
)
func (x Op_Kind) Enum() *Op_Kind {
p := new(Op_Kind)
*p = x
return p
}
func (x Op_Kind) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Op_Kind) Descriptor() protoreflect.EnumDescriptor {
return file_playlist4_external_proto_enumTypes[3].Descriptor()
}
func (Op_Kind) Type() protoreflect.EnumType {
return &file_playlist4_external_proto_enumTypes[3]
}
func (x Op_Kind) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Op_Kind) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Op_Kind(num)
return nil
}
// Deprecated: Use Op_Kind.Descriptor instead.
func (Op_Kind) EnumDescriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{14, 0}
}
type SourceInfo_Client int32
const (
SourceInfo_CLIENT_UNKNOWN SourceInfo_Client = 0
SourceInfo_NATIVE_HERMES SourceInfo_Client = 1
SourceInfo_CLIENT SourceInfo_Client = 2
SourceInfo_PYTHON SourceInfo_Client = 3
SourceInfo_JAVA SourceInfo_Client = 4
SourceInfo_WEBPLAYER SourceInfo_Client = 5
SourceInfo_LIBSPOTIFY SourceInfo_Client = 6
)
// Enum value maps for SourceInfo_Client.
var (
SourceInfo_Client_name = map[int32]string{
0: "CLIENT_UNKNOWN",
1: "NATIVE_HERMES",
2: "CLIENT",
3: "PYTHON",
4: "JAVA",
5: "WEBPLAYER",
6: "LIBSPOTIFY",
}
SourceInfo_Client_value = map[string]int32{
"CLIENT_UNKNOWN": 0,
"NATIVE_HERMES": 1,
"CLIENT": 2,
"PYTHON": 3,
"JAVA": 4,
"WEBPLAYER": 5,
"LIBSPOTIFY": 6,
}
)
func (x SourceInfo_Client) Enum() *SourceInfo_Client {
p := new(SourceInfo_Client)
*p = x
return p
}
func (x SourceInfo_Client) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SourceInfo_Client) Descriptor() protoreflect.EnumDescriptor {
return file_playlist4_external_proto_enumTypes[4].Descriptor()
}
func (SourceInfo_Client) Type() protoreflect.EnumType {
return &file_playlist4_external_proto_enumTypes[4]
}
func (x SourceInfo_Client) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SourceInfo_Client) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SourceInfo_Client(num)
return nil
}
// Deprecated: Use SourceInfo_Client.Descriptor instead.
func (SourceInfo_Client) EnumDescriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{17, 0}
}
type Item struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uri *string `protobuf:"bytes,1,req,name=uri" json:"uri,omitempty"`
Attributes *ItemAttributes `protobuf:"bytes,2,opt,name=attributes" json:"attributes,omitempty"`
}
func (x *Item) Reset() {
*x = Item{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Item) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Item) ProtoMessage() {}
func (x *Item) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Item.ProtoReflect.Descriptor instead.
func (*Item) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{0}
}
func (x *Item) GetUri() string {
if x != nil && x.Uri != nil {
return *x.Uri
}
return ""
}
func (x *Item) GetAttributes() *ItemAttributes {
if x != nil {
return x.Attributes
}
return nil
}
type MetaItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Revision []byte `protobuf:"bytes,1,opt,name=revision" json:"revision,omitempty"`
Attributes *ListAttributes `protobuf:"bytes,2,opt,name=attributes" json:"attributes,omitempty"`
Length *int32 `protobuf:"varint,3,opt,name=length" json:"length,omitempty"`
Timestamp *int64 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"`
OwnerUsername *string `protobuf:"bytes,5,opt,name=owner_username,json=ownerUsername" json:"owner_username,omitempty"`
AbuseReportingEnabled *bool `protobuf:"varint,6,opt,name=abuse_reporting_enabled,json=abuseReportingEnabled" json:"abuse_reporting_enabled,omitempty"`
Capabilities *Capabilities `protobuf:"bytes,7,opt,name=capabilities" json:"capabilities,omitempty"`
}
func (x *MetaItem) Reset() {
*x = MetaItem{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MetaItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetaItem) ProtoMessage() {}
func (x *MetaItem) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 MetaItem.ProtoReflect.Descriptor instead.
func (*MetaItem) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{1}
}
func (x *MetaItem) GetRevision() []byte {
if x != nil {
return x.Revision
}
return nil
}
func (x *MetaItem) GetAttributes() *ListAttributes {
if x != nil {
return x.Attributes
}
return nil
}
func (x *MetaItem) GetLength() int32 {
if x != nil && x.Length != nil {
return *x.Length
}
return 0
}
func (x *MetaItem) GetTimestamp() int64 {
if x != nil && x.Timestamp != nil {
return *x.Timestamp
}
return 0
}
func (x *MetaItem) GetOwnerUsername() string {
if x != nil && x.OwnerUsername != nil {
return *x.OwnerUsername
}
return ""
}
func (x *MetaItem) GetAbuseReportingEnabled() bool {
if x != nil && x.AbuseReportingEnabled != nil {
return *x.AbuseReportingEnabled
}
return false
}
func (x *MetaItem) GetCapabilities() *Capabilities {
if x != nil {
return x.Capabilities
}
return nil
}
type ListItems struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Pos *int32 `protobuf:"varint,1,req,name=pos" json:"pos,omitempty"`
Truncated *bool `protobuf:"varint,2,req,name=truncated" json:"truncated,omitempty"`
Items []*Item `protobuf:"bytes,3,rep,name=items" json:"items,omitempty"`
MetaItems []*MetaItem `protobuf:"bytes,4,rep,name=meta_items,json=metaItems" json:"meta_items,omitempty"`
}
func (x *ListItems) Reset() {
*x = ListItems{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListItems) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListItems) ProtoMessage() {}
func (x *ListItems) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ListItems.ProtoReflect.Descriptor instead.
func (*ListItems) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{2}
}
func (x *ListItems) GetPos() int32 {
if x != nil && x.Pos != nil {
return *x.Pos
}
return 0
}
func (x *ListItems) GetTruncated() bool {
if x != nil && x.Truncated != nil {
return *x.Truncated
}
return false
}
func (x *ListItems) GetItems() []*Item {
if x != nil {
return x.Items
}
return nil
}
func (x *ListItems) GetMetaItems() []*MetaItem {
if x != nil {
return x.MetaItems
}
return nil
}
type FormatListAttribute struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}
func (x *FormatListAttribute) Reset() {
*x = FormatListAttribute{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FormatListAttribute) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FormatListAttribute) ProtoMessage() {}
func (x *FormatListAttribute) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 FormatListAttribute.ProtoReflect.Descriptor instead.
func (*FormatListAttribute) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{3}
}
func (x *FormatListAttribute) GetKey() string {
if x != nil && x.Key != nil {
return *x.Key
}
return ""
}
func (x *FormatListAttribute) GetValue() string {
if x != nil && x.Value != nil {
return *x.Value
}
return ""
}
type PictureSize struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
TargetName *string `protobuf:"bytes,1,opt,name=target_name,json=targetName" json:"target_name,omitempty"`
Url *string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
}
func (x *PictureSize) Reset() {
*x = PictureSize{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PictureSize) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PictureSize) ProtoMessage() {}
func (x *PictureSize) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 PictureSize.ProtoReflect.Descriptor instead.
func (*PictureSize) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{4}
}
func (x *PictureSize) GetTargetName() string {
if x != nil && x.TargetName != nil {
return *x.TargetName
}
return ""
}
func (x *PictureSize) GetUrl() string {
if x != nil && x.Url != nil {
return *x.Url
}
return ""
}
type ListAttributes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
Picture []byte `protobuf:"bytes,3,opt,name=picture" json:"picture,omitempty"`
Collaborative *bool `protobuf:"varint,4,opt,name=collaborative" json:"collaborative,omitempty"`
Pl3Version *string `protobuf:"bytes,5,opt,name=pl3_version,json=pl3Version" json:"pl3_version,omitempty"`
DeletedByOwner *bool `protobuf:"varint,6,opt,name=deleted_by_owner,json=deletedByOwner" json:"deleted_by_owner,omitempty"`
ClientId *string `protobuf:"bytes,10,opt,name=client_id,json=clientId" json:"client_id,omitempty"`
Format *string `protobuf:"bytes,11,opt,name=format" json:"format,omitempty"`
FormatAttributes []*FormatListAttribute `protobuf:"bytes,12,rep,name=format_attributes,json=formatAttributes" json:"format_attributes,omitempty"`
PictureSize []*PictureSize `protobuf:"bytes,13,rep,name=picture_size,json=pictureSize" json:"picture_size,omitempty"`
}
func (x *ListAttributes) Reset() {
*x = ListAttributes{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListAttributes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListAttributes) ProtoMessage() {}
func (x *ListAttributes) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ListAttributes.ProtoReflect.Descriptor instead.
func (*ListAttributes) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{5}
}
func (x *ListAttributes) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
func (x *ListAttributes) GetDescription() string {
if x != nil && x.Description != nil {
return *x.Description
}
return ""
}
func (x *ListAttributes) GetPicture() []byte {
if x != nil {
return x.Picture
}
return nil
}
func (x *ListAttributes) GetCollaborative() bool {
if x != nil && x.Collaborative != nil {
return *x.Collaborative
}
return false
}
func (x *ListAttributes) GetPl3Version() string {
if x != nil && x.Pl3Version != nil {
return *x.Pl3Version
}
return ""
}
func (x *ListAttributes) GetDeletedByOwner() bool {
if x != nil && x.DeletedByOwner != nil {
return *x.DeletedByOwner
}
return false
}
func (x *ListAttributes) GetClientId() string {
if x != nil && x.ClientId != nil {
return *x.ClientId
}
return ""
}
func (x *ListAttributes) GetFormat() string {
if x != nil && x.Format != nil {
return *x.Format
}
return ""
}
func (x *ListAttributes) GetFormatAttributes() []*FormatListAttribute {
if x != nil {
return x.FormatAttributes
}
return nil
}
func (x *ListAttributes) GetPictureSize() []*PictureSize {
if x != nil {
return x.PictureSize
}
return nil
}
type ItemAttributes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AddedBy *string `protobuf:"bytes,1,opt,name=added_by,json=addedBy" json:"added_by,omitempty"`
Timestamp *int64 `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
SeenAt *int64 `protobuf:"varint,9,opt,name=seen_at,json=seenAt" json:"seen_at,omitempty"`
Public *bool `protobuf:"varint,10,opt,name=public" json:"public,omitempty"`
FormatAttributes []*FormatListAttribute `protobuf:"bytes,11,rep,name=format_attributes,json=formatAttributes" json:"format_attributes,omitempty"`
ItemId []byte `protobuf:"bytes,12,opt,name=item_id,json=itemId" json:"item_id,omitempty"`
}
func (x *ItemAttributes) Reset() {
*x = ItemAttributes{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ItemAttributes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ItemAttributes) ProtoMessage() {}
func (x *ItemAttributes) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ItemAttributes.ProtoReflect.Descriptor instead.
func (*ItemAttributes) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{6}
}
func (x *ItemAttributes) GetAddedBy() string {
if x != nil && x.AddedBy != nil {
return *x.AddedBy
}
return ""
}
func (x *ItemAttributes) GetTimestamp() int64 {
if x != nil && x.Timestamp != nil {
return *x.Timestamp
}
return 0
}
func (x *ItemAttributes) GetSeenAt() int64 {
if x != nil && x.SeenAt != nil {
return *x.SeenAt
}
return 0
}
func (x *ItemAttributes) GetPublic() bool {
if x != nil && x.Public != nil {
return *x.Public
}
return false
}
func (x *ItemAttributes) GetFormatAttributes() []*FormatListAttribute {
if x != nil {
return x.FormatAttributes
}
return nil
}
func (x *ItemAttributes) GetItemId() []byte {
if x != nil {
return x.ItemId
}
return nil
}
type Add struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FromIndex *int32 `protobuf:"varint,1,opt,name=from_index,json=fromIndex" json:"from_index,omitempty"`
Items []*Item `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
AddLast *bool `protobuf:"varint,4,opt,name=add_last,json=addLast" json:"add_last,omitempty"`
AddFirst *bool `protobuf:"varint,5,opt,name=add_first,json=addFirst" json:"add_first,omitempty"`
}
func (x *Add) Reset() {
*x = Add{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Add) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Add) ProtoMessage() {}
func (x *Add) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Add.ProtoReflect.Descriptor instead.
func (*Add) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{7}
}
func (x *Add) GetFromIndex() int32 {
if x != nil && x.FromIndex != nil {
return *x.FromIndex
}
return 0
}
func (x *Add) GetItems() []*Item {
if x != nil {
return x.Items
}
return nil
}
func (x *Add) GetAddLast() bool {
if x != nil && x.AddLast != nil {
return *x.AddLast
}
return false
}
func (x *Add) GetAddFirst() bool {
if x != nil && x.AddFirst != nil {
return *x.AddFirst
}
return false
}
type Rem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FromIndex *int32 `protobuf:"varint,1,opt,name=from_index,json=fromIndex" json:"from_index,omitempty"`
Length *int32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
Items []*Item `protobuf:"bytes,3,rep,name=items" json:"items,omitempty"`
ItemsAsKey *bool `protobuf:"varint,7,opt,name=items_as_key,json=itemsAsKey" json:"items_as_key,omitempty"`
}
func (x *Rem) Reset() {
*x = Rem{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Rem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Rem) ProtoMessage() {}
func (x *Rem) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Rem.ProtoReflect.Descriptor instead.
func (*Rem) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{8}
}
func (x *Rem) GetFromIndex() int32 {
if x != nil && x.FromIndex != nil {
return *x.FromIndex
}
return 0
}
func (x *Rem) GetLength() int32 {
if x != nil && x.Length != nil {
return *x.Length
}
return 0
}
func (x *Rem) GetItems() []*Item {
if x != nil {
return x.Items
}
return nil
}
func (x *Rem) GetItemsAsKey() bool {
if x != nil && x.ItemsAsKey != nil {
return *x.ItemsAsKey
}
return false
}
type Mov struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FromIndex *int32 `protobuf:"varint,1,req,name=from_index,json=fromIndex" json:"from_index,omitempty"`
Length *int32 `protobuf:"varint,2,req,name=length" json:"length,omitempty"`
ToIndex *int32 `protobuf:"varint,3,req,name=to_index,json=toIndex" json:"to_index,omitempty"`
}
func (x *Mov) Reset() {
*x = Mov{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Mov) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Mov) ProtoMessage() {}
func (x *Mov) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Mov.ProtoReflect.Descriptor instead.
func (*Mov) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{9}
}
func (x *Mov) GetFromIndex() int32 {
if x != nil && x.FromIndex != nil {
return *x.FromIndex
}
return 0
}
func (x *Mov) GetLength() int32 {
if x != nil && x.Length != nil {
return *x.Length
}
return 0
}
func (x *Mov) GetToIndex() int32 {
if x != nil && x.ToIndex != nil {
return *x.ToIndex
}
return 0
}
type ItemAttributesPartialState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Values *ItemAttributes `protobuf:"bytes,1,req,name=values" json:"values,omitempty"`
NoValue []ItemAttributeKind `protobuf:"varint,2,rep,name=no_value,json=noValue,enum=spotify.playlist4.proto.ItemAttributeKind" json:"no_value,omitempty"`
}
func (x *ItemAttributesPartialState) Reset() {
*x = ItemAttributesPartialState{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ItemAttributesPartialState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ItemAttributesPartialState) ProtoMessage() {}
func (x *ItemAttributesPartialState) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ItemAttributesPartialState.ProtoReflect.Descriptor instead.
func (*ItemAttributesPartialState) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{10}
}
func (x *ItemAttributesPartialState) GetValues() *ItemAttributes {
if x != nil {
return x.Values
}
return nil
}
func (x *ItemAttributesPartialState) GetNoValue() []ItemAttributeKind {
if x != nil {
return x.NoValue
}
return nil
}
type ListAttributesPartialState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Values *ListAttributes `protobuf:"bytes,1,req,name=values" json:"values,omitempty"`
NoValue []ListAttributeKind `protobuf:"varint,2,rep,name=no_value,json=noValue,enum=spotify.playlist4.proto.ListAttributeKind" json:"no_value,omitempty"`
}
func (x *ListAttributesPartialState) Reset() {
*x = ListAttributesPartialState{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListAttributesPartialState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListAttributesPartialState) ProtoMessage() {}
func (x *ListAttributesPartialState) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ListAttributesPartialState.ProtoReflect.Descriptor instead.
func (*ListAttributesPartialState) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{11}
}
func (x *ListAttributesPartialState) GetValues() *ListAttributes {
if x != nil {
return x.Values
}
return nil
}
func (x *ListAttributesPartialState) GetNoValue() []ListAttributeKind {
if x != nil {
return x.NoValue
}
return nil
}
type UpdateItemAttributes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Index *int32 `protobuf:"varint,1,req,name=index" json:"index,omitempty"`
NewAttributes *ItemAttributesPartialState `protobuf:"bytes,2,req,name=new_attributes,json=newAttributes" json:"new_attributes,omitempty"`
OldAttributes *ItemAttributesPartialState `protobuf:"bytes,3,opt,name=old_attributes,json=oldAttributes" json:"old_attributes,omitempty"`
}
func (x *UpdateItemAttributes) Reset() {
*x = UpdateItemAttributes{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateItemAttributes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateItemAttributes) ProtoMessage() {}
func (x *UpdateItemAttributes) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 UpdateItemAttributes.ProtoReflect.Descriptor instead.
func (*UpdateItemAttributes) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{12}
}
func (x *UpdateItemAttributes) GetIndex() int32 {
if x != nil && x.Index != nil {
return *x.Index
}
return 0
}
func (x *UpdateItemAttributes) GetNewAttributes() *ItemAttributesPartialState {
if x != nil {
return x.NewAttributes
}
return nil
}
func (x *UpdateItemAttributes) GetOldAttributes() *ItemAttributesPartialState {
if x != nil {
return x.OldAttributes
}
return nil
}
type UpdateListAttributes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NewAttributes *ListAttributesPartialState `protobuf:"bytes,1,req,name=new_attributes,json=newAttributes" json:"new_attributes,omitempty"`
OldAttributes *ListAttributesPartialState `protobuf:"bytes,2,opt,name=old_attributes,json=oldAttributes" json:"old_attributes,omitempty"`
}
func (x *UpdateListAttributes) Reset() {
*x = UpdateListAttributes{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateListAttributes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateListAttributes) ProtoMessage() {}
func (x *UpdateListAttributes) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 UpdateListAttributes.ProtoReflect.Descriptor instead.
func (*UpdateListAttributes) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{13}
}
func (x *UpdateListAttributes) GetNewAttributes() *ListAttributesPartialState {
if x != nil {
return x.NewAttributes
}
return nil
}
func (x *UpdateListAttributes) GetOldAttributes() *ListAttributesPartialState {
if x != nil {
return x.OldAttributes
}
return nil
}
type Op struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Kind *Op_Kind `protobuf:"varint,1,req,name=kind,enum=spotify.playlist4.proto.Op_Kind" json:"kind,omitempty"`
Add *Add `protobuf:"bytes,2,opt,name=add" json:"add,omitempty"`
Rem *Rem `protobuf:"bytes,3,opt,name=rem" json:"rem,omitempty"`
Mov *Mov `protobuf:"bytes,4,opt,name=mov" json:"mov,omitempty"`
UpdateItemAttributes *UpdateItemAttributes `protobuf:"bytes,5,opt,name=update_item_attributes,json=updateItemAttributes" json:"update_item_attributes,omitempty"`
UpdateListAttributes *UpdateListAttributes `protobuf:"bytes,6,opt,name=update_list_attributes,json=updateListAttributes" json:"update_list_attributes,omitempty"`
}
func (x *Op) Reset() {
*x = Op{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Op) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Op) ProtoMessage() {}
func (x *Op) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Op.ProtoReflect.Descriptor instead.
func (*Op) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{14}
}
func (x *Op) GetKind() Op_Kind {
if x != nil && x.Kind != nil {
return *x.Kind
}
return Op_KIND_UNKNOWN
}
func (x *Op) GetAdd() *Add {
if x != nil {
return x.Add
}
return nil
}
func (x *Op) GetRem() *Rem {
if x != nil {
return x.Rem
}
return nil
}
func (x *Op) GetMov() *Mov {
if x != nil {
return x.Mov
}
return nil
}
func (x *Op) GetUpdateItemAttributes() *UpdateItemAttributes {
if x != nil {
return x.UpdateItemAttributes
}
return nil
}
func (x *Op) GetUpdateListAttributes() *UpdateListAttributes {
if x != nil {
return x.UpdateListAttributes
}
return nil
}
type OpList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ops []*Op `protobuf:"bytes,1,rep,name=ops" json:"ops,omitempty"`
}
func (x *OpList) Reset() {
*x = OpList{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *OpList) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*OpList) ProtoMessage() {}
func (x *OpList) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 OpList.ProtoReflect.Descriptor instead.
func (*OpList) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{15}
}
func (x *OpList) GetOps() []*Op {
if x != nil {
return x.Ops
}
return nil
}
type ChangeInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
User *string `protobuf:"bytes,1,opt,name=user" json:"user,omitempty"`
Timestamp *int64 `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
Admin *bool `protobuf:"varint,3,opt,name=admin" json:"admin,omitempty"`
Undo *bool `protobuf:"varint,4,opt,name=undo" json:"undo,omitempty"`
Redo *bool `protobuf:"varint,5,opt,name=redo" json:"redo,omitempty"`
Merge *bool `protobuf:"varint,6,opt,name=merge" json:"merge,omitempty"`
Compressed *bool `protobuf:"varint,7,opt,name=compressed" json:"compressed,omitempty"`
Migration *bool `protobuf:"varint,8,opt,name=migration" json:"migration,omitempty"`
SplitId *int32 `protobuf:"varint,9,opt,name=split_id,json=splitId" json:"split_id,omitempty"`
Source *SourceInfo `protobuf:"bytes,10,opt,name=source" json:"source,omitempty"`
}
func (x *ChangeInfo) Reset() {
*x = ChangeInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ChangeInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChangeInfo) ProtoMessage() {}
func (x *ChangeInfo) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ChangeInfo.ProtoReflect.Descriptor instead.
func (*ChangeInfo) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{16}
}
func (x *ChangeInfo) GetUser() string {
if x != nil && x.User != nil {
return *x.User
}
return ""
}
func (x *ChangeInfo) GetTimestamp() int64 {
if x != nil && x.Timestamp != nil {
return *x.Timestamp
}
return 0
}
func (x *ChangeInfo) GetAdmin() bool {
if x != nil && x.Admin != nil {
return *x.Admin
}
return false
}
func (x *ChangeInfo) GetUndo() bool {
if x != nil && x.Undo != nil {
return *x.Undo
}
return false
}
func (x *ChangeInfo) GetRedo() bool {
if x != nil && x.Redo != nil {
return *x.Redo
}
return false
}
func (x *ChangeInfo) GetMerge() bool {
if x != nil && x.Merge != nil {
return *x.Merge
}
return false
}
func (x *ChangeInfo) GetCompressed() bool {
if x != nil && x.Compressed != nil {
return *x.Compressed
}
return false
}
func (x *ChangeInfo) GetMigration() bool {
if x != nil && x.Migration != nil {
return *x.Migration
}
return false
}
func (x *ChangeInfo) GetSplitId() int32 {
if x != nil && x.SplitId != nil {
return *x.SplitId
}
return 0
}
func (x *ChangeInfo) GetSource() *SourceInfo {
if x != nil {
return x.Source
}
return nil
}
type SourceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Client *SourceInfo_Client `protobuf:"varint,1,opt,name=client,enum=spotify.playlist4.proto.SourceInfo_Client" json:"client,omitempty"`
App *string `protobuf:"bytes,3,opt,name=app" json:"app,omitempty"`
Source *string `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"`
Version *string `protobuf:"bytes,5,opt,name=version" json:"version,omitempty"`
}
func (x *SourceInfo) Reset() {
*x = SourceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SourceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SourceInfo) ProtoMessage() {}
func (x *SourceInfo) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 SourceInfo.ProtoReflect.Descriptor instead.
func (*SourceInfo) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{17}
}
func (x *SourceInfo) GetClient() SourceInfo_Client {
if x != nil && x.Client != nil {
return *x.Client
}
return SourceInfo_CLIENT_UNKNOWN
}
func (x *SourceInfo) GetApp() string {
if x != nil && x.App != nil {
return *x.App
}
return ""
}
func (x *SourceInfo) GetSource() string {
if x != nil && x.Source != nil {
return *x.Source
}
return ""
}
func (x *SourceInfo) GetVersion() string {
if x != nil && x.Version != nil {
return *x.Version
}
return ""
}
type Delta struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
BaseVersion []byte `protobuf:"bytes,1,opt,name=base_version,json=baseVersion" json:"base_version,omitempty"`
Ops []*Op `protobuf:"bytes,2,rep,name=ops" json:"ops,omitempty"`
Info *ChangeInfo `protobuf:"bytes,4,opt,name=info" json:"info,omitempty"`
}
func (x *Delta) Reset() {
*x = Delta{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Delta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Delta) ProtoMessage() {}
func (x *Delta) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Delta.ProtoReflect.Descriptor instead.
func (*Delta) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{18}
}
func (x *Delta) GetBaseVersion() []byte {
if x != nil {
return x.BaseVersion
}
return nil
}
func (x *Delta) GetOps() []*Op {
if x != nil {
return x.Ops
}
return nil
}
func (x *Delta) GetInfo() *ChangeInfo {
if x != nil {
return x.Info
}
return nil
}
type Diff struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FromRevision []byte `protobuf:"bytes,1,req,name=from_revision,json=fromRevision" json:"from_revision,omitempty"`
Ops []*Op `protobuf:"bytes,2,rep,name=ops" json:"ops,omitempty"`
ToRevision []byte `protobuf:"bytes,3,req,name=to_revision,json=toRevision" json:"to_revision,omitempty"`
}
func (x *Diff) Reset() {
*x = Diff{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Diff) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Diff) ProtoMessage() {}
func (x *Diff) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 Diff.ProtoReflect.Descriptor instead.
func (*Diff) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{19}
}
func (x *Diff) GetFromRevision() []byte {
if x != nil {
return x.FromRevision
}
return nil
}
func (x *Diff) GetOps() []*Op {
if x != nil {
return x.Ops
}
return nil
}
func (x *Diff) GetToRevision() []byte {
if x != nil {
return x.ToRevision
}
return nil
}
type ListChanges struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
BaseRevision []byte `protobuf:"bytes,1,opt,name=base_revision,json=baseRevision" json:"base_revision,omitempty"`
Deltas []*Delta `protobuf:"bytes,2,rep,name=deltas" json:"deltas,omitempty"`
WantResultingRevisions *bool `protobuf:"varint,3,opt,name=want_resulting_revisions,json=wantResultingRevisions" json:"want_resulting_revisions,omitempty"`
WantSyncResult *bool `protobuf:"varint,4,opt,name=want_sync_result,json=wantSyncResult" json:"want_sync_result,omitempty"`
Nonces []int64 `protobuf:"varint,6,rep,name=nonces" json:"nonces,omitempty"`
}
func (x *ListChanges) Reset() {
*x = ListChanges{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListChanges) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListChanges) ProtoMessage() {}
func (x *ListChanges) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 ListChanges.ProtoReflect.Descriptor instead.
func (*ListChanges) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{20}
}
func (x *ListChanges) GetBaseRevision() []byte {
if x != nil {
return x.BaseRevision
}
return nil
}
func (x *ListChanges) GetDeltas() []*Delta {
if x != nil {
return x.Deltas
}
return nil
}
func (x *ListChanges) GetWantResultingRevisions() bool {
if x != nil && x.WantResultingRevisions != nil {
return *x.WantResultingRevisions
}
return false
}
func (x *ListChanges) GetWantSyncResult() bool {
if x != nil && x.WantSyncResult != nil {
return *x.WantSyncResult
}
return false
}
func (x *ListChanges) GetNonces() []int64 {
if x != nil {
return x.Nonces
}
return nil
}
type SelectedListContent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Revision []byte `protobuf:"bytes,1,opt,name=revision" json:"revision,omitempty"`
Length *int32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"`
Attributes *ListAttributes `protobuf:"bytes,3,opt,name=attributes" json:"attributes,omitempty"`
Contents *ListItems `protobuf:"bytes,5,opt,name=contents" json:"contents,omitempty"`
Diff *Diff `protobuf:"bytes,6,opt,name=diff" json:"diff,omitempty"`
SyncResult *Diff `protobuf:"bytes,7,opt,name=sync_result,json=syncResult" json:"sync_result,omitempty"`
ResultingRevisions [][]byte `protobuf:"bytes,8,rep,name=resulting_revisions,json=resultingRevisions" json:"resulting_revisions,omitempty"`
MultipleHeads *bool `protobuf:"varint,9,opt,name=multiple_heads,json=multipleHeads" json:"multiple_heads,omitempty"`
UpToDate *bool `protobuf:"varint,10,opt,name=up_to_date,json=upToDate" json:"up_to_date,omitempty"`
Nonces []int64 `protobuf:"varint,14,rep,name=nonces" json:"nonces,omitempty"`
Timestamp *int64 `protobuf:"varint,15,opt,name=timestamp" json:"timestamp,omitempty"`
OwnerUsername *string `protobuf:"bytes,16,opt,name=owner_username,json=ownerUsername" json:"owner_username,omitempty"`
AbuseReportingEnabled *bool `protobuf:"varint,17,opt,name=abuse_reporting_enabled,json=abuseReportingEnabled" json:"abuse_reporting_enabled,omitempty"`
Capabilities *Capabilities `protobuf:"bytes,18,opt,name=capabilities" json:"capabilities,omitempty"`
Geoblock []GeoblockBlockingType `protobuf:"varint,19,rep,name=geoblock,enum=spotify.playlist4.proto.GeoblockBlockingType" json:"geoblock,omitempty"`
}
func (x *SelectedListContent) Reset() {
*x = SelectedListContent{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SelectedListContent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SelectedListContent) ProtoMessage() {}
func (x *SelectedListContent) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 SelectedListContent.ProtoReflect.Descriptor instead.
func (*SelectedListContent) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{21}
}
func (x *SelectedListContent) GetRevision() []byte {
if x != nil {
return x.Revision
}
return nil
}
func (x *SelectedListContent) GetLength() int32 {
if x != nil && x.Length != nil {
return *x.Length
}
return 0
}
func (x *SelectedListContent) GetAttributes() *ListAttributes {
if x != nil {
return x.Attributes
}
return nil
}
func (x *SelectedListContent) GetContents() *ListItems {
if x != nil {
return x.Contents
}
return nil
}
func (x *SelectedListContent) GetDiff() *Diff {
if x != nil {
return x.Diff
}
return nil
}
func (x *SelectedListContent) GetSyncResult() *Diff {
if x != nil {
return x.SyncResult
}
return nil
}
func (x *SelectedListContent) GetResultingRevisions() [][]byte {
if x != nil {
return x.ResultingRevisions
}
return nil
}
func (x *SelectedListContent) GetMultipleHeads() bool {
if x != nil && x.MultipleHeads != nil {
return *x.MultipleHeads
}
return false
}
func (x *SelectedListContent) GetUpToDate() bool {
if x != nil && x.UpToDate != nil {
return *x.UpToDate
}
return false
}
func (x *SelectedListContent) GetNonces() []int64 {
if x != nil {
return x.Nonces
}
return nil
}
func (x *SelectedListContent) GetTimestamp() int64 {
if x != nil && x.Timestamp != nil {
return *x.Timestamp
}
return 0
}
func (x *SelectedListContent) GetOwnerUsername() string {
if x != nil && x.OwnerUsername != nil {
return *x.OwnerUsername
}
return ""
}
func (x *SelectedListContent) GetAbuseReportingEnabled() bool {
if x != nil && x.AbuseReportingEnabled != nil {
return *x.AbuseReportingEnabled
}
return false
}
func (x *SelectedListContent) GetCapabilities() *Capabilities {
if x != nil {
return x.Capabilities
}
return nil
}
func (x *SelectedListContent) GetGeoblock() []GeoblockBlockingType {
if x != nil {
return x.Geoblock
}
return nil
}
type CreateListReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uri *string `protobuf:"bytes,1,req,name=uri" json:"uri,omitempty"`
Revision []byte `protobuf:"bytes,2,opt,name=revision" json:"revision,omitempty"`
}
func (x *CreateListReply) Reset() {
*x = CreateListReply{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateListReply) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateListReply) ProtoMessage() {}
func (x *CreateListReply) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_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 CreateListReply.ProtoReflect.Descriptor instead.
func (*CreateListReply) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{22}
}
func (x *CreateListReply) GetUri() string {
if x != nil && x.Uri != nil {
return *x.Uri
}
return ""
}
func (x *CreateListReply) GetRevision() []byte {
if x != nil {
return x.Revision
}
return nil
}
type PlaylistV1UriRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
V2Uris []string `protobuf:"bytes,1,rep,name=v2_uris,json=v2Uris" json:"v2_uris,omitempty"`
}
func (x *PlaylistV1UriRequest) Reset() {
*x = PlaylistV1UriRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlaylistV1UriRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlaylistV1UriRequest) ProtoMessage() {}
func (x *PlaylistV1UriRequest) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[23]
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 PlaylistV1UriRequest.ProtoReflect.Descriptor instead.
func (*PlaylistV1UriRequest) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{23}
}
func (x *PlaylistV1UriRequest) GetV2Uris() []string {
if x != nil {
return x.V2Uris
}
return nil
}
type PlaylistV1UriReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
V2UriToV1Uri map[string]string `protobuf:"bytes,1,rep,name=v2_uri_to_v1_uri,json=v2UriToV1Uri" json:"v2_uri_to_v1_uri,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (x *PlaylistV1UriReply) Reset() {
*x = PlaylistV1UriReply{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlaylistV1UriReply) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlaylistV1UriReply) ProtoMessage() {}
func (x *PlaylistV1UriReply) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[24]
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 PlaylistV1UriReply.ProtoReflect.Descriptor instead.
func (*PlaylistV1UriReply) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{24}
}
func (x *PlaylistV1UriReply) GetV2UriToV1Uri() map[string]string {
if x != nil {
return x.V2UriToV1Uri
}
return nil
}
type ListUpdateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
BaseRevision []byte `protobuf:"bytes,1,opt,name=base_revision,json=baseRevision" json:"base_revision,omitempty"`
Attributes *ListAttributes `protobuf:"bytes,2,opt,name=attributes" json:"attributes,omitempty"`
Items []*Item `protobuf:"bytes,3,rep,name=items" json:"items,omitempty"`
Info *ChangeInfo `protobuf:"bytes,4,opt,name=info" json:"info,omitempty"`
}
func (x *ListUpdateRequest) Reset() {
*x = ListUpdateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListUpdateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListUpdateRequest) ProtoMessage() {}
func (x *ListUpdateRequest) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[25]
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 ListUpdateRequest.ProtoReflect.Descriptor instead.
func (*ListUpdateRequest) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{25}
}
func (x *ListUpdateRequest) GetBaseRevision() []byte {
if x != nil {
return x.BaseRevision
}
return nil
}
func (x *ListUpdateRequest) GetAttributes() *ListAttributes {
if x != nil {
return x.Attributes
}
return nil
}
func (x *ListUpdateRequest) GetItems() []*Item {
if x != nil {
return x.Items
}
return nil
}
func (x *ListUpdateRequest) GetInfo() *ChangeInfo {
if x != nil {
return x.Info
}
return nil
}
type RegisterPlaylistImageRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UploadToken *string `protobuf:"bytes,1,opt,name=upload_token,json=uploadToken" json:"upload_token,omitempty"`
}
func (x *RegisterPlaylistImageRequest) Reset() {
*x = RegisterPlaylistImageRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RegisterPlaylistImageRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RegisterPlaylistImageRequest) ProtoMessage() {}
func (x *RegisterPlaylistImageRequest) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[26]
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 RegisterPlaylistImageRequest.ProtoReflect.Descriptor instead.
func (*RegisterPlaylistImageRequest) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{26}
}
func (x *RegisterPlaylistImageRequest) GetUploadToken() string {
if x != nil && x.UploadToken != nil {
return *x.UploadToken
}
return ""
}
type RegisterPlaylistImageResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Picture []byte `protobuf:"bytes,1,opt,name=picture" json:"picture,omitempty"`
}
func (x *RegisterPlaylistImageResponse) Reset() {
*x = RegisterPlaylistImageResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RegisterPlaylistImageResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RegisterPlaylistImageResponse) ProtoMessage() {}
func (x *RegisterPlaylistImageResponse) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[27]
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 RegisterPlaylistImageResponse.ProtoReflect.Descriptor instead.
func (*RegisterPlaylistImageResponse) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{27}
}
func (x *RegisterPlaylistImageResponse) GetPicture() []byte {
if x != nil {
return x.Picture
}
return nil
}
type ResolvedPersonalizedPlaylist struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uri *string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
Tag *string `protobuf:"bytes,2,opt,name=tag" json:"tag,omitempty"`
}
func (x *ResolvedPersonalizedPlaylist) Reset() {
*x = ResolvedPersonalizedPlaylist{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ResolvedPersonalizedPlaylist) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ResolvedPersonalizedPlaylist) ProtoMessage() {}
func (x *ResolvedPersonalizedPlaylist) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[28]
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 ResolvedPersonalizedPlaylist.ProtoReflect.Descriptor instead.
func (*ResolvedPersonalizedPlaylist) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{28}
}
func (x *ResolvedPersonalizedPlaylist) GetUri() string {
if x != nil && x.Uri != nil {
return *x.Uri
}
return ""
}
func (x *ResolvedPersonalizedPlaylist) GetTag() string {
if x != nil && x.Tag != nil {
return *x.Tag
}
return ""
}
type PlaylistUriResolverResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ResolvedPlaylists []*ResolvedPersonalizedPlaylist `protobuf:"bytes,1,rep,name=resolved_playlists,json=resolvedPlaylists" json:"resolved_playlists,omitempty"`
}
func (x *PlaylistUriResolverResponse) Reset() {
*x = PlaylistUriResolverResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlaylistUriResolverResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlaylistUriResolverResponse) ProtoMessage() {}
func (x *PlaylistUriResolverResponse) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[29]
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 PlaylistUriResolverResponse.ProtoReflect.Descriptor instead.
func (*PlaylistUriResolverResponse) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{29}
}
func (x *PlaylistUriResolverResponse) GetResolvedPlaylists() []*ResolvedPersonalizedPlaylist {
if x != nil {
return x.ResolvedPlaylists
}
return nil
}
type SubscribeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uris [][]byte `protobuf:"bytes,1,rep,name=uris" json:"uris,omitempty"`
}
func (x *SubscribeRequest) Reset() {
*x = SubscribeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SubscribeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SubscribeRequest) ProtoMessage() {}
func (x *SubscribeRequest) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[30]
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 SubscribeRequest.ProtoReflect.Descriptor instead.
func (*SubscribeRequest) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{30}
}
func (x *SubscribeRequest) GetUris() [][]byte {
if x != nil {
return x.Uris
}
return nil
}
type UnsubscribeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uris [][]byte `protobuf:"bytes,1,rep,name=uris" json:"uris,omitempty"`
}
func (x *UnsubscribeRequest) Reset() {
*x = UnsubscribeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UnsubscribeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnsubscribeRequest) ProtoMessage() {}
func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[31]
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 UnsubscribeRequest.ProtoReflect.Descriptor instead.
func (*UnsubscribeRequest) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{31}
}
func (x *UnsubscribeRequest) GetUris() [][]byte {
if x != nil {
return x.Uris
}
return nil
}
type PlaylistModificationInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uri []byte `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
NewRevision []byte `protobuf:"bytes,2,opt,name=new_revision,json=newRevision" json:"new_revision,omitempty"`
ParentRevision []byte `protobuf:"bytes,3,opt,name=parent_revision,json=parentRevision" json:"parent_revision,omitempty"`
Ops []*Op `protobuf:"bytes,4,rep,name=ops" json:"ops,omitempty"`
}
func (x *PlaylistModificationInfo) Reset() {
*x = PlaylistModificationInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlaylistModificationInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlaylistModificationInfo) ProtoMessage() {}
func (x *PlaylistModificationInfo) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[32]
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 PlaylistModificationInfo.ProtoReflect.Descriptor instead.
func (*PlaylistModificationInfo) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{32}
}
func (x *PlaylistModificationInfo) GetUri() []byte {
if x != nil {
return x.Uri
}
return nil
}
func (x *PlaylistModificationInfo) GetNewRevision() []byte {
if x != nil {
return x.NewRevision
}
return nil
}
func (x *PlaylistModificationInfo) GetParentRevision() []byte {
if x != nil {
return x.ParentRevision
}
return nil
}
func (x *PlaylistModificationInfo) GetOps() []*Op {
if x != nil {
return x.Ops
}
return nil
}
type RootlistModificationInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
NewRevision []byte `protobuf:"bytes,1,opt,name=new_revision,json=newRevision" json:"new_revision,omitempty"`
ParentRevision []byte `protobuf:"bytes,2,opt,name=parent_revision,json=parentRevision" json:"parent_revision,omitempty"`
Ops []*Op `protobuf:"bytes,3,rep,name=ops" json:"ops,omitempty"`
}
func (x *RootlistModificationInfo) Reset() {
*x = RootlistModificationInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RootlistModificationInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RootlistModificationInfo) ProtoMessage() {}
func (x *RootlistModificationInfo) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[33]
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 RootlistModificationInfo.ProtoReflect.Descriptor instead.
func (*RootlistModificationInfo) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{33}
}
func (x *RootlistModificationInfo) GetNewRevision() []byte {
if x != nil {
return x.NewRevision
}
return nil
}
func (x *RootlistModificationInfo) GetParentRevision() []byte {
if x != nil {
return x.ParentRevision
}
return nil
}
func (x *RootlistModificationInfo) GetOps() []*Op {
if x != nil {
return x.Ops
}
return nil
}
type FollowerUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uri *string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
Username *string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"`
IsFollowing *bool `protobuf:"varint,3,opt,name=is_following,json=isFollowing" json:"is_following,omitempty"`
Timestamp *uint64 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"`
}
func (x *FollowerUpdate) Reset() {
*x = FollowerUpdate{}
if protoimpl.UnsafeEnabled {
mi := &file_playlist4_external_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FollowerUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FollowerUpdate) ProtoMessage() {}
func (x *FollowerUpdate) ProtoReflect() protoreflect.Message {
mi := &file_playlist4_external_proto_msgTypes[34]
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 FollowerUpdate.ProtoReflect.Descriptor instead.
func (*FollowerUpdate) Descriptor() ([]byte, []int) {
return file_playlist4_external_proto_rawDescGZIP(), []int{34}
}
func (x *FollowerUpdate) GetUri() string {
if x != nil && x.Uri != nil {
return *x.Uri
}
return ""
}
func (x *FollowerUpdate) GetUsername() string {
if x != nil && x.Username != nil {
return *x.Username
}
return ""
}
func (x *FollowerUpdate) GetIsFollowing() bool {
if x != nil && x.IsFollowing != nil {
return *x.IsFollowing
}
return false
}
func (x *FollowerUpdate) GetTimestamp() uint64 {
if x != nil && x.Timestamp != nil {
return *x.Timestamp
}
return 0
}
var File_playlist4_external_proto protoreflect.FileDescriptor
var file_playlist4_external_proto_rawDesc = []byte{
0x0a, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x5f, 0x65, 0x78, 0x74, 0x65,
0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x65,
0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61,
0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20,
0x02, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x22, 0xd9, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a,
0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73,
0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x77, 0x6e,
0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x36, 0x0a, 0x17, 0x61, 0x62, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
0x08, 0x52, 0x15, 0x61, 0x62, 0x75, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61,
0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73,
0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52,
0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xb2, 0x01,
0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x12, 0x1c, 0x0a,
0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08,
0x52, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x69,
0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
0x12, 0x40, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70,
0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d,
0x65, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x22, 0x3d, 0x0a, 0x13, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x22, 0x40, 0x0a, 0x0b, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7a, 0x65,
0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x72, 0x6c, 0x22, 0xaa, 0x03, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07,
0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70,
0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62,
0x6f, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63,
0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
0x70, 0x6c, 0x33, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x70, 0x6c, 0x33, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a,
0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6f, 0x77, 0x6e, 0x65,
0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
0x42, 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x59, 0x0a, 0x11,
0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x70, 0x69, 0x63, 0x74, 0x75,
0x72, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74,
0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53,
0x69, 0x7a, 0x65, 0x52, 0x0b, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x69, 0x7a, 0x65,
0x22, 0xee, 0x01, 0x0a, 0x0e, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1c,
0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x17, 0x0a, 0x07,
0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x59, 0x0a,
0x11, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x41, 0x74,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d,
0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49,
0x64, 0x22, 0x91, 0x01, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f,
0x6d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x19, 0x0a,
0x08, 0x61, 0x64, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
0x07, 0x61, 0x64, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x5f,
0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x64, 0x64,
0x46, 0x69, 0x72, 0x73, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x03, 0x52, 0x65, 0x6d, 0x12, 0x1d, 0x0a,
0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06,
0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65,
0x6e, 0x67, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c,
0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74,
0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x74, 0x65,
0x6d, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0a, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x41, 0x73, 0x4b, 0x65, 0x79, 0x22, 0x57, 0x0a, 0x03, 0x4d,
0x6f, 0x76, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x02, 0x28,
0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x5f,
0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x07, 0x74, 0x6f, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x22, 0xa4, 0x01, 0x0a, 0x1a, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74,
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20,
0x02, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c,
0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74,
0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x69,
0x6e, 0x64, 0x52, 0x07, 0x6e, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1a,
0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x61,
0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x6e,
0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74,
0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x07, 0x6e, 0x6f, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65,
0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x12, 0x5a, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d,
0x6e, 0x65, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a,
0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x61,
0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x41,
0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x14, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
0x0d, 0x6e, 0x65, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5a,
0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x50,
0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x6f, 0x6c, 0x64,
0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x81, 0x04, 0x0a, 0x02, 0x4f,
0x70, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32,
0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69,
0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x2e, 0x4b, 0x69, 0x6e,
0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70,
0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41,
0x64, 0x64, 0x52, 0x03, 0x61, 0x64, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x72, 0x65, 0x6d, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70,
0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52,
0x65, 0x6d, 0x52, 0x03, 0x72, 0x65, 0x6d, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x6f, 0x76, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70,
0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d,
0x6f, 0x76, 0x52, 0x03, 0x6d, 0x6f, 0x76, 0x12, 0x63, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74,
0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x16,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73,
0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x14, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x22, 0x6b, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e,
0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41,
0x44, 0x44, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x45, 0x4d, 0x10, 0x03, 0x12, 0x07, 0x0a,
0x03, 0x4d, 0x4f, 0x56, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53,
0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x53,
0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x06, 0x22, 0x37,
0x0a, 0x06, 0x4f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x12,
0x0a, 0x04, 0x75, 0x6e, 0x64, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x75, 0x6e,
0x64, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x64, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
0x52, 0x04, 0x72, 0x65, 0x64, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09,
0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70,
0x6c, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x70,
0x6c, 0x69, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x22, 0x86, 0x02, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79,
0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x06, 0x43, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e,
0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x41, 0x54, 0x49, 0x56,
0x45, 0x5f, 0x48, 0x45, 0x52, 0x4d, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c,
0x49, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x59, 0x54, 0x48, 0x4f, 0x4e,
0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x41, 0x56, 0x41, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09,
0x57, 0x45, 0x42, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x4c,
0x49, 0x42, 0x53, 0x50, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x06, 0x22, 0x92, 0x01, 0x0a, 0x05,
0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x61, 0x73,
0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
0x22, 0x7b, 0x0a, 0x04, 0x44, 0x69, 0x66, 0x66, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d,
0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52,
0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a,
0x03, 0x6f, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x12, 0x1f, 0x0a, 0x0b,
0x74, 0x6f, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x02, 0x28,
0x0c, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe6, 0x01,
0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a,
0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61,
0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c,
0x74, 0x61, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x77, 0x61,
0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x77, 0x61,
0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x79, 0x6e,
0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
0x77, 0x61, 0x6e, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16,
0x0a, 0x06, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06,
0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xf0, 0x05, 0x0a, 0x13, 0x53, 0x65, 0x6c, 0x65, 0x63,
0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a,
0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65,
0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67,
0x74, 0x68, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52,
0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x63,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74,
0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x64,
0x69, 0x66, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x12, 0x3e,
0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c,
0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x69,
0x66, 0x66, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2f,
0x0a, 0x13, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x12, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64,
0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c,
0x65, 0x48, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x0a, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x5f,
0x64, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x75, 0x70, 0x54, 0x6f,
0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0e,
0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x77,
0x6e, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x62, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72,
0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01,
0x28, 0x08, 0x52, 0x15, 0x61, 0x62, 0x75, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69,
0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0c, 0x63, 0x61, 0x70,
0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x2f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69,
0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x49,
0x0a, 0x08, 0x67, 0x65, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x2d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c,
0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6f, 0x62, 0x6c,
0x6f, 0x63, 0x6b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52,
0x08, 0x67, 0x65, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3f, 0x0a, 0x0f, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1a,
0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x14, 0x50, 0x6c,
0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x31, 0x55, 0x72, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x32, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x32, 0x55, 0x72, 0x69, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x12,
0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x31, 0x55, 0x72, 0x69, 0x52, 0x65, 0x70,
0x6c, 0x79, 0x12, 0x65, 0x0a, 0x10, 0x76, 0x32, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x74, 0x6f, 0x5f,
0x76, 0x31, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x56,
0x31, 0x55, 0x72, 0x69, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x56, 0x32, 0x55, 0x72, 0x69, 0x54,
0x6f, 0x56, 0x31, 0x55, 0x72, 0x69, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x76, 0x32, 0x55,
0x72, 0x69, 0x54, 0x6f, 0x56, 0x31, 0x55, 0x72, 0x69, 0x1a, 0x3f, 0x0a, 0x11, 0x56, 0x32, 0x55,
0x72, 0x69, 0x54, 0x6f, 0x56, 0x31, 0x55, 0x72, 0x69, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x01, 0x0a, 0x11, 0x4c,
0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x33,
0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74,
0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74,
0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79,
0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x41, 0x0a, 0x1c,
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c,
0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
0x39, 0x0a, 0x1d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x6c,
0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x42, 0x0a, 0x1c, 0x52, 0x65,
0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a,
0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x10, 0x0a, 0x03,
0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x83,
0x01, 0x0a, 0x1b, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x55, 0x72, 0x69, 0x52, 0x65,
0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64,
0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x6c,
0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x70, 0x6f,
0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72,
0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73,
0x74, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x6c,
0x69, 0x73, 0x74, 0x73, 0x22, 0x26, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x69, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x22, 0x28, 0x0a, 0x12,
0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x69, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c,
0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x50, 0x6c, 0x61, 0x79, 0x6c,
0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x76,
0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x65, 0x77,
0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73,
0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73,
0x22, 0x95, 0x01, 0x0a, 0x18, 0x52, 0x6f, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a,
0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e,
0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6f, 0x70, 0x73,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x4f, 0x70, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x22, 0x7f, 0x0a, 0x0e, 0x46, 0x6f, 0x6c, 0x6c,
0x6f, 0x77, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1a, 0x0a, 0x08,
0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x66,
0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
0x69, 0x73, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2a, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x69,
0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12,
0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x01,
0x12, 0x14, 0x0a, 0x10, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50,
0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x50,
0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x53, 0x54,
0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x04,
0x12, 0x14, 0x0a, 0x10, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x50, 0x4c, 0x33, 0x5f, 0x56, 0x45, 0x52,
0x53, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x44,
0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10,
0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
0x5f, 0x49, 0x44, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x46, 0x4f,
0x52, 0x4d, 0x41, 0x54, 0x10, 0x0b, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x46,
0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53,
0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x50, 0x49, 0x43, 0x54, 0x55,
0x52, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x0d, 0x2a, 0x98, 0x01, 0x0a, 0x11, 0x49, 0x74,
0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12,
0x10, 0x0a, 0x0c, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
0x00, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x5f,
0x42, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x49, 0x4d,
0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x54, 0x45, 0x4d,
0x5f, 0x53, 0x45, 0x45, 0x4e, 0x5f, 0x41, 0x54, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x54,
0x45, 0x4d, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x49,
0x54, 0x45, 0x4d, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49,
0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x54, 0x45, 0x4d, 0x5f,
0x49, 0x44, 0x10, 0x0c, 0x2a, 0xaa, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x6f, 0x62, 0x6c, 0x6f, 0x63,
0x6b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a,
0x22, 0x47, 0x45, 0x4f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x49,
0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x45, 0x4f, 0x42, 0x4c, 0x4f, 0x43,
0x4b, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x47, 0x45, 0x4f, 0x42, 0x4c,
0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50,
0x45, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12,
0x20, 0x0a, 0x1c, 0x47, 0x45, 0x4f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x42, 0x4c, 0x4f, 0x43,
0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10,
0x03, 0x42, 0x55, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x70, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x42, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x34, 0x41, 0x70, 0x69, 0x50, 0x72,
0x6f, 0x74, 0x6f, 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_playlist4_external_proto_rawDescOnce sync.Once
file_playlist4_external_proto_rawDescData = file_playlist4_external_proto_rawDesc
)
func file_playlist4_external_proto_rawDescGZIP() []byte {
file_playlist4_external_proto_rawDescOnce.Do(func() {
file_playlist4_external_proto_rawDescData = protoimpl.X.CompressGZIP(file_playlist4_external_proto_rawDescData)
})
return file_playlist4_external_proto_rawDescData
}
var file_playlist4_external_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_playlist4_external_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
var file_playlist4_external_proto_goTypes = []interface{}{
(ListAttributeKind)(0), // 0: spotify.playlist4.proto.ListAttributeKind
(ItemAttributeKind)(0), // 1: spotify.playlist4.proto.ItemAttributeKind
(GeoblockBlockingType)(0), // 2: spotify.playlist4.proto.GeoblockBlockingType
(Op_Kind)(0), // 3: spotify.playlist4.proto.Op.Kind
(SourceInfo_Client)(0), // 4: spotify.playlist4.proto.SourceInfo.Client
(*Item)(nil), // 5: spotify.playlist4.proto.Item
(*MetaItem)(nil), // 6: spotify.playlist4.proto.MetaItem
(*ListItems)(nil), // 7: spotify.playlist4.proto.ListItems
(*FormatListAttribute)(nil), // 8: spotify.playlist4.proto.FormatListAttribute
(*PictureSize)(nil), // 9: spotify.playlist4.proto.PictureSize
(*ListAttributes)(nil), // 10: spotify.playlist4.proto.ListAttributes
(*ItemAttributes)(nil), // 11: spotify.playlist4.proto.ItemAttributes
(*Add)(nil), // 12: spotify.playlist4.proto.Add
(*Rem)(nil), // 13: spotify.playlist4.proto.Rem
(*Mov)(nil), // 14: spotify.playlist4.proto.Mov
(*ItemAttributesPartialState)(nil), // 15: spotify.playlist4.proto.ItemAttributesPartialState
(*ListAttributesPartialState)(nil), // 16: spotify.playlist4.proto.ListAttributesPartialState
(*UpdateItemAttributes)(nil), // 17: spotify.playlist4.proto.UpdateItemAttributes
(*UpdateListAttributes)(nil), // 18: spotify.playlist4.proto.UpdateListAttributes
(*Op)(nil), // 19: spotify.playlist4.proto.Op
(*OpList)(nil), // 20: spotify.playlist4.proto.OpList
(*ChangeInfo)(nil), // 21: spotify.playlist4.proto.ChangeInfo
(*SourceInfo)(nil), // 22: spotify.playlist4.proto.SourceInfo
(*Delta)(nil), // 23: spotify.playlist4.proto.Delta
(*Diff)(nil), // 24: spotify.playlist4.proto.Diff
(*ListChanges)(nil), // 25: spotify.playlist4.proto.ListChanges
(*SelectedListContent)(nil), // 26: spotify.playlist4.proto.SelectedListContent
(*CreateListReply)(nil), // 27: spotify.playlist4.proto.CreateListReply
(*PlaylistV1UriRequest)(nil), // 28: spotify.playlist4.proto.PlaylistV1UriRequest
(*PlaylistV1UriReply)(nil), // 29: spotify.playlist4.proto.PlaylistV1UriReply
(*ListUpdateRequest)(nil), // 30: spotify.playlist4.proto.ListUpdateRequest
(*RegisterPlaylistImageRequest)(nil), // 31: spotify.playlist4.proto.RegisterPlaylistImageRequest
(*RegisterPlaylistImageResponse)(nil), // 32: spotify.playlist4.proto.RegisterPlaylistImageResponse
(*ResolvedPersonalizedPlaylist)(nil), // 33: spotify.playlist4.proto.ResolvedPersonalizedPlaylist
(*PlaylistUriResolverResponse)(nil), // 34: spotify.playlist4.proto.PlaylistUriResolverResponse
(*SubscribeRequest)(nil), // 35: spotify.playlist4.proto.SubscribeRequest
(*UnsubscribeRequest)(nil), // 36: spotify.playlist4.proto.UnsubscribeRequest
(*PlaylistModificationInfo)(nil), // 37: spotify.playlist4.proto.PlaylistModificationInfo
(*RootlistModificationInfo)(nil), // 38: spotify.playlist4.proto.RootlistModificationInfo
(*FollowerUpdate)(nil), // 39: spotify.playlist4.proto.FollowerUpdate
nil, // 40: spotify.playlist4.proto.PlaylistV1UriReply.V2UriToV1UriEntry
(*Capabilities)(nil), // 41: spotify.playlist_permission.proto.Capabilities
}
var file_playlist4_external_proto_depIdxs = []int32{
11, // 0: spotify.playlist4.proto.Item.attributes:type_name -> spotify.playlist4.proto.ItemAttributes
10, // 1: spotify.playlist4.proto.MetaItem.attributes:type_name -> spotify.playlist4.proto.ListAttributes
41, // 2: spotify.playlist4.proto.MetaItem.capabilities:type_name -> spotify.playlist_permission.proto.Capabilities
5, // 3: spotify.playlist4.proto.ListItems.items:type_name -> spotify.playlist4.proto.Item
6, // 4: spotify.playlist4.proto.ListItems.meta_items:type_name -> spotify.playlist4.proto.MetaItem
8, // 5: spotify.playlist4.proto.ListAttributes.format_attributes:type_name -> spotify.playlist4.proto.FormatListAttribute
9, // 6: spotify.playlist4.proto.ListAttributes.picture_size:type_name -> spotify.playlist4.proto.PictureSize
8, // 7: spotify.playlist4.proto.ItemAttributes.format_attributes:type_name -> spotify.playlist4.proto.FormatListAttribute
5, // 8: spotify.playlist4.proto.Add.items:type_name -> spotify.playlist4.proto.Item
5, // 9: spotify.playlist4.proto.Rem.items:type_name -> spotify.playlist4.proto.Item
11, // 10: spotify.playlist4.proto.ItemAttributesPartialState.values:type_name -> spotify.playlist4.proto.ItemAttributes
1, // 11: spotify.playlist4.proto.ItemAttributesPartialState.no_value:type_name -> spotify.playlist4.proto.ItemAttributeKind
10, // 12: spotify.playlist4.proto.ListAttributesPartialState.values:type_name -> spotify.playlist4.proto.ListAttributes
0, // 13: spotify.playlist4.proto.ListAttributesPartialState.no_value:type_name -> spotify.playlist4.proto.ListAttributeKind
15, // 14: spotify.playlist4.proto.UpdateItemAttributes.new_attributes:type_name -> spotify.playlist4.proto.ItemAttributesPartialState
15, // 15: spotify.playlist4.proto.UpdateItemAttributes.old_attributes:type_name -> spotify.playlist4.proto.ItemAttributesPartialState
16, // 16: spotify.playlist4.proto.UpdateListAttributes.new_attributes:type_name -> spotify.playlist4.proto.ListAttributesPartialState
16, // 17: spotify.playlist4.proto.UpdateListAttributes.old_attributes:type_name -> spotify.playlist4.proto.ListAttributesPartialState
3, // 18: spotify.playlist4.proto.Op.kind:type_name -> spotify.playlist4.proto.Op.Kind
12, // 19: spotify.playlist4.proto.Op.add:type_name -> spotify.playlist4.proto.Add
13, // 20: spotify.playlist4.proto.Op.rem:type_name -> spotify.playlist4.proto.Rem
14, // 21: spotify.playlist4.proto.Op.mov:type_name -> spotify.playlist4.proto.Mov
17, // 22: spotify.playlist4.proto.Op.update_item_attributes:type_name -> spotify.playlist4.proto.UpdateItemAttributes
18, // 23: spotify.playlist4.proto.Op.update_list_attributes:type_name -> spotify.playlist4.proto.UpdateListAttributes
19, // 24: spotify.playlist4.proto.OpList.ops:type_name -> spotify.playlist4.proto.Op
22, // 25: spotify.playlist4.proto.ChangeInfo.source:type_name -> spotify.playlist4.proto.SourceInfo
4, // 26: spotify.playlist4.proto.SourceInfo.client:type_name -> spotify.playlist4.proto.SourceInfo.Client
19, // 27: spotify.playlist4.proto.Delta.ops:type_name -> spotify.playlist4.proto.Op
21, // 28: spotify.playlist4.proto.Delta.info:type_name -> spotify.playlist4.proto.ChangeInfo
19, // 29: spotify.playlist4.proto.Diff.ops:type_name -> spotify.playlist4.proto.Op
23, // 30: spotify.playlist4.proto.ListChanges.deltas:type_name -> spotify.playlist4.proto.Delta
10, // 31: spotify.playlist4.proto.SelectedListContent.attributes:type_name -> spotify.playlist4.proto.ListAttributes
7, // 32: spotify.playlist4.proto.SelectedListContent.contents:type_name -> spotify.playlist4.proto.ListItems
24, // 33: spotify.playlist4.proto.SelectedListContent.diff:type_name -> spotify.playlist4.proto.Diff
24, // 34: spotify.playlist4.proto.SelectedListContent.sync_result:type_name -> spotify.playlist4.proto.Diff
41, // 35: spotify.playlist4.proto.SelectedListContent.capabilities:type_name -> spotify.playlist_permission.proto.Capabilities
2, // 36: spotify.playlist4.proto.SelectedListContent.geoblock:type_name -> spotify.playlist4.proto.GeoblockBlockingType
40, // 37: spotify.playlist4.proto.PlaylistV1UriReply.v2_uri_to_v1_uri:type_name -> spotify.playlist4.proto.PlaylistV1UriReply.V2UriToV1UriEntry
10, // 38: spotify.playlist4.proto.ListUpdateRequest.attributes:type_name -> spotify.playlist4.proto.ListAttributes
5, // 39: spotify.playlist4.proto.ListUpdateRequest.items:type_name -> spotify.playlist4.proto.Item
21, // 40: spotify.playlist4.proto.ListUpdateRequest.info:type_name -> spotify.playlist4.proto.ChangeInfo
33, // 41: spotify.playlist4.proto.PlaylistUriResolverResponse.resolved_playlists:type_name -> spotify.playlist4.proto.ResolvedPersonalizedPlaylist
19, // 42: spotify.playlist4.proto.PlaylistModificationInfo.ops:type_name -> spotify.playlist4.proto.Op
19, // 43: spotify.playlist4.proto.RootlistModificationInfo.ops:type_name -> spotify.playlist4.proto.Op
44, // [44:44] is the sub-list for method output_type
44, // [44:44] is the sub-list for method input_type
44, // [44:44] is the sub-list for extension type_name
44, // [44:44] is the sub-list for extension extendee
0, // [0:44] is the sub-list for field type_name
}
func init() { file_playlist4_external_proto_init() }
func file_playlist4_external_proto_init() {
if File_playlist4_external_proto != nil {
return
}
file_playlist_permission_proto_init()
if !protoimpl.UnsafeEnabled {
file_playlist4_external_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Item); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MetaItem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListItems); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FormatListAttribute); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PictureSize); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAttributes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ItemAttributes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Add); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Rem); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Mov); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ItemAttributesPartialState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListAttributesPartialState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateItemAttributes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateListAttributes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Op); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*OpList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChangeInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SourceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Delta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Diff); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListChanges); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SelectedListContent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateListReply); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlaylistV1UriRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlaylistV1UriReply); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListUpdateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisterPlaylistImageRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisterPlaylistImageResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResolvedPersonalizedPlaylist); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlaylistUriResolverResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SubscribeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UnsubscribeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlaylistModificationInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RootlistModificationInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_playlist4_external_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FollowerUpdate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_playlist4_external_proto_rawDesc,
NumEnums: 5,
NumMessages: 36,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_playlist4_external_proto_goTypes,
DependencyIndexes: file_playlist4_external_proto_depIdxs,
EnumInfos: file_playlist4_external_proto_enumTypes,
MessageInfos: file_playlist4_external_proto_msgTypes,
}.Build()
File_playlist4_external_proto = out.File
file_playlist4_external_proto_rawDesc = nil
file_playlist4_external_proto_goTypes = nil
file_playlist4_external_proto_depIdxs = nil
}