// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.21.12 // source: spotify/clienttoken/v0/clienttoken_http.proto package clienttoken_http import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" proto "tuxpa.in/a/goplayd/lib/spot/proto" ) 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 ClientTokenRequestType int32 const ( ClientTokenRequestType_REQUEST_UNKNOWN ClientTokenRequestType = 0 ClientTokenRequestType_REQUEST_CLIENT_DATA_REQUEST ClientTokenRequestType = 1 ClientTokenRequestType_REQUEST_CHALLENGE_ANSWERS_REQUEST ClientTokenRequestType = 2 ) // Enum value maps for ClientTokenRequestType. var ( ClientTokenRequestType_name = map[int32]string{ 0: "REQUEST_UNKNOWN", 1: "REQUEST_CLIENT_DATA_REQUEST", 2: "REQUEST_CHALLENGE_ANSWERS_REQUEST", } ClientTokenRequestType_value = map[string]int32{ "REQUEST_UNKNOWN": 0, "REQUEST_CLIENT_DATA_REQUEST": 1, "REQUEST_CHALLENGE_ANSWERS_REQUEST": 2, } ) func (x ClientTokenRequestType) Enum() *ClientTokenRequestType { p := new(ClientTokenRequestType) *p = x return p } func (x ClientTokenRequestType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ClientTokenRequestType) Descriptor() protoreflect.EnumDescriptor { return file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[0].Descriptor() } func (ClientTokenRequestType) Type() protoreflect.EnumType { return &file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[0] } func (x ClientTokenRequestType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ClientTokenRequestType.Descriptor instead. func (ClientTokenRequestType) EnumDescriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{0} } type ClientTokenResponseType int32 const ( ClientTokenResponseType_RESPONSE_UNKNOWN ClientTokenResponseType = 0 ClientTokenResponseType_RESPONSE_GRANTED_TOKEN_RESPONSE ClientTokenResponseType = 1 ClientTokenResponseType_RESPONSE_CHALLENGES_RESPONSE ClientTokenResponseType = 2 ) // Enum value maps for ClientTokenResponseType. var ( ClientTokenResponseType_name = map[int32]string{ 0: "RESPONSE_UNKNOWN", 1: "RESPONSE_GRANTED_TOKEN_RESPONSE", 2: "RESPONSE_CHALLENGES_RESPONSE", } ClientTokenResponseType_value = map[string]int32{ "RESPONSE_UNKNOWN": 0, "RESPONSE_GRANTED_TOKEN_RESPONSE": 1, "RESPONSE_CHALLENGES_RESPONSE": 2, } ) func (x ClientTokenResponseType) Enum() *ClientTokenResponseType { p := new(ClientTokenResponseType) *p = x return p } func (x ClientTokenResponseType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ClientTokenResponseType) Descriptor() protoreflect.EnumDescriptor { return file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[1].Descriptor() } func (ClientTokenResponseType) Type() protoreflect.EnumType { return &file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[1] } func (x ClientTokenResponseType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ClientTokenResponseType.Descriptor instead. func (ClientTokenResponseType) EnumDescriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{1} } type ChallengeType int32 const ( ChallengeType_CHALLENGE_UNKNOWN ChallengeType = 0 ChallengeType_CHALLENGE_CLIENT_SECRET_HMAC ChallengeType = 1 ChallengeType_CHALLENGE_EVALUATE_JS ChallengeType = 2 ChallengeType_CHALLENGE_HASH_CASH ChallengeType = 3 ) // Enum value maps for ChallengeType. var ( ChallengeType_name = map[int32]string{ 0: "CHALLENGE_UNKNOWN", 1: "CHALLENGE_CLIENT_SECRET_HMAC", 2: "CHALLENGE_EVALUATE_JS", 3: "CHALLENGE_HASH_CASH", } ChallengeType_value = map[string]int32{ "CHALLENGE_UNKNOWN": 0, "CHALLENGE_CLIENT_SECRET_HMAC": 1, "CHALLENGE_EVALUATE_JS": 2, "CHALLENGE_HASH_CASH": 3, } ) func (x ChallengeType) Enum() *ChallengeType { p := new(ChallengeType) *p = x return p } func (x ChallengeType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ChallengeType) Descriptor() protoreflect.EnumDescriptor { return file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[2].Descriptor() } func (ChallengeType) Type() protoreflect.EnumType { return &file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes[2] } func (x ChallengeType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ChallengeType.Descriptor instead. func (ChallengeType) EnumDescriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{2} } type ClientTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RequestType ClientTokenRequestType `protobuf:"varint,1,opt,name=request_type,json=requestType,proto3,enum=spotify.clienttoken.http.v0.ClientTokenRequestType" json:"request_type,omitempty"` // Types that are assignable to Request: // // *ClientTokenRequest_ClientData // *ClientTokenRequest_ChallengeAnswers Request isClientTokenRequest_Request `protobuf_oneof:"request"` } func (x *ClientTokenRequest) Reset() { *x = ClientTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientTokenRequest) ProtoMessage() {} func (x *ClientTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientTokenRequest.ProtoReflect.Descriptor instead. func (*ClientTokenRequest) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{0} } func (x *ClientTokenRequest) GetRequestType() ClientTokenRequestType { if x != nil { return x.RequestType } return ClientTokenRequestType_REQUEST_UNKNOWN } func (m *ClientTokenRequest) GetRequest() isClientTokenRequest_Request { if m != nil { return m.Request } return nil } func (x *ClientTokenRequest) GetClientData() *ClientDataRequest { if x, ok := x.GetRequest().(*ClientTokenRequest_ClientData); ok { return x.ClientData } return nil } func (x *ClientTokenRequest) GetChallengeAnswers() *ChallengeAnswersRequest { if x, ok := x.GetRequest().(*ClientTokenRequest_ChallengeAnswers); ok { return x.ChallengeAnswers } return nil } type isClientTokenRequest_Request interface { isClientTokenRequest_Request() } type ClientTokenRequest_ClientData struct { ClientData *ClientDataRequest `protobuf:"bytes,2,opt,name=client_data,json=clientData,proto3,oneof"` } type ClientTokenRequest_ChallengeAnswers struct { ChallengeAnswers *ChallengeAnswersRequest `protobuf:"bytes,3,opt,name=challenge_answers,json=challengeAnswers,proto3,oneof"` } func (*ClientTokenRequest_ClientData) isClientTokenRequest_Request() {} func (*ClientTokenRequest_ChallengeAnswers) isClientTokenRequest_Request() {} type ClientDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ClientVersion string `protobuf:"bytes,1,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` // Types that are assignable to Data: // // *ClientDataRequest_ConnectivitySdkData Data isClientDataRequest_Data `protobuf_oneof:"data"` } func (x *ClientDataRequest) Reset() { *x = ClientDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientDataRequest) ProtoMessage() {} func (x *ClientDataRequest) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientDataRequest.ProtoReflect.Descriptor instead. func (*ClientDataRequest) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{1} } func (x *ClientDataRequest) GetClientVersion() string { if x != nil { return x.ClientVersion } return "" } func (x *ClientDataRequest) GetClientId() string { if x != nil { return x.ClientId } return "" } func (m *ClientDataRequest) GetData() isClientDataRequest_Data { if m != nil { return m.Data } return nil } func (x *ClientDataRequest) GetConnectivitySdkData() *proto.ConnectivitySdkData { if x, ok := x.GetData().(*ClientDataRequest_ConnectivitySdkData); ok { return x.ConnectivitySdkData } return nil } type isClientDataRequest_Data interface { isClientDataRequest_Data() } type ClientDataRequest_ConnectivitySdkData struct { ConnectivitySdkData *proto.ConnectivitySdkData `protobuf:"bytes,3,opt,name=connectivity_sdk_data,json=connectivitySdkData,proto3,oneof"` } func (*ClientDataRequest_ConnectivitySdkData) isClientDataRequest_Data() {} type ChallengeAnswersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` Answers []*ChallengeAnswer `protobuf:"bytes,2,rep,name=answers,proto3" json:"answers,omitempty"` } func (x *ChallengeAnswersRequest) Reset() { *x = ChallengeAnswersRequest{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChallengeAnswersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChallengeAnswersRequest) ProtoMessage() {} func (x *ChallengeAnswersRequest) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ChallengeAnswersRequest.ProtoReflect.Descriptor instead. func (*ChallengeAnswersRequest) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{2} } func (x *ChallengeAnswersRequest) GetState() string { if x != nil { return x.State } return "" } func (x *ChallengeAnswersRequest) GetAnswers() []*ChallengeAnswer { if x != nil { return x.Answers } return nil } type ClientTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ResponseType ClientTokenResponseType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=spotify.clienttoken.http.v0.ClientTokenResponseType" json:"response_type,omitempty"` // Types that are assignable to Response: // // *ClientTokenResponse_GrantedToken // *ClientTokenResponse_Challenges Response isClientTokenResponse_Response `protobuf_oneof:"response"` } func (x *ClientTokenResponse) Reset() { *x = ClientTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientTokenResponse) ProtoMessage() {} func (x *ClientTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientTokenResponse.ProtoReflect.Descriptor instead. func (*ClientTokenResponse) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{3} } func (x *ClientTokenResponse) GetResponseType() ClientTokenResponseType { if x != nil { return x.ResponseType } return ClientTokenResponseType_RESPONSE_UNKNOWN } func (m *ClientTokenResponse) GetResponse() isClientTokenResponse_Response { if m != nil { return m.Response } return nil } func (x *ClientTokenResponse) GetGrantedToken() *GrantedTokenResponse { if x, ok := x.GetResponse().(*ClientTokenResponse_GrantedToken); ok { return x.GrantedToken } return nil } func (x *ClientTokenResponse) GetChallenges() *ChallengesResponse { if x, ok := x.GetResponse().(*ClientTokenResponse_Challenges); ok { return x.Challenges } return nil } type isClientTokenResponse_Response interface { isClientTokenResponse_Response() } type ClientTokenResponse_GrantedToken struct { GrantedToken *GrantedTokenResponse `protobuf:"bytes,2,opt,name=granted_token,json=grantedToken,proto3,oneof"` } type ClientTokenResponse_Challenges struct { Challenges *ChallengesResponse `protobuf:"bytes,3,opt,name=challenges,proto3,oneof"` } func (*ClientTokenResponse_GrantedToken) isClientTokenResponse_Response() {} func (*ClientTokenResponse_Challenges) isClientTokenResponse_Response() {} type TokenDomain struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` } func (x *TokenDomain) Reset() { *x = TokenDomain{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TokenDomain) String() string { return protoimpl.X.MessageStringOf(x) } func (*TokenDomain) ProtoMessage() {} func (x *TokenDomain) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 TokenDomain.ProtoReflect.Descriptor instead. func (*TokenDomain) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{4} } func (x *TokenDomain) GetDomain() string { if x != nil { return x.Domain } return "" } type GrantedTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` ExpiresAfterSeconds int32 `protobuf:"varint,2,opt,name=expires_after_seconds,json=expiresAfterSeconds,proto3" json:"expires_after_seconds,omitempty"` RefreshAfterSeconds int32 `protobuf:"varint,3,opt,name=refresh_after_seconds,json=refreshAfterSeconds,proto3" json:"refresh_after_seconds,omitempty"` Domains []*TokenDomain `protobuf:"bytes,4,rep,name=domains,proto3" json:"domains,omitempty"` } func (x *GrantedTokenResponse) Reset() { *x = GrantedTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GrantedTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GrantedTokenResponse) ProtoMessage() {} func (x *GrantedTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 GrantedTokenResponse.ProtoReflect.Descriptor instead. func (*GrantedTokenResponse) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{5} } func (x *GrantedTokenResponse) GetToken() string { if x != nil { return x.Token } return "" } func (x *GrantedTokenResponse) GetExpiresAfterSeconds() int32 { if x != nil { return x.ExpiresAfterSeconds } return 0 } func (x *GrantedTokenResponse) GetRefreshAfterSeconds() int32 { if x != nil { return x.RefreshAfterSeconds } return 0 } func (x *GrantedTokenResponse) GetDomains() []*TokenDomain { if x != nil { return x.Domains } return nil } type ChallengesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` Challenges []*Challenge `protobuf:"bytes,2,rep,name=challenges,proto3" json:"challenges,omitempty"` } func (x *ChallengesResponse) Reset() { *x = ChallengesResponse{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChallengesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChallengesResponse) ProtoMessage() {} func (x *ChallengesResponse) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ChallengesResponse.ProtoReflect.Descriptor instead. func (*ChallengesResponse) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{6} } func (x *ChallengesResponse) GetState() string { if x != nil { return x.State } return "" } func (x *ChallengesResponse) GetChallenges() []*Challenge { if x != nil { return x.Challenges } return nil } type ClientSecretParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Salt string `protobuf:"bytes,1,opt,name=salt,proto3" json:"salt,omitempty"` } func (x *ClientSecretParameters) Reset() { *x = ClientSecretParameters{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientSecretParameters) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientSecretParameters) ProtoMessage() {} func (x *ClientSecretParameters) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientSecretParameters.ProtoReflect.Descriptor instead. func (*ClientSecretParameters) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{7} } func (x *ClientSecretParameters) GetSalt() string { if x != nil { return x.Salt } return "" } type EvaluateJSParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` Libraries []string `protobuf:"bytes,2,rep,name=libraries,proto3" json:"libraries,omitempty"` } func (x *EvaluateJSParameters) Reset() { *x = EvaluateJSParameters{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EvaluateJSParameters) String() string { return protoimpl.X.MessageStringOf(x) } func (*EvaluateJSParameters) ProtoMessage() {} func (x *EvaluateJSParameters) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 EvaluateJSParameters.ProtoReflect.Descriptor instead. func (*EvaluateJSParameters) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{8} } func (x *EvaluateJSParameters) GetCode() string { if x != nil { return x.Code } return "" } func (x *EvaluateJSParameters) GetLibraries() []string { if x != nil { return x.Libraries } return nil } type HashCashParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"` } func (x *HashCashParameters) Reset() { *x = HashCashParameters{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HashCashParameters) String() string { return protoimpl.X.MessageStringOf(x) } func (*HashCashParameters) ProtoMessage() {} func (x *HashCashParameters) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 HashCashParameters.ProtoReflect.Descriptor instead. func (*HashCashParameters) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{9} } func (x *HashCashParameters) GetLength() int32 { if x != nil { return x.Length } return 0 } func (x *HashCashParameters) GetPrefix() string { if x != nil { return x.Prefix } return "" } type Challenge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type ChallengeType `protobuf:"varint,1,opt,name=type,proto3,enum=spotify.clienttoken.http.v0.ChallengeType" json:"type,omitempty"` // Types that are assignable to Parameters: // // *Challenge_ClientSecretParameters // *Challenge_EvaluateJsParameters // *Challenge_EvaluateHashcashParameters Parameters isChallenge_Parameters `protobuf_oneof:"parameters"` } func (x *Challenge) Reset() { *x = Challenge{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Challenge) String() string { return protoimpl.X.MessageStringOf(x) } func (*Challenge) ProtoMessage() {} func (x *Challenge) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 Challenge.ProtoReflect.Descriptor instead. func (*Challenge) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{10} } func (x *Challenge) GetType() ChallengeType { if x != nil { return x.Type } return ChallengeType_CHALLENGE_UNKNOWN } func (m *Challenge) GetParameters() isChallenge_Parameters { if m != nil { return m.Parameters } return nil } func (x *Challenge) GetClientSecretParameters() *ClientSecretParameters { if x, ok := x.GetParameters().(*Challenge_ClientSecretParameters); ok { return x.ClientSecretParameters } return nil } func (x *Challenge) GetEvaluateJsParameters() *EvaluateJSParameters { if x, ok := x.GetParameters().(*Challenge_EvaluateJsParameters); ok { return x.EvaluateJsParameters } return nil } func (x *Challenge) GetEvaluateHashcashParameters() *HashCashParameters { if x, ok := x.GetParameters().(*Challenge_EvaluateHashcashParameters); ok { return x.EvaluateHashcashParameters } return nil } type isChallenge_Parameters interface { isChallenge_Parameters() } type Challenge_ClientSecretParameters struct { ClientSecretParameters *ClientSecretParameters `protobuf:"bytes,2,opt,name=client_secret_parameters,json=clientSecretParameters,proto3,oneof"` } type Challenge_EvaluateJsParameters struct { EvaluateJsParameters *EvaluateJSParameters `protobuf:"bytes,3,opt,name=evaluate_js_parameters,json=evaluateJsParameters,proto3,oneof"` } type Challenge_EvaluateHashcashParameters struct { EvaluateHashcashParameters *HashCashParameters `protobuf:"bytes,4,opt,name=evaluate_hashcash_parameters,json=evaluateHashcashParameters,proto3,oneof"` } func (*Challenge_ClientSecretParameters) isChallenge_Parameters() {} func (*Challenge_EvaluateJsParameters) isChallenge_Parameters() {} func (*Challenge_EvaluateHashcashParameters) isChallenge_Parameters() {} type ClientSecretHMACAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Hmac string `protobuf:"bytes,1,opt,name=hmac,proto3" json:"hmac,omitempty"` } func (x *ClientSecretHMACAnswer) Reset() { *x = ClientSecretHMACAnswer{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientSecretHMACAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientSecretHMACAnswer) ProtoMessage() {} func (x *ClientSecretHMACAnswer) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientSecretHMACAnswer.ProtoReflect.Descriptor instead. func (*ClientSecretHMACAnswer) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{11} } func (x *ClientSecretHMACAnswer) GetHmac() string { if x != nil { return x.Hmac } return "" } type EvaluateJSAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Result string `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` } func (x *EvaluateJSAnswer) Reset() { *x = EvaluateJSAnswer{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EvaluateJSAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*EvaluateJSAnswer) ProtoMessage() {} func (x *EvaluateJSAnswer) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 EvaluateJSAnswer.ProtoReflect.Descriptor instead. func (*EvaluateJSAnswer) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{12} } func (x *EvaluateJSAnswer) GetResult() string { if x != nil { return x.Result } return "" } type HashCashAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Suffix string `protobuf:"bytes,1,opt,name=suffix,proto3" json:"suffix,omitempty"` } func (x *HashCashAnswer) Reset() { *x = HashCashAnswer{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HashCashAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*HashCashAnswer) ProtoMessage() {} func (x *HashCashAnswer) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 HashCashAnswer.ProtoReflect.Descriptor instead. func (*HashCashAnswer) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{13} } func (x *HashCashAnswer) GetSuffix() string { if x != nil { return x.Suffix } return "" } type ChallengeAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChallengeType ChallengeType `protobuf:"varint,1,opt,name=ChallengeType,proto3,enum=spotify.clienttoken.http.v0.ChallengeType" json:"ChallengeType,omitempty"` // Types that are assignable to Answer: // // *ChallengeAnswer_ClientSecret // *ChallengeAnswer_EvaluateJs // *ChallengeAnswer_HashCash Answer isChallengeAnswer_Answer `protobuf_oneof:"answer"` } func (x *ChallengeAnswer) Reset() { *x = ChallengeAnswer{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChallengeAnswer) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChallengeAnswer) ProtoMessage() {} func (x *ChallengeAnswer) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ChallengeAnswer.ProtoReflect.Descriptor instead. func (*ChallengeAnswer) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{14} } func (x *ChallengeAnswer) GetChallengeType() ChallengeType { if x != nil { return x.ChallengeType } return ChallengeType_CHALLENGE_UNKNOWN } func (m *ChallengeAnswer) GetAnswer() isChallengeAnswer_Answer { if m != nil { return m.Answer } return nil } func (x *ChallengeAnswer) GetClientSecret() *ClientSecretHMACAnswer { if x, ok := x.GetAnswer().(*ChallengeAnswer_ClientSecret); ok { return x.ClientSecret } return nil } func (x *ChallengeAnswer) GetEvaluateJs() *EvaluateJSAnswer { if x, ok := x.GetAnswer().(*ChallengeAnswer_EvaluateJs); ok { return x.EvaluateJs } return nil } func (x *ChallengeAnswer) GetHashCash() *HashCashAnswer { if x, ok := x.GetAnswer().(*ChallengeAnswer_HashCash); ok { return x.HashCash } return nil } type isChallengeAnswer_Answer interface { isChallengeAnswer_Answer() } type ChallengeAnswer_ClientSecret struct { ClientSecret *ClientSecretHMACAnswer `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3,oneof"` } type ChallengeAnswer_EvaluateJs struct { EvaluateJs *EvaluateJSAnswer `protobuf:"bytes,3,opt,name=evaluate_js,json=evaluateJs,proto3,oneof"` } type ChallengeAnswer_HashCash struct { HashCash *HashCashAnswer `protobuf:"bytes,4,opt,name=hash_cash,json=hashCash,proto3,oneof"` } func (*ChallengeAnswer_ClientSecret) isChallengeAnswer_Answer() {} func (*ChallengeAnswer_EvaluateJs) isChallengeAnswer_Answer() {} func (*ChallengeAnswer_HashCash) isChallengeAnswer_Answer() {} type ClientTokenBadRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` } func (x *ClientTokenBadRequest) Reset() { *x = ClientTokenBadRequest{} if protoimpl.UnsafeEnabled { mi := &file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientTokenBadRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientTokenBadRequest) ProtoMessage() {} func (x *ClientTokenBadRequest) ProtoReflect() protoreflect.Message { mi := &file_spotify_clienttoken_v0_clienttoken_http_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 ClientTokenBadRequest.ProtoReflect.Descriptor instead. func (*ClientTokenBadRequest) Descriptor() ([]byte, []int) { return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP(), []int{15} } func (x *ClientTokenBadRequest) GetMessage() string { if x != nil { return x.Message } return "" } var File_spotify_clienttoken_v0_clienttoken_http_proto protoreflect.FileDescriptor var file_spotify_clienttoken_v0_clienttoken_http_proto_rawDesc = []byte{ 0x0a, 0x2d, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x76, 0x30, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x1a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x02, 0x0a, 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x66, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x64, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x64, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x77, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x07, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x07, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x22, 0xa9, 0x02, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x51, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x22, 0x48, 0x0a, 0x14, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x12, 0x48, 0x61, 0x73, 0x68, 0x43, 0x61, 0x73, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0xaa, 0x03, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x6f, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x16, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x14, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x73, 0x0a, 0x1c, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x63, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x43, 0x61, 0x73, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x63, 0x61, 0x73, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x2c, 0x0a, 0x16, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x4d, 0x41, 0x43, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6d, 0x61, 0x63, 0x22, 0x2a, 0x0a, 0x10, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x53, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x28, 0x0a, 0x0e, 0x48, 0x61, 0x73, 0x68, 0x43, 0x61, 0x73, 0x68, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0xe7, 0x02, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x4d, 0x41, 0x43, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x0b, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x53, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x4a, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x43, 0x61, 0x73, 0x68, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x68, 0x61, 0x73, 0x68, 0x43, 0x61, 0x73, 0x68, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x22, 0x31, 0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x75, 0x0a, 0x16, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x02, 0x2a, 0x76, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x02, 0x2a, 0x7c, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x45, 0x5f, 0x4a, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x43, 0x41, 0x53, 0x48, 0x10, 0x03, 0x42, 0x6c, 0x0a, 0x1b, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x30, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x49, 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, 0x2f, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x76, 0x30, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescOnce sync.Once file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescData = file_spotify_clienttoken_v0_clienttoken_http_proto_rawDesc ) func file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescGZIP() []byte { file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescOnce.Do(func() { file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescData) }) return file_spotify_clienttoken_v0_clienttoken_http_proto_rawDescData } var file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_spotify_clienttoken_v0_clienttoken_http_proto_goTypes = []interface{}{ (ClientTokenRequestType)(0), // 0: spotify.clienttoken.http.v0.ClientTokenRequestType (ClientTokenResponseType)(0), // 1: spotify.clienttoken.http.v0.ClientTokenResponseType (ChallengeType)(0), // 2: spotify.clienttoken.http.v0.ChallengeType (*ClientTokenRequest)(nil), // 3: spotify.clienttoken.http.v0.ClientTokenRequest (*ClientDataRequest)(nil), // 4: spotify.clienttoken.http.v0.ClientDataRequest (*ChallengeAnswersRequest)(nil), // 5: spotify.clienttoken.http.v0.ChallengeAnswersRequest (*ClientTokenResponse)(nil), // 6: spotify.clienttoken.http.v0.ClientTokenResponse (*TokenDomain)(nil), // 7: spotify.clienttoken.http.v0.TokenDomain (*GrantedTokenResponse)(nil), // 8: spotify.clienttoken.http.v0.GrantedTokenResponse (*ChallengesResponse)(nil), // 9: spotify.clienttoken.http.v0.ChallengesResponse (*ClientSecretParameters)(nil), // 10: spotify.clienttoken.http.v0.ClientSecretParameters (*EvaluateJSParameters)(nil), // 11: spotify.clienttoken.http.v0.EvaluateJSParameters (*HashCashParameters)(nil), // 12: spotify.clienttoken.http.v0.HashCashParameters (*Challenge)(nil), // 13: spotify.clienttoken.http.v0.Challenge (*ClientSecretHMACAnswer)(nil), // 14: spotify.clienttoken.http.v0.ClientSecretHMACAnswer (*EvaluateJSAnswer)(nil), // 15: spotify.clienttoken.http.v0.EvaluateJSAnswer (*HashCashAnswer)(nil), // 16: spotify.clienttoken.http.v0.HashCashAnswer (*ChallengeAnswer)(nil), // 17: spotify.clienttoken.http.v0.ChallengeAnswer (*ClientTokenBadRequest)(nil), // 18: spotify.clienttoken.http.v0.ClientTokenBadRequest (*proto.ConnectivitySdkData)(nil), // 19: spotify.clienttoken.data.v0.ConnectivitySdkData } var file_spotify_clienttoken_v0_clienttoken_http_proto_depIdxs = []int32{ 0, // 0: spotify.clienttoken.http.v0.ClientTokenRequest.request_type:type_name -> spotify.clienttoken.http.v0.ClientTokenRequestType 4, // 1: spotify.clienttoken.http.v0.ClientTokenRequest.client_data:type_name -> spotify.clienttoken.http.v0.ClientDataRequest 5, // 2: spotify.clienttoken.http.v0.ClientTokenRequest.challenge_answers:type_name -> spotify.clienttoken.http.v0.ChallengeAnswersRequest 19, // 3: spotify.clienttoken.http.v0.ClientDataRequest.connectivity_sdk_data:type_name -> spotify.clienttoken.data.v0.ConnectivitySdkData 17, // 4: spotify.clienttoken.http.v0.ChallengeAnswersRequest.answers:type_name -> spotify.clienttoken.http.v0.ChallengeAnswer 1, // 5: spotify.clienttoken.http.v0.ClientTokenResponse.response_type:type_name -> spotify.clienttoken.http.v0.ClientTokenResponseType 8, // 6: spotify.clienttoken.http.v0.ClientTokenResponse.granted_token:type_name -> spotify.clienttoken.http.v0.GrantedTokenResponse 9, // 7: spotify.clienttoken.http.v0.ClientTokenResponse.challenges:type_name -> spotify.clienttoken.http.v0.ChallengesResponse 7, // 8: spotify.clienttoken.http.v0.GrantedTokenResponse.domains:type_name -> spotify.clienttoken.http.v0.TokenDomain 13, // 9: spotify.clienttoken.http.v0.ChallengesResponse.challenges:type_name -> spotify.clienttoken.http.v0.Challenge 2, // 10: spotify.clienttoken.http.v0.Challenge.type:type_name -> spotify.clienttoken.http.v0.ChallengeType 10, // 11: spotify.clienttoken.http.v0.Challenge.client_secret_parameters:type_name -> spotify.clienttoken.http.v0.ClientSecretParameters 11, // 12: spotify.clienttoken.http.v0.Challenge.evaluate_js_parameters:type_name -> spotify.clienttoken.http.v0.EvaluateJSParameters 12, // 13: spotify.clienttoken.http.v0.Challenge.evaluate_hashcash_parameters:type_name -> spotify.clienttoken.http.v0.HashCashParameters 2, // 14: spotify.clienttoken.http.v0.ChallengeAnswer.ChallengeType:type_name -> spotify.clienttoken.http.v0.ChallengeType 14, // 15: spotify.clienttoken.http.v0.ChallengeAnswer.client_secret:type_name -> spotify.clienttoken.http.v0.ClientSecretHMACAnswer 15, // 16: spotify.clienttoken.http.v0.ChallengeAnswer.evaluate_js:type_name -> spotify.clienttoken.http.v0.EvaluateJSAnswer 16, // 17: spotify.clienttoken.http.v0.ChallengeAnswer.hash_cash:type_name -> spotify.clienttoken.http.v0.HashCashAnswer 18, // [18:18] is the sub-list for method output_type 18, // [18:18] is the sub-list for method input_type 18, // [18:18] is the sub-list for extension type_name 18, // [18:18] is the sub-list for extension extendee 0, // [0:18] is the sub-list for field type_name } func init() { file_spotify_clienttoken_v0_clienttoken_http_proto_init() } func file_spotify_clienttoken_v0_clienttoken_http_proto_init() { if File_spotify_clienttoken_v0_clienttoken_http_proto != nil { return } if !protoimpl.UnsafeEnabled { file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientDataRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChallengeAnswersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TokenDomain); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantedTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChallengesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientSecretParameters); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EvaluateJSParameters); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HashCashParameters); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Challenge); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientSecretHMACAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EvaluateJSAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HashCashAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChallengeAnswer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientTokenBadRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[0].OneofWrappers = []interface{}{ (*ClientTokenRequest_ClientData)(nil), (*ClientTokenRequest_ChallengeAnswers)(nil), } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[1].OneofWrappers = []interface{}{ (*ClientDataRequest_ConnectivitySdkData)(nil), } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[3].OneofWrappers = []interface{}{ (*ClientTokenResponse_GrantedToken)(nil), (*ClientTokenResponse_Challenges)(nil), } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[10].OneofWrappers = []interface{}{ (*Challenge_ClientSecretParameters)(nil), (*Challenge_EvaluateJsParameters)(nil), (*Challenge_EvaluateHashcashParameters)(nil), } file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes[14].OneofWrappers = []interface{}{ (*ChallengeAnswer_ClientSecret)(nil), (*ChallengeAnswer_EvaluateJs)(nil), (*ChallengeAnswer_HashCash)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spotify_clienttoken_v0_clienttoken_http_proto_rawDesc, NumEnums: 3, NumMessages: 16, NumExtensions: 0, NumServices: 0, }, GoTypes: file_spotify_clienttoken_v0_clienttoken_http_proto_goTypes, DependencyIndexes: file_spotify_clienttoken_v0_clienttoken_http_proto_depIdxs, EnumInfos: file_spotify_clienttoken_v0_clienttoken_http_proto_enumTypes, MessageInfos: file_spotify_clienttoken_v0_clienttoken_http_proto_msgTypes, }.Build() File_spotify_clienttoken_v0_clienttoken_http_proto = out.File file_spotify_clienttoken_v0_clienttoken_http_proto_rawDesc = nil file_spotify_clienttoken_v0_clienttoken_http_proto_goTypes = nil file_spotify_clienttoken_v0_clienttoken_http_proto_depIdxs = nil }