From c0c5445756c2f1b8121ba6f9e11a694612440255 Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Mon, 25 Nov 2024 12:46:22 +0200 Subject: [PATCH] Update API for SIP. --- .changeset/yellow-beers-sin.md | 6 + livekit/livekit_models.pb.go | 441 ++++---- livekit/livekit_sip.pb.go | 1866 ++++++++++++++++++++++---------- livekit/livekit_sip.twirp.go | 1378 ++++++++++++++++++----- livekit/sip.go | 272 +++++ livekit/types.go | 46 + protobufs/livekit_models.proto | 5 + protobufs/livekit_sip.proto | 73 +- 8 files changed, 3057 insertions(+), 1030 deletions(-) create mode 100644 .changeset/yellow-beers-sin.md diff --git a/.changeset/yellow-beers-sin.md b/.changeset/yellow-beers-sin.md new file mode 100644 index 00000000..73ea9fa8 --- /dev/null +++ b/.changeset/yellow-beers-sin.md @@ -0,0 +1,6 @@ +--- +"@livekit/protocol": minor +"github.com/livekit/protocol": minor +--- + +Update API for SIP. diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index 326876ac..faf8f84c 100644 --- a/livekit/livekit_models.pb.go +++ b/livekit/livekit_models.pb.go @@ -752,7 +752,7 @@ func (x ParticipantInfo_State) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_State.Descriptor instead. func (ParticipantInfo_State) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{5, 0} } type ParticipantInfo_Kind int32 @@ -812,7 +812,7 @@ func (x ParticipantInfo_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_Kind.Descriptor instead. func (ParticipantInfo_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{5, 1} } type Encryption_Type int32 @@ -861,7 +861,7 @@ func (x Encryption_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Encryption_Type.Descriptor instead. func (Encryption_Type) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{5, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{6, 0} } type DataPacket_Kind int32 @@ -907,7 +907,7 @@ func (x DataPacket_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use DataPacket_Kind.Descriptor instead. func (DataPacket_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{9, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{10, 0} } type ServerInfo_Edition int32 @@ -953,7 +953,7 @@ func (x ServerInfo_Edition) Number() protoreflect.EnumNumber { // Deprecated: Use ServerInfo_Edition.Descriptor instead. func (ServerInfo_Edition) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{23, 0} } type ClientInfo_SDK int32 @@ -1032,7 +1032,53 @@ func (x ClientInfo_SDK) Number() protoreflect.EnumNumber { // Deprecated: Use ClientInfo_SDK.Descriptor instead. func (ClientInfo_SDK) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{24, 0} +} + +// ListUpdate is used for updated APIs where 'repeated string' field is modified. +type ListUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Set []string `protobuf:"bytes,1,rep,name=set,proto3" json:"set,omitempty"` // set the field to a new list +} + +func (x *ListUpdate) Reset() { + *x = ListUpdate{} + mi := &file_livekit_models_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUpdate) ProtoMessage() {} + +func (x *ListUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_models_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUpdate.ProtoReflect.Descriptor instead. +func (*ListUpdate) Descriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{0} +} + +func (x *ListUpdate) GetSet() []string { + if x != nil { + return x.Set + } + return nil } type Room struct { @@ -1057,7 +1103,7 @@ type Room struct { func (x *Room) Reset() { *x = Room{} - mi := &file_livekit_models_proto_msgTypes[0] + mi := &file_livekit_models_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1069,7 +1115,7 @@ func (x *Room) String() string { func (*Room) ProtoMessage() {} func (x *Room) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[0] + mi := &file_livekit_models_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1082,7 +1128,7 @@ func (x *Room) ProtoReflect() protoreflect.Message { // Deprecated: Use Room.ProtoReflect.Descriptor instead. func (*Room) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{0} + return file_livekit_models_proto_rawDescGZIP(), []int{1} } func (x *Room) GetSid() string { @@ -1187,7 +1233,7 @@ type Codec struct { func (x *Codec) Reset() { *x = Codec{} - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1199,7 +1245,7 @@ func (x *Codec) String() string { func (*Codec) ProtoMessage() {} func (x *Codec) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1212,7 +1258,7 @@ func (x *Codec) ProtoReflect() protoreflect.Message { // Deprecated: Use Codec.ProtoReflect.Descriptor instead. func (*Codec) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{1} + return file_livekit_models_proto_rawDescGZIP(), []int{2} } func (x *Codec) GetMime() string { @@ -1241,7 +1287,7 @@ type PlayoutDelay struct { func (x *PlayoutDelay) Reset() { *x = PlayoutDelay{} - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1253,7 +1299,7 @@ func (x *PlayoutDelay) String() string { func (*PlayoutDelay) ProtoMessage() {} func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1266,7 +1312,7 @@ func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayoutDelay.ProtoReflect.Descriptor instead. func (*PlayoutDelay) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{2} + return file_livekit_models_proto_rawDescGZIP(), []int{3} } func (x *PlayoutDelay) GetEnabled() bool { @@ -1323,7 +1369,7 @@ type ParticipantPermission struct { func (x *ParticipantPermission) Reset() { *x = ParticipantPermission{} - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1335,7 +1381,7 @@ func (x *ParticipantPermission) String() string { func (*ParticipantPermission) ProtoMessage() {} func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1348,7 +1394,7 @@ func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantPermission.ProtoReflect.Descriptor instead. func (*ParticipantPermission) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{3} + return file_livekit_models_proto_rawDescGZIP(), []int{4} } func (x *ParticipantPermission) GetCanSubscribe() bool { @@ -1442,7 +1488,7 @@ type ParticipantInfo struct { func (x *ParticipantInfo) Reset() { *x = ParticipantInfo{} - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1454,7 +1500,7 @@ func (x *ParticipantInfo) String() string { func (*ParticipantInfo) ProtoMessage() {} func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1467,7 +1513,7 @@ func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantInfo.ProtoReflect.Descriptor instead. func (*ParticipantInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4} + return file_livekit_models_proto_rawDescGZIP(), []int{5} } func (x *ParticipantInfo) GetSid() string { @@ -1576,7 +1622,7 @@ type Encryption struct { func (x *Encryption) Reset() { *x = Encryption{} - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1588,7 +1634,7 @@ func (x *Encryption) String() string { func (*Encryption) ProtoMessage() {} func (x *Encryption) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1601,7 +1647,7 @@ func (x *Encryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption.ProtoReflect.Descriptor instead. func (*Encryption) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{5} + return file_livekit_models_proto_rawDescGZIP(), []int{6} } type SimulcastCodecInfo struct { @@ -1617,7 +1663,7 @@ type SimulcastCodecInfo struct { func (x *SimulcastCodecInfo) Reset() { *x = SimulcastCodecInfo{} - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1629,7 +1675,7 @@ func (x *SimulcastCodecInfo) String() string { func (*SimulcastCodecInfo) ProtoMessage() {} func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1642,7 +1688,7 @@ func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulcastCodecInfo.ProtoReflect.Descriptor instead. func (*SimulcastCodecInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6} + return file_livekit_models_proto_rawDescGZIP(), []int{7} } func (x *SimulcastCodecInfo) GetMimeType() string { @@ -1709,7 +1755,7 @@ type TrackInfo struct { func (x *TrackInfo) Reset() { *x = TrackInfo{} - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1721,7 +1767,7 @@ func (x *TrackInfo) String() string { func (*TrackInfo) ProtoMessage() {} func (x *TrackInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1734,7 +1780,7 @@ func (x *TrackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackInfo.ProtoReflect.Descriptor instead. func (*TrackInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{7} + return file_livekit_models_proto_rawDescGZIP(), []int{8} } func (x *TrackInfo) GetSid() string { @@ -1887,7 +1933,7 @@ type VideoLayer struct { func (x *VideoLayer) Reset() { *x = VideoLayer{} - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1899,7 +1945,7 @@ func (x *VideoLayer) String() string { func (*VideoLayer) ProtoMessage() {} func (x *VideoLayer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1912,7 +1958,7 @@ func (x *VideoLayer) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoLayer.ProtoReflect.Descriptor instead. func (*VideoLayer) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{8} + return file_livekit_models_proto_rawDescGZIP(), []int{9} } func (x *VideoLayer) GetQuality() VideoQuality { @@ -1978,7 +2024,7 @@ type DataPacket struct { func (x *DataPacket) Reset() { *x = DataPacket{} - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1990,7 +2036,7 @@ func (x *DataPacket) String() string { func (*DataPacket) ProtoMessage() {} func (x *DataPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2003,7 +2049,7 @@ func (x *DataPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use DataPacket.ProtoReflect.Descriptor instead. func (*DataPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{9} + return file_livekit_models_proto_rawDescGZIP(), []int{10} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2168,7 +2214,7 @@ type ActiveSpeakerUpdate struct { func (x *ActiveSpeakerUpdate) Reset() { *x = ActiveSpeakerUpdate{} - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2180,7 +2226,7 @@ func (x *ActiveSpeakerUpdate) String() string { func (*ActiveSpeakerUpdate) ProtoMessage() {} func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2193,7 +2239,7 @@ func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveSpeakerUpdate.ProtoReflect.Descriptor instead. func (*ActiveSpeakerUpdate) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{10} + return file_livekit_models_proto_rawDescGZIP(), []int{11} } func (x *ActiveSpeakerUpdate) GetSpeakers() []*SpeakerInfo { @@ -2217,7 +2263,7 @@ type SpeakerInfo struct { func (x *SpeakerInfo) Reset() { *x = SpeakerInfo{} - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2229,7 +2275,7 @@ func (x *SpeakerInfo) String() string { func (*SpeakerInfo) ProtoMessage() {} func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2242,7 +2288,7 @@ func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeakerInfo.ProtoReflect.Descriptor instead. func (*SpeakerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{11} + return file_livekit_models_proto_rawDescGZIP(), []int{12} } func (x *SpeakerInfo) GetSid() string { @@ -2298,7 +2344,7 @@ type UserPacket struct { func (x *UserPacket) Reset() { *x = UserPacket{} - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2310,7 +2356,7 @@ func (x *UserPacket) String() string { func (*UserPacket) ProtoMessage() {} func (x *UserPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +2369,7 @@ func (x *UserPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use UserPacket.ProtoReflect.Descriptor instead. func (*UserPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{12} + return file_livekit_models_proto_rawDescGZIP(), []int{13} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2404,7 +2450,7 @@ type SipDTMF struct { func (x *SipDTMF) Reset() { *x = SipDTMF{} - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2416,7 +2462,7 @@ func (x *SipDTMF) String() string { func (*SipDTMF) ProtoMessage() {} func (x *SipDTMF) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2429,7 +2475,7 @@ func (x *SipDTMF) ProtoReflect() protoreflect.Message { // Deprecated: Use SipDTMF.ProtoReflect.Descriptor instead. func (*SipDTMF) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{13} + return file_livekit_models_proto_rawDescGZIP(), []int{14} } func (x *SipDTMF) GetCode() uint32 { @@ -2459,7 +2505,7 @@ type Transcription struct { func (x *Transcription) Reset() { *x = Transcription{} - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2471,7 +2517,7 @@ func (x *Transcription) String() string { func (*Transcription) ProtoMessage() {} func (x *Transcription) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2484,7 +2530,7 @@ func (x *Transcription) ProtoReflect() protoreflect.Message { // Deprecated: Use Transcription.ProtoReflect.Descriptor instead. func (*Transcription) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{14} + return file_livekit_models_proto_rawDescGZIP(), []int{15} } func (x *Transcription) GetTranscribedParticipantIdentity() string { @@ -2523,7 +2569,7 @@ type TranscriptionSegment struct { func (x *TranscriptionSegment) Reset() { *x = TranscriptionSegment{} - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2535,7 +2581,7 @@ func (x *TranscriptionSegment) String() string { func (*TranscriptionSegment) ProtoMessage() {} func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2548,7 +2594,7 @@ func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptionSegment.ProtoReflect.Descriptor instead. func (*TranscriptionSegment) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{15} + return file_livekit_models_proto_rawDescGZIP(), []int{16} } func (x *TranscriptionSegment) GetId() string { @@ -2608,7 +2654,7 @@ type ChatMessage struct { func (x *ChatMessage) Reset() { *x = ChatMessage{} - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2620,7 +2666,7 @@ func (x *ChatMessage) String() string { func (*ChatMessage) ProtoMessage() {} func (x *ChatMessage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2633,7 +2679,7 @@ func (x *ChatMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{16} + return file_livekit_models_proto_rawDescGZIP(), []int{17} } func (x *ChatMessage) GetId() string { @@ -2692,7 +2738,7 @@ type RpcRequest struct { func (x *RpcRequest) Reset() { *x = RpcRequest{} - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2704,7 +2750,7 @@ func (x *RpcRequest) String() string { func (*RpcRequest) ProtoMessage() {} func (x *RpcRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2717,7 +2763,7 @@ func (x *RpcRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcRequest.ProtoReflect.Descriptor instead. func (*RpcRequest) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{17} + return file_livekit_models_proto_rawDescGZIP(), []int{18} } func (x *RpcRequest) GetId() string { @@ -2765,7 +2811,7 @@ type RpcAck struct { func (x *RpcAck) Reset() { *x = RpcAck{} - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2777,7 +2823,7 @@ func (x *RpcAck) String() string { func (*RpcAck) ProtoMessage() {} func (x *RpcAck) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2790,7 +2836,7 @@ func (x *RpcAck) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcAck.ProtoReflect.Descriptor instead. func (*RpcAck) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{18} + return file_livekit_models_proto_rawDescGZIP(), []int{19} } func (x *RpcAck) GetRequestId() string { @@ -2815,7 +2861,7 @@ type RpcResponse struct { func (x *RpcResponse) Reset() { *x = RpcResponse{} - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +2873,7 @@ func (x *RpcResponse) String() string { func (*RpcResponse) ProtoMessage() {} func (x *RpcResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,7 +2886,7 @@ func (x *RpcResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcResponse.ProtoReflect.Descriptor instead. func (*RpcResponse) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{19} + return file_livekit_models_proto_rawDescGZIP(), []int{20} } func (x *RpcResponse) GetRequestId() string { @@ -2899,7 +2945,7 @@ type RpcError struct { func (x *RpcError) Reset() { *x = RpcError{} - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2911,7 +2957,7 @@ func (x *RpcError) String() string { func (*RpcError) ProtoMessage() {} func (x *RpcError) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2924,7 +2970,7 @@ func (x *RpcError) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcError.ProtoReflect.Descriptor instead. func (*RpcError) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{20} + return file_livekit_models_proto_rawDescGZIP(), []int{21} } func (x *RpcError) GetCode() uint32 { @@ -2960,7 +3006,7 @@ type ParticipantTracks struct { func (x *ParticipantTracks) Reset() { *x = ParticipantTracks{} - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2972,7 +3018,7 @@ func (x *ParticipantTracks) String() string { func (*ParticipantTracks) ProtoMessage() {} func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2985,7 +3031,7 @@ func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantTracks.ProtoReflect.Descriptor instead. func (*ParticipantTracks) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{21} + return file_livekit_models_proto_rawDescGZIP(), []int{22} } func (x *ParticipantTracks) GetParticipantSid() string { @@ -3020,7 +3066,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3032,7 +3078,7 @@ func (x *ServerInfo) String() string { func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3045,7 +3091,7 @@ func (x *ServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22} + return file_livekit_models_proto_rawDescGZIP(), []int{23} } func (x *ServerInfo) GetEdition() ServerInfo_Edition { @@ -3121,7 +3167,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3133,7 +3179,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3146,7 +3192,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23} + return file_livekit_models_proto_rawDescGZIP(), []int{24} } func (x *ClientInfo) GetSdk() ClientInfo_SDK { @@ -3241,7 +3287,7 @@ type ClientConfiguration struct { func (x *ClientConfiguration) Reset() { *x = ClientConfiguration{} - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3253,7 +3299,7 @@ func (x *ClientConfiguration) String() string { func (*ClientConfiguration) ProtoMessage() {} func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3266,7 +3312,7 @@ func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientConfiguration.ProtoReflect.Descriptor instead. func (*ClientConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{24} + return file_livekit_models_proto_rawDescGZIP(), []int{25} } func (x *ClientConfiguration) GetVideo() *VideoConfiguration { @@ -3314,7 +3360,7 @@ type VideoConfiguration struct { func (x *VideoConfiguration) Reset() { *x = VideoConfiguration{} - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3326,7 +3372,7 @@ func (x *VideoConfiguration) String() string { func (*VideoConfiguration) ProtoMessage() {} func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3339,7 +3385,7 @@ func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoConfiguration.ProtoReflect.Descriptor instead. func (*VideoConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{25} + return file_livekit_models_proto_rawDescGZIP(), []int{26} } func (x *VideoConfiguration) GetHardwareEncoder() ClientConfigSetting { @@ -3362,7 +3408,7 @@ type DisabledCodecs struct { func (x *DisabledCodecs) Reset() { *x = DisabledCodecs{} - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3374,7 +3420,7 @@ func (x *DisabledCodecs) String() string { func (*DisabledCodecs) ProtoMessage() {} func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3387,7 +3433,7 @@ func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { // Deprecated: Use DisabledCodecs.ProtoReflect.Descriptor instead. func (*DisabledCodecs) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26} + return file_livekit_models_proto_rawDescGZIP(), []int{27} } func (x *DisabledCodecs) GetCodecs() []*Codec { @@ -3422,7 +3468,7 @@ type RTPDrift struct { func (x *RTPDrift) Reset() { *x = RTPDrift{} - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3434,7 +3480,7 @@ func (x *RTPDrift) String() string { func (*RTPDrift) ProtoMessage() {} func (x *RTPDrift) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3447,7 +3493,7 @@ func (x *RTPDrift) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPDrift.ProtoReflect.Descriptor instead. func (*RTPDrift) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{27} + return file_livekit_models_proto_rawDescGZIP(), []int{28} } func (x *RTPDrift) GetStartTime() *timestamppb.Timestamp { @@ -3567,7 +3613,7 @@ type RTPStats struct { func (x *RTPStats) Reset() { *x = RTPStats{} - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3579,7 +3625,7 @@ func (x *RTPStats) String() string { func (*RTPStats) ProtoMessage() {} func (x *RTPStats) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3592,7 +3638,7 @@ func (x *RTPStats) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPStats.ProtoReflect.Descriptor instead. func (*RTPStats) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{28} + return file_livekit_models_proto_rawDescGZIP(), []int{29} } func (x *RTPStats) GetStartTime() *timestamppb.Timestamp { @@ -3926,7 +3972,7 @@ type RTCPSenderReportState struct { func (x *RTCPSenderReportState) Reset() { *x = RTCPSenderReportState{} - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3938,7 +3984,7 @@ func (x *RTCPSenderReportState) String() string { func (*RTCPSenderReportState) ProtoMessage() {} func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3951,7 +3997,7 @@ func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTCPSenderReportState.ProtoReflect.Descriptor instead. func (*RTCPSenderReportState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{29} + return file_livekit_models_proto_rawDescGZIP(), []int{30} } func (x *RTCPSenderReportState) GetRtpTimestamp() uint32 { @@ -4023,7 +4069,7 @@ type RTPForwarderState struct { func (x *RTPForwarderState) Reset() { *x = RTPForwarderState{} - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4035,7 +4081,7 @@ func (x *RTPForwarderState) String() string { func (*RTPForwarderState) ProtoMessage() {} func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4048,7 +4094,7 @@ func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPForwarderState.ProtoReflect.Descriptor instead. func (*RTPForwarderState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{30} + return file_livekit_models_proto_rawDescGZIP(), []int{31} } func (x *RTPForwarderState) GetStarted() bool { @@ -4139,7 +4185,7 @@ type RTPMungerState struct { func (x *RTPMungerState) Reset() { *x = RTPMungerState{} - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4151,7 +4197,7 @@ func (x *RTPMungerState) String() string { func (*RTPMungerState) ProtoMessage() {} func (x *RTPMungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4164,7 +4210,7 @@ func (x *RTPMungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPMungerState.ProtoReflect.Descriptor instead. func (*RTPMungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{31} + return file_livekit_models_proto_rawDescGZIP(), []int{32} } func (x *RTPMungerState) GetExtLastSequenceNumber() uint64 { @@ -4225,7 +4271,7 @@ type VP8MungerState struct { func (x *VP8MungerState) Reset() { *x = VP8MungerState{} - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4237,7 +4283,7 @@ func (x *VP8MungerState) String() string { func (*VP8MungerState) ProtoMessage() {} func (x *VP8MungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4250,7 +4296,7 @@ func (x *VP8MungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use VP8MungerState.ProtoReflect.Descriptor instead. func (*VP8MungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{32} + return file_livekit_models_proto_rawDescGZIP(), []int{33} } func (x *VP8MungerState) GetExtLastPictureId() int32 { @@ -4313,7 +4359,7 @@ type TimedVersion struct { func (x *TimedVersion) Reset() { *x = TimedVersion{} - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4325,7 +4371,7 @@ func (x *TimedVersion) String() string { func (*TimedVersion) ProtoMessage() {} func (x *TimedVersion) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4338,7 +4384,7 @@ func (x *TimedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use TimedVersion.ProtoReflect.Descriptor instead. func (*TimedVersion) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{33} + return file_livekit_models_proto_rawDescGZIP(), []int{34} } func (x *TimedVersion) GetUnixMicro() int64 { @@ -4363,7 +4409,9 @@ var file_livekit_models_proto_rawDesc = []byte{ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x74, 0x22, 0xf4, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, @@ -5099,7 +5147,7 @@ func file_livekit_models_proto_rawDescGZIP() []byte { } var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 18) -var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_livekit_models_proto_goTypes = []any{ (AudioCodec)(0), // 0: livekit.AudioCodec (VideoCodec)(0), // 1: livekit.VideoCodec @@ -5119,103 +5167,104 @@ var file_livekit_models_proto_goTypes = []any{ (DataPacket_Kind)(0), // 15: livekit.DataPacket.Kind (ServerInfo_Edition)(0), // 16: livekit.ServerInfo.Edition (ClientInfo_SDK)(0), // 17: livekit.ClientInfo.SDK - (*Room)(nil), // 18: livekit.Room - (*Codec)(nil), // 19: livekit.Codec - (*PlayoutDelay)(nil), // 20: livekit.PlayoutDelay - (*ParticipantPermission)(nil), // 21: livekit.ParticipantPermission - (*ParticipantInfo)(nil), // 22: livekit.ParticipantInfo - (*Encryption)(nil), // 23: livekit.Encryption - (*SimulcastCodecInfo)(nil), // 24: livekit.SimulcastCodecInfo - (*TrackInfo)(nil), // 25: livekit.TrackInfo - (*VideoLayer)(nil), // 26: livekit.VideoLayer - (*DataPacket)(nil), // 27: livekit.DataPacket - (*ActiveSpeakerUpdate)(nil), // 28: livekit.ActiveSpeakerUpdate - (*SpeakerInfo)(nil), // 29: livekit.SpeakerInfo - (*UserPacket)(nil), // 30: livekit.UserPacket - (*SipDTMF)(nil), // 31: livekit.SipDTMF - (*Transcription)(nil), // 32: livekit.Transcription - (*TranscriptionSegment)(nil), // 33: livekit.TranscriptionSegment - (*ChatMessage)(nil), // 34: livekit.ChatMessage - (*RpcRequest)(nil), // 35: livekit.RpcRequest - (*RpcAck)(nil), // 36: livekit.RpcAck - (*RpcResponse)(nil), // 37: livekit.RpcResponse - (*RpcError)(nil), // 38: livekit.RpcError - (*ParticipantTracks)(nil), // 39: livekit.ParticipantTracks - (*ServerInfo)(nil), // 40: livekit.ServerInfo - (*ClientInfo)(nil), // 41: livekit.ClientInfo - (*ClientConfiguration)(nil), // 42: livekit.ClientConfiguration - (*VideoConfiguration)(nil), // 43: livekit.VideoConfiguration - (*DisabledCodecs)(nil), // 44: livekit.DisabledCodecs - (*RTPDrift)(nil), // 45: livekit.RTPDrift - (*RTPStats)(nil), // 46: livekit.RTPStats - (*RTCPSenderReportState)(nil), // 47: livekit.RTCPSenderReportState - (*RTPForwarderState)(nil), // 48: livekit.RTPForwarderState - (*RTPMungerState)(nil), // 49: livekit.RTPMungerState - (*VP8MungerState)(nil), // 50: livekit.VP8MungerState - (*TimedVersion)(nil), // 51: livekit.TimedVersion - nil, // 52: livekit.ParticipantInfo.AttributesEntry - nil, // 53: livekit.RTPStats.GapHistogramEntry - (*MetricsBatch)(nil), // 54: livekit.MetricsBatch - (*timestamppb.Timestamp)(nil), // 55: google.protobuf.Timestamp + (*ListUpdate)(nil), // 18: livekit.ListUpdate + (*Room)(nil), // 19: livekit.Room + (*Codec)(nil), // 20: livekit.Codec + (*PlayoutDelay)(nil), // 21: livekit.PlayoutDelay + (*ParticipantPermission)(nil), // 22: livekit.ParticipantPermission + (*ParticipantInfo)(nil), // 23: livekit.ParticipantInfo + (*Encryption)(nil), // 24: livekit.Encryption + (*SimulcastCodecInfo)(nil), // 25: livekit.SimulcastCodecInfo + (*TrackInfo)(nil), // 26: livekit.TrackInfo + (*VideoLayer)(nil), // 27: livekit.VideoLayer + (*DataPacket)(nil), // 28: livekit.DataPacket + (*ActiveSpeakerUpdate)(nil), // 29: livekit.ActiveSpeakerUpdate + (*SpeakerInfo)(nil), // 30: livekit.SpeakerInfo + (*UserPacket)(nil), // 31: livekit.UserPacket + (*SipDTMF)(nil), // 32: livekit.SipDTMF + (*Transcription)(nil), // 33: livekit.Transcription + (*TranscriptionSegment)(nil), // 34: livekit.TranscriptionSegment + (*ChatMessage)(nil), // 35: livekit.ChatMessage + (*RpcRequest)(nil), // 36: livekit.RpcRequest + (*RpcAck)(nil), // 37: livekit.RpcAck + (*RpcResponse)(nil), // 38: livekit.RpcResponse + (*RpcError)(nil), // 39: livekit.RpcError + (*ParticipantTracks)(nil), // 40: livekit.ParticipantTracks + (*ServerInfo)(nil), // 41: livekit.ServerInfo + (*ClientInfo)(nil), // 42: livekit.ClientInfo + (*ClientConfiguration)(nil), // 43: livekit.ClientConfiguration + (*VideoConfiguration)(nil), // 44: livekit.VideoConfiguration + (*DisabledCodecs)(nil), // 45: livekit.DisabledCodecs + (*RTPDrift)(nil), // 46: livekit.RTPDrift + (*RTPStats)(nil), // 47: livekit.RTPStats + (*RTCPSenderReportState)(nil), // 48: livekit.RTCPSenderReportState + (*RTPForwarderState)(nil), // 49: livekit.RTPForwarderState + (*RTPMungerState)(nil), // 50: livekit.RTPMungerState + (*VP8MungerState)(nil), // 51: livekit.VP8MungerState + (*TimedVersion)(nil), // 52: livekit.TimedVersion + nil, // 53: livekit.ParticipantInfo.AttributesEntry + nil, // 54: livekit.RTPStats.GapHistogramEntry + (*MetricsBatch)(nil), // 55: livekit.MetricsBatch + (*timestamppb.Timestamp)(nil), // 56: google.protobuf.Timestamp } var file_livekit_models_proto_depIdxs = []int32{ - 19, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec - 51, // 1: livekit.Room.version:type_name -> livekit.TimedVersion + 20, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec + 52, // 1: livekit.Room.version:type_name -> livekit.TimedVersion 4, // 2: livekit.ParticipantPermission.can_publish_sources:type_name -> livekit.TrackSource 12, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State - 25, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo - 21, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission + 26, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo + 22, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission 13, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind - 52, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry + 53, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry 8, // 8: livekit.ParticipantInfo.disconnect_reason:type_name -> livekit.DisconnectReason - 26, // 9: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer + 27, // 9: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer 3, // 10: livekit.TrackInfo.type:type_name -> livekit.TrackType 4, // 11: livekit.TrackInfo.source:type_name -> livekit.TrackSource - 26, // 12: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer - 24, // 13: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo + 27, // 12: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer + 25, // 13: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo 14, // 14: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type - 51, // 15: livekit.TrackInfo.version:type_name -> livekit.TimedVersion + 52, // 15: livekit.TrackInfo.version:type_name -> livekit.TimedVersion 11, // 16: livekit.TrackInfo.audio_features:type_name -> livekit.AudioTrackFeature 5, // 17: livekit.VideoLayer.quality:type_name -> livekit.VideoQuality 15, // 18: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind - 30, // 19: livekit.DataPacket.user:type_name -> livekit.UserPacket - 28, // 20: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate - 31, // 21: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF - 32, // 22: livekit.DataPacket.transcription:type_name -> livekit.Transcription - 54, // 23: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch - 34, // 24: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage - 35, // 25: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest - 36, // 26: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck - 37, // 27: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse - 29, // 28: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo - 33, // 29: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment - 38, // 30: livekit.RpcResponse.error:type_name -> livekit.RpcError + 31, // 19: livekit.DataPacket.user:type_name -> livekit.UserPacket + 29, // 20: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate + 32, // 21: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF + 33, // 22: livekit.DataPacket.transcription:type_name -> livekit.Transcription + 55, // 23: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch + 35, // 24: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage + 36, // 25: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest + 37, // 26: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck + 38, // 27: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse + 30, // 28: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo + 34, // 29: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment + 39, // 30: livekit.RpcResponse.error:type_name -> livekit.RpcError 16, // 31: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition 17, // 32: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK - 43, // 33: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 43, // 34: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 44, // 33: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration + 44, // 34: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration 7, // 35: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting - 44, // 36: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 45, // 36: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs 7, // 37: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting 7, // 38: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting - 19, // 39: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec - 19, // 40: livekit.DisabledCodecs.publish:type_name -> livekit.Codec - 55, // 41: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp - 55, // 42: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp - 55, // 43: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp - 55, // 44: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp - 53, // 45: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry - 55, // 46: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp - 55, // 47: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp - 55, // 48: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp - 55, // 49: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp - 45, // 50: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift - 45, // 51: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift - 45, // 52: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift - 45, // 53: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift - 49, // 54: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState - 50, // 55: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState - 47, // 56: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState + 20, // 39: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec + 20, // 40: livekit.DisabledCodecs.publish:type_name -> livekit.Codec + 56, // 41: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp + 56, // 42: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp + 56, // 43: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp + 56, // 44: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp + 54, // 45: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry + 56, // 46: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp + 56, // 47: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp + 56, // 48: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp + 56, // 49: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp + 46, // 50: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift + 46, // 51: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift + 46, // 52: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift + 46, // 53: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift + 50, // 54: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState + 51, // 55: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState + 48, // 56: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState 57, // [57:57] is the sub-list for method output_type 57, // [57:57] is the sub-list for method input_type 57, // [57:57] is the sub-list for extension type_name @@ -5229,7 +5278,7 @@ func file_livekit_models_proto_init() { return } file_livekit_metrics_proto_init() - file_livekit_models_proto_msgTypes[9].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[10].OneofWrappers = []any{ (*DataPacket_User)(nil), (*DataPacket_Speaker)(nil), (*DataPacket_SipDtmf)(nil), @@ -5240,13 +5289,13 @@ func file_livekit_models_proto_init() { (*DataPacket_RpcAck)(nil), (*DataPacket_RpcResponse)(nil), } - file_livekit_models_proto_msgTypes[12].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[16].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[19].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[13].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[17].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[20].OneofWrappers = []any{ (*RpcResponse_Payload)(nil), (*RpcResponse_Error)(nil), } - file_livekit_models_proto_msgTypes[30].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[31].OneofWrappers = []any{ (*RTPForwarderState_Vp8Munger)(nil), } type x struct{} @@ -5255,7 +5304,7 @@ func file_livekit_models_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_models_proto_rawDesc, NumEnums: 18, - NumMessages: 36, + NumMessages: 37, NumExtensions: 0, NumServices: 0, }, diff --git a/livekit/livekit_sip.pb.go b/livekit/livekit_sip.pb.go index 41f2fc71..d105bb97 100644 --- a/livekit/livekit_sip.pb.go +++ b/livekit/livekit_sip.pb.go @@ -540,6 +540,93 @@ func (x *CreateSIPInboundTrunkRequest) GetTrunk() *SIPInboundTrunkInfo { return nil } +type UpdateSIPInboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipTrunkId string `protobuf:"bytes,1,opt,name=sip_trunk_id,json=sipTrunkId,proto3" json:"sip_trunk_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPInboundTrunkRequest_Replace + // *UpdateSIPInboundTrunkRequest_Update + Action isUpdateSIPInboundTrunkRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPInboundTrunkRequest) Reset() { + *x = UpdateSIPInboundTrunkRequest{} + mi := &file_livekit_sip_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPInboundTrunkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPInboundTrunkRequest) ProtoMessage() {} + +func (x *UpdateSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateSIPInboundTrunkRequest) GetSipTrunkId() string { + if x != nil { + return x.SipTrunkId + } + return "" +} + +func (m *UpdateSIPInboundTrunkRequest) GetAction() isUpdateSIPInboundTrunkRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPInboundTrunkRequest) GetReplace() *SIPInboundTrunkInfo { + if x, ok := x.GetAction().(*UpdateSIPInboundTrunkRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPInboundTrunkRequest) GetUpdate() *SIPInboundTrunkUpdate { + if x, ok := x.GetAction().(*UpdateSIPInboundTrunkRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPInboundTrunkRequest_Action interface { + isUpdateSIPInboundTrunkRequest_Action() +} + +type UpdateSIPInboundTrunkRequest_Replace struct { + Replace *SIPInboundTrunkInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPInboundTrunkRequest_Update struct { + Update *SIPInboundTrunkUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPInboundTrunkRequest_Replace) isUpdateSIPInboundTrunkRequest_Action() {} + +func (*UpdateSIPInboundTrunkRequest_Update) isUpdateSIPInboundTrunkRequest_Action() {} + type SIPInboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -576,7 +663,7 @@ type SIPInboundTrunkInfo struct { func (x *SIPInboundTrunkInfo) Reset() { *x = SIPInboundTrunkInfo{} - mi := &file_livekit_sip_proto_msgTypes[3] + mi := &file_livekit_sip_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -588,7 +675,7 @@ func (x *SIPInboundTrunkInfo) String() string { func (*SIPInboundTrunkInfo) ProtoMessage() {} func (x *SIPInboundTrunkInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[3] + mi := &file_livekit_sip_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -601,7 +688,7 @@ func (x *SIPInboundTrunkInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPInboundTrunkInfo.ProtoReflect.Descriptor instead. func (*SIPInboundTrunkInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{3} + return file_livekit_sip_proto_rawDescGZIP(), []int{4} } func (x *SIPInboundTrunkInfo) GetSipTrunkId() string { @@ -695,6 +782,99 @@ func (x *SIPInboundTrunkInfo) GetKrispEnabled() bool { return false } +type SIPInboundTrunkUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Numbers *ListUpdate `protobuf:"bytes,1,opt,name=numbers,proto3" json:"numbers,omitempty"` + AllowedAddresses *ListUpdate `protobuf:"bytes,2,opt,name=allowed_addresses,json=allowedAddresses,proto3" json:"allowed_addresses,omitempty"` + AllowedNumbers *ListUpdate `protobuf:"bytes,3,opt,name=allowed_numbers,json=allowedNumbers,proto3" json:"allowed_numbers,omitempty"` + AuthUsername *string `protobuf:"bytes,4,opt,name=auth_username,json=authUsername,proto3,oneof" json:"auth_username,omitempty"` + AuthPassword *string `protobuf:"bytes,5,opt,name=auth_password,json=authPassword,proto3,oneof" json:"auth_password,omitempty"` + Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,7,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` +} + +func (x *SIPInboundTrunkUpdate) Reset() { + *x = SIPInboundTrunkUpdate{} + mi := &file_livekit_sip_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPInboundTrunkUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPInboundTrunkUpdate) ProtoMessage() {} + +func (x *SIPInboundTrunkUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPInboundTrunkUpdate.ProtoReflect.Descriptor instead. +func (*SIPInboundTrunkUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{5} +} + +func (x *SIPInboundTrunkUpdate) GetNumbers() *ListUpdate { + if x != nil { + return x.Numbers + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAllowedAddresses() *ListUpdate { + if x != nil { + return x.AllowedAddresses + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAllowedNumbers() *ListUpdate { + if x != nil { + return x.AllowedNumbers + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAuthUsername() string { + if x != nil && x.AuthUsername != nil { + return *x.AuthUsername + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetAuthPassword() string { + if x != nil && x.AuthPassword != nil { + return *x.AuthPassword + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + type CreateSIPOutboundTrunkRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -705,7 +885,7 @@ type CreateSIPOutboundTrunkRequest struct { func (x *CreateSIPOutboundTrunkRequest) Reset() { *x = CreateSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[4] + mi := &file_livekit_sip_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -717,7 +897,7 @@ func (x *CreateSIPOutboundTrunkRequest) String() string { func (*CreateSIPOutboundTrunkRequest) ProtoMessage() {} func (x *CreateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[4] + mi := &file_livekit_sip_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -730,7 +910,7 @@ func (x *CreateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*CreateSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{4} + return file_livekit_sip_proto_rawDescGZIP(), []int{6} } func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { @@ -740,6 +920,93 @@ func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { return nil } +type UpdateSIPOutboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipTrunkId string `protobuf:"bytes,1,opt,name=sip_trunk_id,json=sipTrunkId,proto3" json:"sip_trunk_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPOutboundTrunkRequest_Replace + // *UpdateSIPOutboundTrunkRequest_Update + Action isUpdateSIPOutboundTrunkRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPOutboundTrunkRequest) Reset() { + *x = UpdateSIPOutboundTrunkRequest{} + mi := &file_livekit_sip_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPOutboundTrunkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPOutboundTrunkRequest) ProtoMessage() {} + +func (x *UpdateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{7} +} + +func (x *UpdateSIPOutboundTrunkRequest) GetSipTrunkId() string { + if x != nil { + return x.SipTrunkId + } + return "" +} + +func (m *UpdateSIPOutboundTrunkRequest) GetAction() isUpdateSIPOutboundTrunkRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPOutboundTrunkRequest) GetReplace() *SIPOutboundTrunkInfo { + if x, ok := x.GetAction().(*UpdateSIPOutboundTrunkRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPOutboundTrunkRequest) GetUpdate() *SIPOutboundTrunkUpdate { + if x, ok := x.GetAction().(*UpdateSIPOutboundTrunkRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPOutboundTrunkRequest_Action interface { + isUpdateSIPOutboundTrunkRequest_Action() +} + +type UpdateSIPOutboundTrunkRequest_Replace struct { + Replace *SIPOutboundTrunkInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPOutboundTrunkRequest_Update struct { + Update *SIPOutboundTrunkUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPOutboundTrunkRequest_Replace) isUpdateSIPOutboundTrunkRequest_Action() {} + +func (*UpdateSIPOutboundTrunkRequest_Update) isUpdateSIPOutboundTrunkRequest_Action() {} + type SIPOutboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -771,7 +1038,7 @@ type SIPOutboundTrunkInfo struct { func (x *SIPOutboundTrunkInfo) Reset() { *x = SIPOutboundTrunkInfo{} - mi := &file_livekit_sip_proto_msgTypes[5] + mi := &file_livekit_sip_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -783,7 +1050,7 @@ func (x *SIPOutboundTrunkInfo) String() string { func (*SIPOutboundTrunkInfo) ProtoMessage() {} func (x *SIPOutboundTrunkInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[5] + mi := &file_livekit_sip_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -796,7 +1063,7 @@ func (x *SIPOutboundTrunkInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPOutboundTrunkInfo.ProtoReflect.Descriptor instead. func (*SIPOutboundTrunkInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{5} + return file_livekit_sip_proto_rawDescGZIP(), []int{8} } func (x *SIPOutboundTrunkInfo) GetSipTrunkId() string { @@ -869,6 +1136,99 @@ func (x *SIPOutboundTrunkInfo) GetHeadersToAttributes() map[string]string { return nil } +type SIPOutboundTrunkUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + Transport *SIPTransport `protobuf:"varint,2,opt,name=transport,proto3,enum=livekit.SIPTransport,oneof" json:"transport,omitempty"` + Numbers *ListUpdate `protobuf:"bytes,3,opt,name=numbers,proto3" json:"numbers,omitempty"` + AuthUsername *string `protobuf:"bytes,4,opt,name=auth_username,json=authUsername,proto3,oneof" json:"auth_username,omitempty"` + AuthPassword *string `protobuf:"bytes,5,opt,name=auth_password,json=authPassword,proto3,oneof" json:"auth_password,omitempty"` + Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,7,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` +} + +func (x *SIPOutboundTrunkUpdate) Reset() { + *x = SIPOutboundTrunkUpdate{} + mi := &file_livekit_sip_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPOutboundTrunkUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPOutboundTrunkUpdate) ProtoMessage() {} + +func (x *SIPOutboundTrunkUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPOutboundTrunkUpdate.ProtoReflect.Descriptor instead. +func (*SIPOutboundTrunkUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{9} +} + +func (x *SIPOutboundTrunkUpdate) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetTransport() SIPTransport { + if x != nil && x.Transport != nil { + return *x.Transport + } + return SIPTransport_SIP_TRANSPORT_AUTO +} + +func (x *SIPOutboundTrunkUpdate) GetNumbers() *ListUpdate { + if x != nil { + return x.Numbers + } + return nil +} + +func (x *SIPOutboundTrunkUpdate) GetAuthUsername() string { + if x != nil && x.AuthUsername != nil { + return *x.AuthUsername + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetAuthPassword() string { + if x != nil && x.AuthPassword != nil { + return *x.AuthPassword + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + type GetSIPInboundTrunkRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -879,7 +1239,7 @@ type GetSIPInboundTrunkRequest struct { func (x *GetSIPInboundTrunkRequest) Reset() { *x = GetSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[6] + mi := &file_livekit_sip_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -891,7 +1251,7 @@ func (x *GetSIPInboundTrunkRequest) String() string { func (*GetSIPInboundTrunkRequest) ProtoMessage() {} func (x *GetSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[6] + mi := &file_livekit_sip_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -904,7 +1264,7 @@ func (x *GetSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. func (*GetSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{6} + return file_livekit_sip_proto_rawDescGZIP(), []int{10} } func (x *GetSIPInboundTrunkRequest) GetSipTrunkId() string { @@ -924,7 +1284,7 @@ type GetSIPInboundTrunkResponse struct { func (x *GetSIPInboundTrunkResponse) Reset() { *x = GetSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[7] + mi := &file_livekit_sip_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +1296,7 @@ func (x *GetSIPInboundTrunkResponse) String() string { func (*GetSIPInboundTrunkResponse) ProtoMessage() {} func (x *GetSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[7] + mi := &file_livekit_sip_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +1309,7 @@ func (x *GetSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPInboundTrunkResponse.ProtoReflect.Descriptor instead. func (*GetSIPInboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{7} + return file_livekit_sip_proto_rawDescGZIP(), []int{11} } func (x *GetSIPInboundTrunkResponse) GetTrunk() *SIPInboundTrunkInfo { @@ -969,7 +1329,7 @@ type GetSIPOutboundTrunkRequest struct { func (x *GetSIPOutboundTrunkRequest) Reset() { *x = GetSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[8] + mi := &file_livekit_sip_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -981,7 +1341,7 @@ func (x *GetSIPOutboundTrunkRequest) String() string { func (*GetSIPOutboundTrunkRequest) ProtoMessage() {} func (x *GetSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[8] + mi := &file_livekit_sip_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -994,7 +1354,7 @@ func (x *GetSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*GetSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{8} + return file_livekit_sip_proto_rawDescGZIP(), []int{12} } func (x *GetSIPOutboundTrunkRequest) GetSipTrunkId() string { @@ -1014,7 +1374,7 @@ type GetSIPOutboundTrunkResponse struct { func (x *GetSIPOutboundTrunkResponse) Reset() { *x = GetSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[9] + mi := &file_livekit_sip_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1026,7 +1386,7 @@ func (x *GetSIPOutboundTrunkResponse) String() string { func (*GetSIPOutboundTrunkResponse) ProtoMessage() {} func (x *GetSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[9] + mi := &file_livekit_sip_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1039,7 +1399,7 @@ func (x *GetSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPOutboundTrunkResponse.ProtoReflect.Descriptor instead. func (*GetSIPOutboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{9} + return file_livekit_sip_proto_rawDescGZIP(), []int{13} } func (x *GetSIPOutboundTrunkResponse) GetTrunk() *SIPOutboundTrunkInfo { @@ -1058,7 +1418,7 @@ type ListSIPTrunkRequest struct { func (x *ListSIPTrunkRequest) Reset() { *x = ListSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[10] + mi := &file_livekit_sip_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1070,7 +1430,7 @@ func (x *ListSIPTrunkRequest) String() string { func (*ListSIPTrunkRequest) ProtoMessage() {} func (x *ListSIPTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[10] + mi := &file_livekit_sip_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1083,7 +1443,7 @@ func (x *ListSIPTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{10} + return file_livekit_sip_proto_rawDescGZIP(), []int{14} } // Deprecated: Marked as deprecated in livekit_sip.proto. @@ -1097,7 +1457,7 @@ type ListSIPTrunkResponse struct { func (x *ListSIPTrunkResponse) Reset() { *x = ListSIPTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[11] + mi := &file_livekit_sip_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1109,7 +1469,7 @@ func (x *ListSIPTrunkResponse) String() string { func (*ListSIPTrunkResponse) ProtoMessage() {} func (x *ListSIPTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[11] + mi := &file_livekit_sip_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1122,7 +1482,7 @@ func (x *ListSIPTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{11} + return file_livekit_sip_proto_rawDescGZIP(), []int{15} } func (x *ListSIPTrunkResponse) GetItems() []*SIPTrunkInfo { @@ -1140,7 +1500,7 @@ type ListSIPInboundTrunkRequest struct { func (x *ListSIPInboundTrunkRequest) Reset() { *x = ListSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[12] + mi := &file_livekit_sip_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1512,7 @@ func (x *ListSIPInboundTrunkRequest) String() string { func (*ListSIPInboundTrunkRequest) ProtoMessage() {} func (x *ListSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[12] + mi := &file_livekit_sip_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1525,7 @@ func (x *ListSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{12} + return file_livekit_sip_proto_rawDescGZIP(), []int{16} } type ListSIPInboundTrunkResponse struct { @@ -1178,7 +1538,7 @@ type ListSIPInboundTrunkResponse struct { func (x *ListSIPInboundTrunkResponse) Reset() { *x = ListSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[13] + mi := &file_livekit_sip_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1550,7 @@ func (x *ListSIPInboundTrunkResponse) String() string { func (*ListSIPInboundTrunkResponse) ProtoMessage() {} func (x *ListSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[13] + mi := &file_livekit_sip_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1563,7 @@ func (x *ListSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPInboundTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPInboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{13} + return file_livekit_sip_proto_rawDescGZIP(), []int{17} } func (x *ListSIPInboundTrunkResponse) GetItems() []*SIPInboundTrunkInfo { @@ -1221,7 +1581,7 @@ type ListSIPOutboundTrunkRequest struct { func (x *ListSIPOutboundTrunkRequest) Reset() { *x = ListSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[14] + mi := &file_livekit_sip_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1593,7 @@ func (x *ListSIPOutboundTrunkRequest) String() string { func (*ListSIPOutboundTrunkRequest) ProtoMessage() {} func (x *ListSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[14] + mi := &file_livekit_sip_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1606,7 @@ func (x *ListSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{14} + return file_livekit_sip_proto_rawDescGZIP(), []int{18} } type ListSIPOutboundTrunkResponse struct { @@ -1259,7 +1619,7 @@ type ListSIPOutboundTrunkResponse struct { func (x *ListSIPOutboundTrunkResponse) Reset() { *x = ListSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[15] + mi := &file_livekit_sip_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1271,7 +1631,7 @@ func (x *ListSIPOutboundTrunkResponse) String() string { func (*ListSIPOutboundTrunkResponse) ProtoMessage() {} func (x *ListSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[15] + mi := &file_livekit_sip_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1284,7 +1644,7 @@ func (x *ListSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPOutboundTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPOutboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{15} + return file_livekit_sip_proto_rawDescGZIP(), []int{19} } func (x *ListSIPOutboundTrunkResponse) GetItems() []*SIPOutboundTrunkInfo { @@ -1304,7 +1664,7 @@ type DeleteSIPTrunkRequest struct { func (x *DeleteSIPTrunkRequest) Reset() { *x = DeleteSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[16] + mi := &file_livekit_sip_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1316,7 +1676,7 @@ func (x *DeleteSIPTrunkRequest) String() string { func (*DeleteSIPTrunkRequest) ProtoMessage() {} func (x *DeleteSIPTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[16] + mi := &file_livekit_sip_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1329,7 +1689,7 @@ func (x *DeleteSIPTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSIPTrunkRequest.ProtoReflect.Descriptor instead. func (*DeleteSIPTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{16} + return file_livekit_sip_proto_rawDescGZIP(), []int{20} } func (x *DeleteSIPTrunkRequest) GetSipTrunkId() string { @@ -1352,7 +1712,7 @@ type SIPDispatchRuleDirect struct { func (x *SIPDispatchRuleDirect) Reset() { *x = SIPDispatchRuleDirect{} - mi := &file_livekit_sip_proto_msgTypes[17] + mi := &file_livekit_sip_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1364,7 +1724,7 @@ func (x *SIPDispatchRuleDirect) String() string { func (*SIPDispatchRuleDirect) ProtoMessage() {} func (x *SIPDispatchRuleDirect) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[17] + mi := &file_livekit_sip_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1377,7 +1737,7 @@ func (x *SIPDispatchRuleDirect) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleDirect.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleDirect) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{17} + return file_livekit_sip_proto_rawDescGZIP(), []int{21} } func (x *SIPDispatchRuleDirect) GetRoomName() string { @@ -1407,7 +1767,7 @@ type SIPDispatchRuleIndividual struct { func (x *SIPDispatchRuleIndividual) Reset() { *x = SIPDispatchRuleIndividual{} - mi := &file_livekit_sip_proto_msgTypes[18] + mi := &file_livekit_sip_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1779,7 @@ func (x *SIPDispatchRuleIndividual) String() string { func (*SIPDispatchRuleIndividual) ProtoMessage() {} func (x *SIPDispatchRuleIndividual) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[18] + mi := &file_livekit_sip_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1792,7 @@ func (x *SIPDispatchRuleIndividual) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleIndividual.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleIndividual) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{18} + return file_livekit_sip_proto_rawDescGZIP(), []int{22} } func (x *SIPDispatchRuleIndividual) GetRoomPrefix() string { @@ -1464,7 +1824,7 @@ type SIPDispatchRuleCallee struct { func (x *SIPDispatchRuleCallee) Reset() { *x = SIPDispatchRuleCallee{} - mi := &file_livekit_sip_proto_msgTypes[19] + mi := &file_livekit_sip_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1476,7 +1836,7 @@ func (x *SIPDispatchRuleCallee) String() string { func (*SIPDispatchRuleCallee) ProtoMessage() {} func (x *SIPDispatchRuleCallee) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[19] + mi := &file_livekit_sip_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1489,7 +1849,7 @@ func (x *SIPDispatchRuleCallee) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleCallee.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleCallee) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{19} + return file_livekit_sip_proto_rawDescGZIP(), []int{23} } func (x *SIPDispatchRuleCallee) GetRoomPrefix() string { @@ -1528,7 +1888,7 @@ type SIPDispatchRule struct { func (x *SIPDispatchRule) Reset() { *x = SIPDispatchRule{} - mi := &file_livekit_sip_proto_msgTypes[20] + mi := &file_livekit_sip_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1540,7 +1900,7 @@ func (x *SIPDispatchRule) String() string { func (*SIPDispatchRule) ProtoMessage() {} func (x *SIPDispatchRule) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[20] + mi := &file_livekit_sip_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1553,7 +1913,7 @@ func (x *SIPDispatchRule) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRule.ProtoReflect.Descriptor instead. func (*SIPDispatchRule) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{20} + return file_livekit_sip_proto_rawDescGZIP(), []int{24} } func (m *SIPDispatchRule) GetRule() isSIPDispatchRule_Rule { @@ -1616,28 +1976,42 @@ type CreateSIPDispatchRuleRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + DispatchRule *SIPDispatchRuleInfo `protobuf:"bytes,8,opt,name=dispatch_rule,json=dispatchRule,proto3" json:"dispatch_rule,omitempty"` // Rule ID is ignored + // Deprecated: Marked as deprecated in livekit_sip.proto. Rule *SIPDispatchRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` // What trunks are accepted for this dispatch rule // If empty all trunks will match this dispatch rule + // + // Deprecated: Marked as deprecated in livekit_sip.proto. TrunkIds []string `protobuf:"bytes,2,rep,name=trunk_ids,json=trunkIds,proto3" json:"trunk_ids,omitempty"` // By default the From value (Phone number) is used for participant name/identity and added to attributes. // If true, a random value for identity will be used and numbers will be omitted from attributes. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. HidePhoneNumber bool `protobuf:"varint,3,opt,name=hide_phone_number,json=hidePhoneNumber,proto3" json:"hide_phone_number,omitempty"` // Dispatch Rule will only accept a call made to these numbers (if set). + // + // Deprecated: Marked as deprecated in livekit_sip.proto. InboundNumbers []string `protobuf:"bytes,6,rep,name=inbound_numbers,json=inboundNumbers,proto3" json:"inbound_numbers,omitempty"` // Optional human-readable name for the Dispatch Rule. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // User-defined metadata for the Dispatch Rule. // Participants created by this rule will inherit this metadata. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Metadata string `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` // User-defined attributes for the Dispatch Rule. // Participants created by this rule will inherit these attributes. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Attributes map[string]string `protobuf:"bytes,7,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *CreateSIPDispatchRuleRequest) Reset() { *x = CreateSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[21] + mi := &file_livekit_sip_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1649,7 +2023,7 @@ func (x *CreateSIPDispatchRuleRequest) String() string { func (*CreateSIPDispatchRuleRequest) ProtoMessage() {} func (x *CreateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[21] + mi := &file_livekit_sip_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1662,9 +2036,17 @@ func (x *CreateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*CreateSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{21} + return file_livekit_sip_proto_rawDescGZIP(), []int{25} +} + +func (x *CreateSIPDispatchRuleRequest) GetDispatchRule() *SIPDispatchRuleInfo { + if x != nil { + return x.DispatchRule + } + return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetRule() *SIPDispatchRule { if x != nil { return x.Rule @@ -1672,6 +2054,7 @@ func (x *CreateSIPDispatchRuleRequest) GetRule() *SIPDispatchRule { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetTrunkIds() []string { if x != nil { return x.TrunkIds @@ -1679,6 +2062,7 @@ func (x *CreateSIPDispatchRuleRequest) GetTrunkIds() []string { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetHidePhoneNumber() bool { if x != nil { return x.HidePhoneNumber @@ -1686,6 +2070,7 @@ func (x *CreateSIPDispatchRuleRequest) GetHidePhoneNumber() bool { return false } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetInboundNumbers() []string { if x != nil { return x.InboundNumbers @@ -1693,6 +2078,7 @@ func (x *CreateSIPDispatchRuleRequest) GetInboundNumbers() []string { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetName() string { if x != nil { return x.Name @@ -1700,6 +2086,7 @@ func (x *CreateSIPDispatchRuleRequest) GetName() string { return "" } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetMetadata() string { if x != nil { return x.Metadata @@ -1707,6 +2094,7 @@ func (x *CreateSIPDispatchRuleRequest) GetMetadata() string { return "" } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetAttributes() map[string]string { if x != nil { return x.Attributes @@ -1714,6 +2102,93 @@ func (x *CreateSIPDispatchRuleRequest) GetAttributes() map[string]string { return nil } +type UpdateSIPDispatchRuleRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipDispatchRuleId string `protobuf:"bytes,1,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPDispatchRuleRequest_Replace + // *UpdateSIPDispatchRuleRequest_Update + Action isUpdateSIPDispatchRuleRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPDispatchRuleRequest) Reset() { + *x = UpdateSIPDispatchRuleRequest{} + mi := &file_livekit_sip_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPDispatchRuleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPDispatchRuleRequest) ProtoMessage() {} + +func (x *UpdateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{26} +} + +func (x *UpdateSIPDispatchRuleRequest) GetSipDispatchRuleId() string { + if x != nil { + return x.SipDispatchRuleId + } + return "" +} + +func (m *UpdateSIPDispatchRuleRequest) GetAction() isUpdateSIPDispatchRuleRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPDispatchRuleRequest) GetReplace() *SIPDispatchRuleInfo { + if x, ok := x.GetAction().(*UpdateSIPDispatchRuleRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPDispatchRuleRequest) GetUpdate() *SIPDispatchRuleUpdate { + if x, ok := x.GetAction().(*UpdateSIPDispatchRuleRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPDispatchRuleRequest_Action interface { + isUpdateSIPDispatchRuleRequest_Action() +} + +type UpdateSIPDispatchRuleRequest_Replace struct { + Replace *SIPDispatchRuleInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPDispatchRuleRequest_Update struct { + Update *SIPDispatchRuleUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPDispatchRuleRequest_Replace) isUpdateSIPDispatchRuleRequest_Action() {} + +func (*UpdateSIPDispatchRuleRequest_Update) isUpdateSIPDispatchRuleRequest_Action() {} + type SIPDispatchRuleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1737,7 +2212,7 @@ type SIPDispatchRuleInfo struct { func (x *SIPDispatchRuleInfo) Reset() { *x = SIPDispatchRuleInfo{} - mi := &file_livekit_sip_proto_msgTypes[22] + mi := &file_livekit_sip_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1749,7 +2224,7 @@ func (x *SIPDispatchRuleInfo) String() string { func (*SIPDispatchRuleInfo) ProtoMessage() {} func (x *SIPDispatchRuleInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[22] + mi := &file_livekit_sip_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1762,7 +2237,7 @@ func (x *SIPDispatchRuleInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleInfo.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{22} + return file_livekit_sip_proto_rawDescGZIP(), []int{27} } func (x *SIPDispatchRuleInfo) GetSipDispatchRuleId() string { @@ -1821,6 +2296,83 @@ func (x *SIPDispatchRuleInfo) GetAttributes() map[string]string { return nil } +type SIPDispatchRuleUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TrunkIds *ListUpdate `protobuf:"bytes,1,opt,name=trunk_ids,json=trunkIds,proto3" json:"trunk_ids,omitempty"` + Rule *SIPDispatchRule `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"` + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,4,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` + Attributes map[string]string `protobuf:"bytes,5,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *SIPDispatchRuleUpdate) Reset() { + *x = SIPDispatchRuleUpdate{} + mi := &file_livekit_sip_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPDispatchRuleUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPDispatchRuleUpdate) ProtoMessage() {} + +func (x *SIPDispatchRuleUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPDispatchRuleUpdate.ProtoReflect.Descriptor instead. +func (*SIPDispatchRuleUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{28} +} + +func (x *SIPDispatchRuleUpdate) GetTrunkIds() *ListUpdate { + if x != nil { + return x.TrunkIds + } + return nil +} + +func (x *SIPDispatchRuleUpdate) GetRule() *SIPDispatchRule { + if x != nil { + return x.Rule + } + return nil +} + +func (x *SIPDispatchRuleUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPDispatchRuleUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + +func (x *SIPDispatchRuleUpdate) GetAttributes() map[string]string { + if x != nil { + return x.Attributes + } + return nil +} + type ListSIPDispatchRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1829,7 +2381,7 @@ type ListSIPDispatchRuleRequest struct { func (x *ListSIPDispatchRuleRequest) Reset() { *x = ListSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[23] + mi := &file_livekit_sip_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1841,7 +2393,7 @@ func (x *ListSIPDispatchRuleRequest) String() string { func (*ListSIPDispatchRuleRequest) ProtoMessage() {} func (x *ListSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[23] + mi := &file_livekit_sip_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1854,7 +2406,7 @@ func (x *ListSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*ListSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{23} + return file_livekit_sip_proto_rawDescGZIP(), []int{29} } type ListSIPDispatchRuleResponse struct { @@ -1867,7 +2419,7 @@ type ListSIPDispatchRuleResponse struct { func (x *ListSIPDispatchRuleResponse) Reset() { *x = ListSIPDispatchRuleResponse{} - mi := &file_livekit_sip_proto_msgTypes[24] + mi := &file_livekit_sip_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1879,7 +2431,7 @@ func (x *ListSIPDispatchRuleResponse) String() string { func (*ListSIPDispatchRuleResponse) ProtoMessage() {} func (x *ListSIPDispatchRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[24] + mi := &file_livekit_sip_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1892,7 +2444,7 @@ func (x *ListSIPDispatchRuleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPDispatchRuleResponse.ProtoReflect.Descriptor instead. func (*ListSIPDispatchRuleResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{24} + return file_livekit_sip_proto_rawDescGZIP(), []int{30} } func (x *ListSIPDispatchRuleResponse) GetItems() []*SIPDispatchRuleInfo { @@ -1912,7 +2464,7 @@ type DeleteSIPDispatchRuleRequest struct { func (x *DeleteSIPDispatchRuleRequest) Reset() { *x = DeleteSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[25] + mi := &file_livekit_sip_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1924,7 +2476,7 @@ func (x *DeleteSIPDispatchRuleRequest) String() string { func (*DeleteSIPDispatchRuleRequest) ProtoMessage() {} func (x *DeleteSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[25] + mi := &file_livekit_sip_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1937,7 +2489,7 @@ func (x *DeleteSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*DeleteSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{25} + return file_livekit_sip_proto_rawDescGZIP(), []int{31} } func (x *DeleteSIPDispatchRuleRequest) GetSipDispatchRuleId() string { @@ -1989,7 +2541,7 @@ type CreateSIPParticipantRequest struct { func (x *CreateSIPParticipantRequest) Reset() { *x = CreateSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[26] + mi := &file_livekit_sip_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2001,7 +2553,7 @@ func (x *CreateSIPParticipantRequest) String() string { func (*CreateSIPParticipantRequest) ProtoMessage() {} func (x *CreateSIPParticipantRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[26] + mi := &file_livekit_sip_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2014,7 +2566,7 @@ func (x *CreateSIPParticipantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPParticipantRequest.ProtoReflect.Descriptor instead. func (*CreateSIPParticipantRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{26} + return file_livekit_sip_proto_rawDescGZIP(), []int{32} } func (x *CreateSIPParticipantRequest) GetSipTrunkId() string { @@ -2129,7 +2681,7 @@ type SIPParticipantInfo struct { func (x *SIPParticipantInfo) Reset() { *x = SIPParticipantInfo{} - mi := &file_livekit_sip_proto_msgTypes[27] + mi := &file_livekit_sip_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2141,7 +2693,7 @@ func (x *SIPParticipantInfo) String() string { func (*SIPParticipantInfo) ProtoMessage() {} func (x *SIPParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[27] + mi := &file_livekit_sip_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2154,7 +2706,7 @@ func (x *SIPParticipantInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPParticipantInfo.ProtoReflect.Descriptor instead. func (*SIPParticipantInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{27} + return file_livekit_sip_proto_rawDescGZIP(), []int{33} } func (x *SIPParticipantInfo) GetParticipantId() string { @@ -2199,7 +2751,7 @@ type TransferSIPParticipantRequest struct { func (x *TransferSIPParticipantRequest) Reset() { *x = TransferSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[28] + mi := &file_livekit_sip_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2211,7 +2763,7 @@ func (x *TransferSIPParticipantRequest) String() string { func (*TransferSIPParticipantRequest) ProtoMessage() {} func (x *TransferSIPParticipantRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[28] + mi := &file_livekit_sip_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2224,7 +2776,7 @@ func (x *TransferSIPParticipantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferSIPParticipantRequest.ProtoReflect.Descriptor instead. func (*TransferSIPParticipantRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{28} + return file_livekit_sip_proto_rawDescGZIP(), []int{34} } func (x *TransferSIPParticipantRequest) GetParticipantIdentity() string { @@ -2277,7 +2829,7 @@ type SIPCallInfo struct { func (x *SIPCallInfo) Reset() { *x = SIPCallInfo{} - mi := &file_livekit_sip_proto_msgTypes[29] + mi := &file_livekit_sip_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2289,7 +2841,7 @@ func (x *SIPCallInfo) String() string { func (*SIPCallInfo) ProtoMessage() {} func (x *SIPCallInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[29] + mi := &file_livekit_sip_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2302,7 +2854,7 @@ func (x *SIPCallInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPCallInfo.ProtoReflect.Descriptor instead. func (*SIPCallInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{29} + return file_livekit_sip_proto_rawDescGZIP(), []int{35} } func (x *SIPCallInfo) GetCallId() string { @@ -2410,7 +2962,7 @@ type SIPUri struct { func (x *SIPUri) Reset() { *x = SIPUri{} - mi := &file_livekit_sip_proto_msgTypes[30] + mi := &file_livekit_sip_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2422,7 +2974,7 @@ func (x *SIPUri) String() string { func (*SIPUri) ProtoMessage() {} func (x *SIPUri) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[30] + mi := &file_livekit_sip_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2987,7 @@ func (x *SIPUri) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPUri.ProtoReflect.Descriptor instead. func (*SIPUri) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{30} + return file_livekit_sip_proto_rawDescGZIP(), []int{36} } func (x *SIPUri) GetUser() string { @@ -2560,47 +3112,139 @@ var file_livekit_sip_proto_rawDesc = []byte{ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x85, 0x06, 0x0a, - 0x13, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, - 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0xbe, 0x01, 0x0a, + 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, + 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x06, + 0x0a, 0x13, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, + 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x27, + 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, + 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x6b, 0x72, 0x69, 0x73, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6b, 0x72, 0x69, 0x73, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 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, 0x1a, 0x46, 0x0a, + 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 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, 0x8e, 0x03, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x2d, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, + 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x10, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x12, 0x3c, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0e, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x28, + 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, + 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0xc1, 0x01, 0x0a, + 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, + 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xd1, 0x04, 0x0a, 0x14, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, + 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, + 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x44, + 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, + 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, - 0x61, 0x6c, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6b, - 0x72, 0x69, 0x73, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x6b, 0x72, 0x69, 0x73, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 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, @@ -2609,364 +3253,404 @@ var file_livekit_sip_proto_rawDesc = []byte{ 0x74, 0x65, 0x73, 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, 0x54, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, - 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, - 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0xd1, 0x04, 0x0a, 0x14, 0x53, - 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, - 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x44, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6a, - 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 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, 0x1a, 0x46, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0x3d, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, - 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x50, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, - 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, - 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, - 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, - 0x52, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, - 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, - 0x75, 0x6e, 0x6b, 0x22, 0x19, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x47, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x82, 0x03, 0x0a, 0x16, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, + 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x01, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, + 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, + 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, - 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, - 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, 0x15, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, - 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, - 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, - 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, - 0x4e, 0x0a, 0x19, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, - 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, - 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, - 0x68, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x6f, 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x53, 0x49, - 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x52, 0x0a, - 0x14, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, - 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x12, 0x5e, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, - 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x3e, 0x0a, 0x1a, 0x47, 0x65, + 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, + 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x19, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x02, + 0x18, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, + 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, 0x4e, 0x0a, 0x19, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, - 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x16, 0x64, 0x69, 0x73, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, - 0x6c, 0x12, 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, - 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x48, - 0x00, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, - 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x84, 0x03, - 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, - 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, - 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x55, - 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, + 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, + 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, 0x68, 0x0a, 0x15, 0x53, 0x49, + 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, + 0x6c, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, + 0x6d, 0x69, 0x7a, 0x65, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, + 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x5e, 0x0a, 0x18, + 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x16, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x14, + 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x48, 0x00, 0x52, 0x12, 0x64, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, + 0x42, 0x06, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x64, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x04, + 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1f, + 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, + 0x2e, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, + 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x2b, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, + 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0xcd, + 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, + 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, + 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x48, + 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, + 0x03, 0x0a, 0x13, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, + 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, + 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0xa3, 0x03, 0x0a, 0x13, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, 0x14, - 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, - 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, - 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, - 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x73, - 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, - 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x8b, 0x06, 0x0a, - 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, - 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x12, 0x1b, - 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30, + 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, + 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x4f, + 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, + 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, + 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, + 0x8b, 0x06, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x54, + 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, + 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x76, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x12, 0x27, 0x0a, 0x0d, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, + 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, + 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, + 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x72, 0x69, 0x73, 0x70, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x72, + 0x69, 0x73, 0x70, 0x1a, 0x48, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0xab, 0x01, + 0x0a, 0x12, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, - 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x16, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, - 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, - 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, - 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, - 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x72, 0x69, 0x73, 0x70, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x72, 0x69, 0x73, 0x70, - 0x1a, 0x48, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 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, 0xab, 0x01, 0x0a, 0x12, 0x53, - 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1d, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, - 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, - 0x22, 0xee, 0x03, 0x0a, 0x0b, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x75, - 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x75, - 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, - 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, - 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x72, 0x69, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x6f, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x72, - 0x69, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, - 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x10, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x89, 0x01, 0x0a, 0x06, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2a, 0x6b, 0x0a, - 0x0c, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, - 0x12, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, - 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x43, - 0x50, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x4c, 0x53, 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x0d, 0x53, 0x49, - 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x53, - 0x43, 0x53, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x49, 0x4e, 0x47, - 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, - 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x14, - 0x0a, 0x10, 0x53, 0x43, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, - 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x04, 0x32, 0xba, 0x09, 0x0a, 0x03, 0x53, 0x49, 0x50, 0x12, 0x50, 0x0a, 0x0c, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1c, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5c, 0x0a, - 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x16, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5d, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, + 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, + 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, + 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x12, 0x23, + 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, + 0x6f, 0x6e, 0x65, 0x22, 0xee, 0x03, 0x0a, 0x0b, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x31, 0x0a, + 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x55, 0x72, 0x69, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x72, 0x69, 0x12, 0x26, 0x0a, 0x06, + 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x52, 0x05, 0x74, + 0x6f, 0x55, 0x72, 0x69, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x10, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x06, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, + 0x2a, 0x6b, 0x0a, 0x0c, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x4c, 0x53, 0x10, 0x03, 0x2a, 0x77, 0x0a, + 0x0d, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, + 0x0a, 0x11, 0x53, 0x43, 0x53, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, + 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x53, 0x5f, 0x50, 0x41, 0x52, + 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, + 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x53, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x32, 0xd7, 0x0b, 0x0a, 0x03, 0x53, 0x49, 0x50, 0x12, 0x50, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1c, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, + 0x12, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, + 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5d, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, + 0x13, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, + 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, - 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, - 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, - 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x60, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, + 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, + 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x60, 0x0a, 0x13, 0x4c, @@ -3013,7 +3697,7 @@ func file_livekit_sip_proto_rawDescGZIP() []byte { } var file_livekit_sip_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_livekit_sip_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_livekit_sip_proto_msgTypes = make([]protoimpl.MessageInfo, 45) var file_livekit_sip_proto_goTypes = []any{ (SIPTransport)(0), // 0: livekit.SIPTransport (SIPCallStatus)(0), // 1: livekit.SIPCallStatus @@ -3021,109 +3705,138 @@ var file_livekit_sip_proto_goTypes = []any{ (*CreateSIPTrunkRequest)(nil), // 3: livekit.CreateSIPTrunkRequest (*SIPTrunkInfo)(nil), // 4: livekit.SIPTrunkInfo (*CreateSIPInboundTrunkRequest)(nil), // 5: livekit.CreateSIPInboundTrunkRequest - (*SIPInboundTrunkInfo)(nil), // 6: livekit.SIPInboundTrunkInfo - (*CreateSIPOutboundTrunkRequest)(nil), // 7: livekit.CreateSIPOutboundTrunkRequest - (*SIPOutboundTrunkInfo)(nil), // 8: livekit.SIPOutboundTrunkInfo - (*GetSIPInboundTrunkRequest)(nil), // 9: livekit.GetSIPInboundTrunkRequest - (*GetSIPInboundTrunkResponse)(nil), // 10: livekit.GetSIPInboundTrunkResponse - (*GetSIPOutboundTrunkRequest)(nil), // 11: livekit.GetSIPOutboundTrunkRequest - (*GetSIPOutboundTrunkResponse)(nil), // 12: livekit.GetSIPOutboundTrunkResponse - (*ListSIPTrunkRequest)(nil), // 13: livekit.ListSIPTrunkRequest - (*ListSIPTrunkResponse)(nil), // 14: livekit.ListSIPTrunkResponse - (*ListSIPInboundTrunkRequest)(nil), // 15: livekit.ListSIPInboundTrunkRequest - (*ListSIPInboundTrunkResponse)(nil), // 16: livekit.ListSIPInboundTrunkResponse - (*ListSIPOutboundTrunkRequest)(nil), // 17: livekit.ListSIPOutboundTrunkRequest - (*ListSIPOutboundTrunkResponse)(nil), // 18: livekit.ListSIPOutboundTrunkResponse - (*DeleteSIPTrunkRequest)(nil), // 19: livekit.DeleteSIPTrunkRequest - (*SIPDispatchRuleDirect)(nil), // 20: livekit.SIPDispatchRuleDirect - (*SIPDispatchRuleIndividual)(nil), // 21: livekit.SIPDispatchRuleIndividual - (*SIPDispatchRuleCallee)(nil), // 22: livekit.SIPDispatchRuleCallee - (*SIPDispatchRule)(nil), // 23: livekit.SIPDispatchRule - (*CreateSIPDispatchRuleRequest)(nil), // 24: livekit.CreateSIPDispatchRuleRequest - (*SIPDispatchRuleInfo)(nil), // 25: livekit.SIPDispatchRuleInfo - (*ListSIPDispatchRuleRequest)(nil), // 26: livekit.ListSIPDispatchRuleRequest - (*ListSIPDispatchRuleResponse)(nil), // 27: livekit.ListSIPDispatchRuleResponse - (*DeleteSIPDispatchRuleRequest)(nil), // 28: livekit.DeleteSIPDispatchRuleRequest - (*CreateSIPParticipantRequest)(nil), // 29: livekit.CreateSIPParticipantRequest - (*SIPParticipantInfo)(nil), // 30: livekit.SIPParticipantInfo - (*TransferSIPParticipantRequest)(nil), // 31: livekit.TransferSIPParticipantRequest - (*SIPCallInfo)(nil), // 32: livekit.SIPCallInfo - (*SIPUri)(nil), // 33: livekit.SIPUri - nil, // 34: livekit.SIPInboundTrunkInfo.HeadersEntry - nil, // 35: livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry - nil, // 36: livekit.SIPOutboundTrunkInfo.HeadersEntry - nil, // 37: livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry - nil, // 38: livekit.CreateSIPDispatchRuleRequest.AttributesEntry - nil, // 39: livekit.SIPDispatchRuleInfo.AttributesEntry - nil, // 40: livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry - (*durationpb.Duration)(nil), // 41: google.protobuf.Duration - (DisconnectReason)(0), // 42: livekit.DisconnectReason - (*emptypb.Empty)(nil), // 43: google.protobuf.Empty + (*UpdateSIPInboundTrunkRequest)(nil), // 6: livekit.UpdateSIPInboundTrunkRequest + (*SIPInboundTrunkInfo)(nil), // 7: livekit.SIPInboundTrunkInfo + (*SIPInboundTrunkUpdate)(nil), // 8: livekit.SIPInboundTrunkUpdate + (*CreateSIPOutboundTrunkRequest)(nil), // 9: livekit.CreateSIPOutboundTrunkRequest + (*UpdateSIPOutboundTrunkRequest)(nil), // 10: livekit.UpdateSIPOutboundTrunkRequest + (*SIPOutboundTrunkInfo)(nil), // 11: livekit.SIPOutboundTrunkInfo + (*SIPOutboundTrunkUpdate)(nil), // 12: livekit.SIPOutboundTrunkUpdate + (*GetSIPInboundTrunkRequest)(nil), // 13: livekit.GetSIPInboundTrunkRequest + (*GetSIPInboundTrunkResponse)(nil), // 14: livekit.GetSIPInboundTrunkResponse + (*GetSIPOutboundTrunkRequest)(nil), // 15: livekit.GetSIPOutboundTrunkRequest + (*GetSIPOutboundTrunkResponse)(nil), // 16: livekit.GetSIPOutboundTrunkResponse + (*ListSIPTrunkRequest)(nil), // 17: livekit.ListSIPTrunkRequest + (*ListSIPTrunkResponse)(nil), // 18: livekit.ListSIPTrunkResponse + (*ListSIPInboundTrunkRequest)(nil), // 19: livekit.ListSIPInboundTrunkRequest + (*ListSIPInboundTrunkResponse)(nil), // 20: livekit.ListSIPInboundTrunkResponse + (*ListSIPOutboundTrunkRequest)(nil), // 21: livekit.ListSIPOutboundTrunkRequest + (*ListSIPOutboundTrunkResponse)(nil), // 22: livekit.ListSIPOutboundTrunkResponse + (*DeleteSIPTrunkRequest)(nil), // 23: livekit.DeleteSIPTrunkRequest + (*SIPDispatchRuleDirect)(nil), // 24: livekit.SIPDispatchRuleDirect + (*SIPDispatchRuleIndividual)(nil), // 25: livekit.SIPDispatchRuleIndividual + (*SIPDispatchRuleCallee)(nil), // 26: livekit.SIPDispatchRuleCallee + (*SIPDispatchRule)(nil), // 27: livekit.SIPDispatchRule + (*CreateSIPDispatchRuleRequest)(nil), // 28: livekit.CreateSIPDispatchRuleRequest + (*UpdateSIPDispatchRuleRequest)(nil), // 29: livekit.UpdateSIPDispatchRuleRequest + (*SIPDispatchRuleInfo)(nil), // 30: livekit.SIPDispatchRuleInfo + (*SIPDispatchRuleUpdate)(nil), // 31: livekit.SIPDispatchRuleUpdate + (*ListSIPDispatchRuleRequest)(nil), // 32: livekit.ListSIPDispatchRuleRequest + (*ListSIPDispatchRuleResponse)(nil), // 33: livekit.ListSIPDispatchRuleResponse + (*DeleteSIPDispatchRuleRequest)(nil), // 34: livekit.DeleteSIPDispatchRuleRequest + (*CreateSIPParticipantRequest)(nil), // 35: livekit.CreateSIPParticipantRequest + (*SIPParticipantInfo)(nil), // 36: livekit.SIPParticipantInfo + (*TransferSIPParticipantRequest)(nil), // 37: livekit.TransferSIPParticipantRequest + (*SIPCallInfo)(nil), // 38: livekit.SIPCallInfo + (*SIPUri)(nil), // 39: livekit.SIPUri + nil, // 40: livekit.SIPInboundTrunkInfo.HeadersEntry + nil, // 41: livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + nil, // 42: livekit.SIPOutboundTrunkInfo.HeadersEntry + nil, // 43: livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + nil, // 44: livekit.CreateSIPDispatchRuleRequest.AttributesEntry + nil, // 45: livekit.SIPDispatchRuleInfo.AttributesEntry + nil, // 46: livekit.SIPDispatchRuleUpdate.AttributesEntry + nil, // 47: livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + (*durationpb.Duration)(nil), // 48: google.protobuf.Duration + (*ListUpdate)(nil), // 49: livekit.ListUpdate + (DisconnectReason)(0), // 50: livekit.DisconnectReason + (*emptypb.Empty)(nil), // 51: google.protobuf.Empty } var file_livekit_sip_proto_depIdxs = []int32{ 2, // 0: livekit.SIPTrunkInfo.kind:type_name -> livekit.SIPTrunkInfo.TrunkKind 0, // 1: livekit.SIPTrunkInfo.transport:type_name -> livekit.SIPTransport - 6, // 2: livekit.CreateSIPInboundTrunkRequest.trunk:type_name -> livekit.SIPInboundTrunkInfo - 34, // 3: livekit.SIPInboundTrunkInfo.headers:type_name -> livekit.SIPInboundTrunkInfo.HeadersEntry - 35, // 4: livekit.SIPInboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry - 41, // 5: livekit.SIPInboundTrunkInfo.ringing_timeout:type_name -> google.protobuf.Duration - 41, // 6: livekit.SIPInboundTrunkInfo.max_call_duration:type_name -> google.protobuf.Duration - 8, // 7: livekit.CreateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo - 0, // 8: livekit.SIPOutboundTrunkInfo.transport:type_name -> livekit.SIPTransport - 36, // 9: livekit.SIPOutboundTrunkInfo.headers:type_name -> livekit.SIPOutboundTrunkInfo.HeadersEntry - 37, // 10: livekit.SIPOutboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry - 6, // 11: livekit.GetSIPInboundTrunkResponse.trunk:type_name -> livekit.SIPInboundTrunkInfo - 8, // 12: livekit.GetSIPOutboundTrunkResponse.trunk:type_name -> livekit.SIPOutboundTrunkInfo - 4, // 13: livekit.ListSIPTrunkResponse.items:type_name -> livekit.SIPTrunkInfo - 6, // 14: livekit.ListSIPInboundTrunkResponse.items:type_name -> livekit.SIPInboundTrunkInfo - 8, // 15: livekit.ListSIPOutboundTrunkResponse.items:type_name -> livekit.SIPOutboundTrunkInfo - 20, // 16: livekit.SIPDispatchRule.dispatch_rule_direct:type_name -> livekit.SIPDispatchRuleDirect - 21, // 17: livekit.SIPDispatchRule.dispatch_rule_individual:type_name -> livekit.SIPDispatchRuleIndividual - 22, // 18: livekit.SIPDispatchRule.dispatch_rule_callee:type_name -> livekit.SIPDispatchRuleCallee - 23, // 19: livekit.CreateSIPDispatchRuleRequest.rule:type_name -> livekit.SIPDispatchRule - 38, // 20: livekit.CreateSIPDispatchRuleRequest.attributes:type_name -> livekit.CreateSIPDispatchRuleRequest.AttributesEntry - 23, // 21: livekit.SIPDispatchRuleInfo.rule:type_name -> livekit.SIPDispatchRule - 39, // 22: livekit.SIPDispatchRuleInfo.attributes:type_name -> livekit.SIPDispatchRuleInfo.AttributesEntry - 25, // 23: livekit.ListSIPDispatchRuleResponse.items:type_name -> livekit.SIPDispatchRuleInfo - 40, // 24: livekit.CreateSIPParticipantRequest.participant_attributes:type_name -> livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry - 41, // 25: livekit.CreateSIPParticipantRequest.ringing_timeout:type_name -> google.protobuf.Duration - 41, // 26: livekit.CreateSIPParticipantRequest.max_call_duration:type_name -> google.protobuf.Duration - 33, // 27: livekit.SIPCallInfo.from_uri:type_name -> livekit.SIPUri - 33, // 28: livekit.SIPCallInfo.to_uri:type_name -> livekit.SIPUri - 1, // 29: livekit.SIPCallInfo.call_status:type_name -> livekit.SIPCallStatus - 42, // 30: livekit.SIPCallInfo.disconnect_reason:type_name -> livekit.DisconnectReason - 0, // 31: livekit.SIPUri.transport:type_name -> livekit.SIPTransport - 13, // 32: livekit.SIP.ListSIPTrunk:input_type -> livekit.ListSIPTrunkRequest - 5, // 33: livekit.SIP.CreateSIPInboundTrunk:input_type -> livekit.CreateSIPInboundTrunkRequest - 7, // 34: livekit.SIP.CreateSIPOutboundTrunk:input_type -> livekit.CreateSIPOutboundTrunkRequest - 9, // 35: livekit.SIP.GetSIPInboundTrunk:input_type -> livekit.GetSIPInboundTrunkRequest - 11, // 36: livekit.SIP.GetSIPOutboundTrunk:input_type -> livekit.GetSIPOutboundTrunkRequest - 15, // 37: livekit.SIP.ListSIPInboundTrunk:input_type -> livekit.ListSIPInboundTrunkRequest - 17, // 38: livekit.SIP.ListSIPOutboundTrunk:input_type -> livekit.ListSIPOutboundTrunkRequest - 19, // 39: livekit.SIP.DeleteSIPTrunk:input_type -> livekit.DeleteSIPTrunkRequest - 24, // 40: livekit.SIP.CreateSIPDispatchRule:input_type -> livekit.CreateSIPDispatchRuleRequest - 26, // 41: livekit.SIP.ListSIPDispatchRule:input_type -> livekit.ListSIPDispatchRuleRequest - 28, // 42: livekit.SIP.DeleteSIPDispatchRule:input_type -> livekit.DeleteSIPDispatchRuleRequest - 29, // 43: livekit.SIP.CreateSIPParticipant:input_type -> livekit.CreateSIPParticipantRequest - 31, // 44: livekit.SIP.TransferSIPParticipant:input_type -> livekit.TransferSIPParticipantRequest - 14, // 45: livekit.SIP.ListSIPTrunk:output_type -> livekit.ListSIPTrunkResponse - 6, // 46: livekit.SIP.CreateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo - 8, // 47: livekit.SIP.CreateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo - 10, // 48: livekit.SIP.GetSIPInboundTrunk:output_type -> livekit.GetSIPInboundTrunkResponse - 12, // 49: livekit.SIP.GetSIPOutboundTrunk:output_type -> livekit.GetSIPOutboundTrunkResponse - 16, // 50: livekit.SIP.ListSIPInboundTrunk:output_type -> livekit.ListSIPInboundTrunkResponse - 18, // 51: livekit.SIP.ListSIPOutboundTrunk:output_type -> livekit.ListSIPOutboundTrunkResponse - 4, // 52: livekit.SIP.DeleteSIPTrunk:output_type -> livekit.SIPTrunkInfo - 25, // 53: livekit.SIP.CreateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo - 27, // 54: livekit.SIP.ListSIPDispatchRule:output_type -> livekit.ListSIPDispatchRuleResponse - 25, // 55: livekit.SIP.DeleteSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo - 30, // 56: livekit.SIP.CreateSIPParticipant:output_type -> livekit.SIPParticipantInfo - 43, // 57: livekit.SIP.TransferSIPParticipant:output_type -> google.protobuf.Empty - 45, // [45:58] is the sub-list for method output_type - 32, // [32:45] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 7, // 2: livekit.CreateSIPInboundTrunkRequest.trunk:type_name -> livekit.SIPInboundTrunkInfo + 7, // 3: livekit.UpdateSIPInboundTrunkRequest.replace:type_name -> livekit.SIPInboundTrunkInfo + 8, // 4: livekit.UpdateSIPInboundTrunkRequest.update:type_name -> livekit.SIPInboundTrunkUpdate + 40, // 5: livekit.SIPInboundTrunkInfo.headers:type_name -> livekit.SIPInboundTrunkInfo.HeadersEntry + 41, // 6: livekit.SIPInboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + 48, // 7: livekit.SIPInboundTrunkInfo.ringing_timeout:type_name -> google.protobuf.Duration + 48, // 8: livekit.SIPInboundTrunkInfo.max_call_duration:type_name -> google.protobuf.Duration + 49, // 9: livekit.SIPInboundTrunkUpdate.numbers:type_name -> livekit.ListUpdate + 49, // 10: livekit.SIPInboundTrunkUpdate.allowed_addresses:type_name -> livekit.ListUpdate + 49, // 11: livekit.SIPInboundTrunkUpdate.allowed_numbers:type_name -> livekit.ListUpdate + 11, // 12: livekit.CreateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 11, // 13: livekit.UpdateSIPOutboundTrunkRequest.replace:type_name -> livekit.SIPOutboundTrunkInfo + 12, // 14: livekit.UpdateSIPOutboundTrunkRequest.update:type_name -> livekit.SIPOutboundTrunkUpdate + 0, // 15: livekit.SIPOutboundTrunkInfo.transport:type_name -> livekit.SIPTransport + 42, // 16: livekit.SIPOutboundTrunkInfo.headers:type_name -> livekit.SIPOutboundTrunkInfo.HeadersEntry + 43, // 17: livekit.SIPOutboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + 0, // 18: livekit.SIPOutboundTrunkUpdate.transport:type_name -> livekit.SIPTransport + 49, // 19: livekit.SIPOutboundTrunkUpdate.numbers:type_name -> livekit.ListUpdate + 7, // 20: livekit.GetSIPInboundTrunkResponse.trunk:type_name -> livekit.SIPInboundTrunkInfo + 11, // 21: livekit.GetSIPOutboundTrunkResponse.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 4, // 22: livekit.ListSIPTrunkResponse.items:type_name -> livekit.SIPTrunkInfo + 7, // 23: livekit.ListSIPInboundTrunkResponse.items:type_name -> livekit.SIPInboundTrunkInfo + 11, // 24: livekit.ListSIPOutboundTrunkResponse.items:type_name -> livekit.SIPOutboundTrunkInfo + 24, // 25: livekit.SIPDispatchRule.dispatch_rule_direct:type_name -> livekit.SIPDispatchRuleDirect + 25, // 26: livekit.SIPDispatchRule.dispatch_rule_individual:type_name -> livekit.SIPDispatchRuleIndividual + 26, // 27: livekit.SIPDispatchRule.dispatch_rule_callee:type_name -> livekit.SIPDispatchRuleCallee + 30, // 28: livekit.CreateSIPDispatchRuleRequest.dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 27, // 29: livekit.CreateSIPDispatchRuleRequest.rule:type_name -> livekit.SIPDispatchRule + 44, // 30: livekit.CreateSIPDispatchRuleRequest.attributes:type_name -> livekit.CreateSIPDispatchRuleRequest.AttributesEntry + 30, // 31: livekit.UpdateSIPDispatchRuleRequest.replace:type_name -> livekit.SIPDispatchRuleInfo + 31, // 32: livekit.UpdateSIPDispatchRuleRequest.update:type_name -> livekit.SIPDispatchRuleUpdate + 27, // 33: livekit.SIPDispatchRuleInfo.rule:type_name -> livekit.SIPDispatchRule + 45, // 34: livekit.SIPDispatchRuleInfo.attributes:type_name -> livekit.SIPDispatchRuleInfo.AttributesEntry + 49, // 35: livekit.SIPDispatchRuleUpdate.trunk_ids:type_name -> livekit.ListUpdate + 27, // 36: livekit.SIPDispatchRuleUpdate.rule:type_name -> livekit.SIPDispatchRule + 46, // 37: livekit.SIPDispatchRuleUpdate.attributes:type_name -> livekit.SIPDispatchRuleUpdate.AttributesEntry + 30, // 38: livekit.ListSIPDispatchRuleResponse.items:type_name -> livekit.SIPDispatchRuleInfo + 47, // 39: livekit.CreateSIPParticipantRequest.participant_attributes:type_name -> livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + 48, // 40: livekit.CreateSIPParticipantRequest.ringing_timeout:type_name -> google.protobuf.Duration + 48, // 41: livekit.CreateSIPParticipantRequest.max_call_duration:type_name -> google.protobuf.Duration + 39, // 42: livekit.SIPCallInfo.from_uri:type_name -> livekit.SIPUri + 39, // 43: livekit.SIPCallInfo.to_uri:type_name -> livekit.SIPUri + 1, // 44: livekit.SIPCallInfo.call_status:type_name -> livekit.SIPCallStatus + 50, // 45: livekit.SIPCallInfo.disconnect_reason:type_name -> livekit.DisconnectReason + 0, // 46: livekit.SIPUri.transport:type_name -> livekit.SIPTransport + 17, // 47: livekit.SIP.ListSIPTrunk:input_type -> livekit.ListSIPTrunkRequest + 5, // 48: livekit.SIP.CreateSIPInboundTrunk:input_type -> livekit.CreateSIPInboundTrunkRequest + 9, // 49: livekit.SIP.CreateSIPOutboundTrunk:input_type -> livekit.CreateSIPOutboundTrunkRequest + 6, // 50: livekit.SIP.UpdateSIPInboundTrunk:input_type -> livekit.UpdateSIPInboundTrunkRequest + 10, // 51: livekit.SIP.UpdateSIPOutboundTrunk:input_type -> livekit.UpdateSIPOutboundTrunkRequest + 13, // 52: livekit.SIP.GetSIPInboundTrunk:input_type -> livekit.GetSIPInboundTrunkRequest + 15, // 53: livekit.SIP.GetSIPOutboundTrunk:input_type -> livekit.GetSIPOutboundTrunkRequest + 19, // 54: livekit.SIP.ListSIPInboundTrunk:input_type -> livekit.ListSIPInboundTrunkRequest + 21, // 55: livekit.SIP.ListSIPOutboundTrunk:input_type -> livekit.ListSIPOutboundTrunkRequest + 23, // 56: livekit.SIP.DeleteSIPTrunk:input_type -> livekit.DeleteSIPTrunkRequest + 28, // 57: livekit.SIP.CreateSIPDispatchRule:input_type -> livekit.CreateSIPDispatchRuleRequest + 29, // 58: livekit.SIP.UpdateSIPDispatchRule:input_type -> livekit.UpdateSIPDispatchRuleRequest + 32, // 59: livekit.SIP.ListSIPDispatchRule:input_type -> livekit.ListSIPDispatchRuleRequest + 34, // 60: livekit.SIP.DeleteSIPDispatchRule:input_type -> livekit.DeleteSIPDispatchRuleRequest + 35, // 61: livekit.SIP.CreateSIPParticipant:input_type -> livekit.CreateSIPParticipantRequest + 37, // 62: livekit.SIP.TransferSIPParticipant:input_type -> livekit.TransferSIPParticipantRequest + 18, // 63: livekit.SIP.ListSIPTrunk:output_type -> livekit.ListSIPTrunkResponse + 7, // 64: livekit.SIP.CreateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 11, // 65: livekit.SIP.CreateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 7, // 66: livekit.SIP.UpdateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 11, // 67: livekit.SIP.UpdateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 14, // 68: livekit.SIP.GetSIPInboundTrunk:output_type -> livekit.GetSIPInboundTrunkResponse + 16, // 69: livekit.SIP.GetSIPOutboundTrunk:output_type -> livekit.GetSIPOutboundTrunkResponse + 20, // 70: livekit.SIP.ListSIPInboundTrunk:output_type -> livekit.ListSIPInboundTrunkResponse + 22, // 71: livekit.SIP.ListSIPOutboundTrunk:output_type -> livekit.ListSIPOutboundTrunkResponse + 4, // 72: livekit.SIP.DeleteSIPTrunk:output_type -> livekit.SIPTrunkInfo + 30, // 73: livekit.SIP.CreateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 30, // 74: livekit.SIP.UpdateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 33, // 75: livekit.SIP.ListSIPDispatchRule:output_type -> livekit.ListSIPDispatchRuleResponse + 30, // 76: livekit.SIP.DeleteSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 36, // 77: livekit.SIP.CreateSIPParticipant:output_type -> livekit.SIPParticipantInfo + 51, // 78: livekit.SIP.TransferSIPParticipant:output_type -> google.protobuf.Empty + 63, // [63:79] is the sub-list for method output_type + 47, // [47:63] is the sub-list for method input_type + 47, // [47:47] is the sub-list for extension type_name + 47, // [47:47] is the sub-list for extension extendee + 0, // [0:47] is the sub-list for field type_name } func init() { file_livekit_sip_proto_init() } @@ -3132,18 +3845,33 @@ func file_livekit_sip_proto_init() { return } file_livekit_models_proto_init() - file_livekit_sip_proto_msgTypes[20].OneofWrappers = []any{ + file_livekit_sip_proto_msgTypes[3].OneofWrappers = []any{ + (*UpdateSIPInboundTrunkRequest_Replace)(nil), + (*UpdateSIPInboundTrunkRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[5].OneofWrappers = []any{} + file_livekit_sip_proto_msgTypes[7].OneofWrappers = []any{ + (*UpdateSIPOutboundTrunkRequest_Replace)(nil), + (*UpdateSIPOutboundTrunkRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[9].OneofWrappers = []any{} + file_livekit_sip_proto_msgTypes[24].OneofWrappers = []any{ (*SIPDispatchRule_DispatchRuleDirect)(nil), (*SIPDispatchRule_DispatchRuleIndividual)(nil), (*SIPDispatchRule_DispatchRuleCallee)(nil), } + file_livekit_sip_proto_msgTypes[26].OneofWrappers = []any{ + (*UpdateSIPDispatchRuleRequest_Replace)(nil), + (*UpdateSIPDispatchRuleRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[28].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_sip_proto_rawDesc, NumEnums: 3, - NumMessages: 38, + NumMessages: 45, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_sip.twirp.go b/livekit/livekit_sip.twirp.go index b70aa7fe..88e074be 100644 --- a/livekit/livekit_sip.twirp.go +++ b/livekit/livekit_sip.twirp.go @@ -36,6 +36,10 @@ type SIP interface { CreateSIPOutboundTrunk(context.Context, *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) + UpdateSIPInboundTrunk(context.Context, *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) + + UpdateSIPOutboundTrunk(context.Context, *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) + GetSIPInboundTrunk(context.Context, *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) GetSIPOutboundTrunk(context.Context, *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) @@ -48,6 +52,8 @@ type SIP interface { CreateSIPDispatchRule(context.Context, *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) + UpdateSIPDispatchRule(context.Context, *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) + ListSIPDispatchRule(context.Context, *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) DeleteSIPDispatchRule(context.Context, *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) @@ -63,7 +69,7 @@ type SIP interface { type sIPProtobufClient struct { client HTTPClient - urls [13]string + urls [16]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -91,16 +97,19 @@ func NewSIPProtobufClient(baseURL string, client HTTPClient, opts ...twirp.Clien // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "SIP") - urls := [13]string{ + urls := [16]string{ serviceURL + "ListSIPTrunk", serviceURL + "CreateSIPInboundTrunk", serviceURL + "CreateSIPOutboundTrunk", + serviceURL + "UpdateSIPInboundTrunk", + serviceURL + "UpdateSIPOutboundTrunk", serviceURL + "GetSIPInboundTrunk", serviceURL + "GetSIPOutboundTrunk", serviceURL + "ListSIPInboundTrunk", serviceURL + "ListSIPOutboundTrunk", serviceURL + "DeleteSIPTrunk", serviceURL + "CreateSIPDispatchRule", + serviceURL + "UpdateSIPDispatchRule", serviceURL + "ListSIPDispatchRule", serviceURL + "DeleteSIPDispatchRule", serviceURL + "CreateSIPParticipant", @@ -253,6 +262,98 @@ func (c *sIPProtobufClient) callCreateSIPOutboundTrunk(ctx context.Context, in * return out, nil } +func (c *sIPProtobufClient) UpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") + caller := c.callUpdateSIPInboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + out := new(SIPInboundTrunkInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPProtobufClient) UpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") + caller := c.callUpdateSIPOutboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPOutboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPOutboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + out := new(SIPOutboundTrunkInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *sIPProtobufClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") @@ -284,7 +385,7 @@ func (c *sIPProtobufClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPIn func (c *sIPProtobufClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { out := new(GetSIPInboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -330,7 +431,7 @@ func (c *sIPProtobufClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPO func (c *sIPProtobufClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) { out := new(GetSIPOutboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -376,7 +477,7 @@ func (c *sIPProtobufClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIP func (c *sIPProtobufClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) { out := new(ListSIPInboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -422,7 +523,7 @@ func (c *sIPProtobufClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSI func (c *sIPProtobufClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) { out := new(ListSIPOutboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -468,7 +569,7 @@ func (c *sIPProtobufClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTru func (c *sIPProtobufClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) { out := new(SIPTrunkInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -514,7 +615,53 @@ func (c *sIPProtobufClient) CreateSIPDispatchRule(ctx context.Context, in *Creat func (c *sIPProtobufClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPProtobufClient) UpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + caller := c.callUpdateSIPDispatchRule + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return c.callUpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + out := new(SIPDispatchRuleInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -560,7 +707,7 @@ func (c *sIPProtobufClient) ListSIPDispatchRule(ctx context.Context, in *ListSIP func (c *sIPProtobufClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { out := new(ListSIPDispatchRuleResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -606,7 +753,7 @@ func (c *sIPProtobufClient) DeleteSIPDispatchRule(ctx context.Context, in *Delet func (c *sIPProtobufClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -652,7 +799,7 @@ func (c *sIPProtobufClient) CreateSIPParticipant(ctx context.Context, in *Create func (c *sIPProtobufClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) { out := new(SIPParticipantInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -698,7 +845,7 @@ func (c *sIPProtobufClient) TransferSIPParticipant(ctx context.Context, in *Tran func (c *sIPProtobufClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) { out := new(google_protobuf2.Empty) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -719,7 +866,7 @@ func (c *sIPProtobufClient) callTransferSIPParticipant(ctx context.Context, in * type sIPJSONClient struct { client HTTPClient - urls [13]string + urls [16]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -747,16 +894,19 @@ func NewSIPJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientOpt // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "SIP") - urls := [13]string{ + urls := [16]string{ serviceURL + "ListSIPTrunk", serviceURL + "CreateSIPInboundTrunk", serviceURL + "CreateSIPOutboundTrunk", + serviceURL + "UpdateSIPInboundTrunk", + serviceURL + "UpdateSIPOutboundTrunk", serviceURL + "GetSIPInboundTrunk", serviceURL + "GetSIPOutboundTrunk", serviceURL + "ListSIPInboundTrunk", serviceURL + "ListSIPOutboundTrunk", serviceURL + "DeleteSIPTrunk", serviceURL + "CreateSIPDispatchRule", + serviceURL + "UpdateSIPDispatchRule", serviceURL + "ListSIPDispatchRule", serviceURL + "DeleteSIPDispatchRule", serviceURL + "CreateSIPParticipant", @@ -909,6 +1059,98 @@ func (c *sIPJSONClient) callCreateSIPOutboundTrunk(ctx context.Context, in *Crea return out, nil } +func (c *sIPJSONClient) UpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") + caller := c.callUpdateSIPInboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callUpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + out := new(SIPInboundTrunkInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPJSONClient) UpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") + caller := c.callUpdateSIPOutboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPOutboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPOutboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callUpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + out := new(SIPOutboundTrunkInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *sIPJSONClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") @@ -940,7 +1182,7 @@ func (c *sIPJSONClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboun func (c *sIPJSONClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { out := new(GetSIPInboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -986,7 +1228,7 @@ func (c *sIPJSONClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutbo func (c *sIPJSONClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) { out := new(GetSIPOutboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1032,7 +1274,7 @@ func (c *sIPJSONClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIPInbo func (c *sIPJSONClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) { out := new(ListSIPInboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1078,7 +1320,7 @@ func (c *sIPJSONClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSIPOut func (c *sIPJSONClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) { out := new(ListSIPOutboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1124,7 +1366,7 @@ func (c *sIPJSONClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRe func (c *sIPJSONClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) { out := new(SIPTrunkInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1170,7 +1412,7 @@ func (c *sIPJSONClient) CreateSIPDispatchRule(ctx context.Context, in *CreateSIP func (c *sIPJSONClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1185,26 +1427,26 @@ func (c *sIPJSONClient) callCreateSIPDispatchRule(ctx context.Context, in *Creat return out, nil } -func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { +func (c *sIPJSONClient) UpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") - ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule") - caller := c.callListSIPDispatchRule + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + caller := c.callUpdateSIPDispatchRule if c.interceptor != nil { - caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { + caller = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPDispatchRuleRequest) + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") } - return c.callListSIPDispatchRule(ctx, typedReq) + return c.callUpdateSIPDispatchRule(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPDispatchRuleResponse) + typedResp, ok := resp.(*SIPDispatchRuleInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") } return typedResp, err } @@ -1214,9 +1456,9 @@ func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDisp return caller(ctx, in) } -func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { - out := new(ListSIPDispatchRuleResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) +func (c *sIPJSONClient) callUpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + out := new(SIPDispatchRuleInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1231,26 +1473,72 @@ func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIP return out, nil } -func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { +func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") - ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule") - caller := c.callDeleteSIPDispatchRule + ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule") + caller := c.callListSIPDispatchRule if c.interceptor != nil { - caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*DeleteSIPDispatchRuleRequest) + typedReq, ok := req.(*ListSIPDispatchRuleRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor") } - return c.callDeleteSIPDispatchRule(ctx, typedReq) + return c.callListSIPDispatchRule(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*SIPDispatchRuleInfo) + typedResp, ok := resp.(*ListSIPDispatchRuleResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { + out := new(ListSIPDispatchRuleResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule") + caller := c.callDeleteSIPDispatchRule + if c.interceptor != nil { + caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*DeleteSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor") + } + return c.callDeleteSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") } return typedResp, err } @@ -1262,7 +1550,7 @@ func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIP func (c *sIPJSONClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1308,7 +1596,7 @@ func (c *sIPJSONClient) CreateSIPParticipant(ctx context.Context, in *CreateSIPP func (c *sIPJSONClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) { out := new(SIPParticipantInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1354,7 +1642,7 @@ func (c *sIPJSONClient) TransferSIPParticipant(ctx context.Context, in *Transfer func (c *sIPJSONClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) { out := new(google_protobuf2.Empty) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1475,6 +1763,12 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { case "CreateSIPOutboundTrunk": s.serveCreateSIPOutboundTrunk(ctx, resp, req) return + case "UpdateSIPInboundTrunk": + s.serveUpdateSIPInboundTrunk(ctx, resp, req) + return + case "UpdateSIPOutboundTrunk": + s.serveUpdateSIPOutboundTrunk(ctx, resp, req) + return case "GetSIPInboundTrunk": s.serveGetSIPInboundTrunk(ctx, resp, req) return @@ -1493,6 +1787,9 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { case "CreateSIPDispatchRule": s.serveCreateSIPDispatchRule(ctx, resp, req) return + case "UpdateSIPDispatchRule": + s.serveUpdateSIPDispatchRule(ctx, resp, req) + return case "ListSIPDispatchRule": s.serveListSIPDispatchRule(ctx, resp, req) return @@ -1512,7 +1809,367 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { } } -func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveListSIPTrunkJSON(ctx, resp, req) + case "application/protobuf": + s.serveListSIPTrunkProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(ListSIPTrunkRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.ListSIPTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListSIPTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + } + return s.SIP.ListSIPTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListSIPTrunkResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListSIPTrunkResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(ListSIPTrunkRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.ListSIPTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListSIPTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + } + return s.SIP.ListSIPTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListSIPTrunkResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListSIPTrunkResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveCreateSIPInboundTrunkJSON(ctx, resp, req) + case "application/protobuf": + s.serveCreateSIPInboundTrunkProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(CreateSIPInboundTrunkRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.CreateSIPInboundTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + } + return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPInboundTrunkInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(CreateSIPInboundTrunkRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.CreateSIPInboundTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + } + return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPInboundTrunkInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1520,9 +2177,9 @@ func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWri } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveListSIPTrunkJSON(ctx, resp, req) + s.serveCreateSIPOutboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveListSIPTrunkProtobuf(ctx, resp, req) + s.serveCreateSIPOutboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1530,9 +2187,9 @@ func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWri } } -func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1545,29 +2202,29 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(ListSIPTrunkRequest) + reqContent := new(CreateSIPOutboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.ListSIPTrunk + handler := s.SIP.CreateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPTrunkRequest) + typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.ListSIPTrunk(ctx, typedReq) + return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPTrunkResponse) + typedResp, ok := resp.(*SIPOutboundTrunkInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") } return typedResp, err } @@ -1576,7 +2233,7 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons } // Call service method - var respContent *ListSIPTrunkResponse + var respContent *SIPOutboundTrunkInfo func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1587,7 +2244,7 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1613,9 +2270,9 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1627,28 +2284,28 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(ListSIPTrunkRequest) + reqContent := new(CreateSIPOutboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.ListSIPTrunk + handler := s.SIP.CreateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPTrunkRequest) + typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.ListSIPTrunk(ctx, typedReq) + return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPTrunkResponse) + typedResp, ok := resp.(*SIPOutboundTrunkInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") } return typedResp, err } @@ -1657,7 +2314,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res } // Call service method - var respContent *ListSIPTrunkResponse + var respContent *SIPOutboundTrunkInfo func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1668,7 +2325,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1692,7 +2349,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1700,9 +2357,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.Re } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveCreateSIPInboundTrunkJSON(ctx, resp, req) + s.serveUpdateSIPInboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveCreateSIPInboundTrunkProtobuf(ctx, resp, req) + s.serveUpdateSIPInboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1710,9 +2367,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.Re } } -func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1725,23 +2382,23 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(CreateSIPInboundTrunkRequest) + reqContent := new(UpdateSIPInboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.CreateSIPInboundTrunk + handler := s.SIP.UpdateSIPInboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPInboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1767,7 +2424,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling UpdateSIPInboundTrunk. nil responses are not supported")) return } @@ -1793,9 +2450,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1807,22 +2464,22 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(CreateSIPInboundTrunkRequest) + reqContent := new(UpdateSIPInboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.CreateSIPInboundTrunk + handler := s.SIP.UpdateSIPInboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPInboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1848,7 +2505,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling UpdateSIPInboundTrunk. nil responses are not supported")) return } @@ -1872,7 +2529,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1880,9 +2537,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.R } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveCreateSIPOutboundTrunkJSON(ctx, resp, req) + s.serveUpdateSIPOutboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveCreateSIPOutboundTrunkProtobuf(ctx, resp, req) + s.serveUpdateSIPOutboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1890,9 +2547,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.R } } -func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1905,23 +2562,23 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(CreateSIPOutboundTrunkRequest) + reqContent := new(UpdateSIPOutboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.CreateSIPOutboundTrunk + handler := s.SIP.UpdateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1947,7 +2604,7 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling UpdateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1973,9 +2630,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1987,22 +2644,22 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, res s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(CreateSIPOutboundTrunkRequest) + reqContent := new(UpdateSIPOutboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.CreateSIPOutboundTrunk + handler := s.SIP.UpdateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -2028,7 +2685,7 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, res return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling UpdateSIPOutboundTrunk. nil responses are not supported")) return } @@ -3132,6 +3789,186 @@ func (s *sIPServer) serveCreateSIPDispatchRuleProtobuf(ctx context.Context, resp callResponseSent(ctx, s.hooks) } +func (s *sIPServer) serveUpdateSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveUpdateSIPDispatchRuleJSON(ctx, resp, req) + case "application/protobuf": + s.serveUpdateSIPDispatchRuleProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveUpdateSIPDispatchRuleJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(UpdateSIPDispatchRuleRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.UpdateSIPDispatchRule + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return s.SIP.UpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPDispatchRuleInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling UpdateSIPDispatchRule. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveUpdateSIPDispatchRuleProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(UpdateSIPDispatchRuleRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.UpdateSIPDispatchRule + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return s.SIP.UpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPDispatchRuleInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling UpdateSIPDispatchRule. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + func (s *sIPServer) serveListSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") @@ -3868,148 +4705,175 @@ func (s *sIPServer) PathPrefix() string { } var twirpFileDescriptor4 = []byte{ - // 2284 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xdd, 0x72, 0xe3, 0x58, - 0x11, 0x1e, 0xdb, 0xf1, 0x5f, 0x3b, 0x71, 0x9c, 0x93, 0x9f, 0x75, 0x9c, 0x64, 0x67, 0xf0, 0xec, - 0xec, 0xfc, 0xec, 0x96, 0xa7, 0xf0, 0x14, 0x0b, 0x4c, 0xd5, 0x42, 0x79, 0x6c, 0xcf, 0x8c, 0x99, - 0xac, 0x6d, 0x64, 0x87, 0x62, 0xa9, 0x05, 0xa1, 0x58, 0x27, 0xc9, 0x21, 0xb6, 0x24, 0xa4, 0xe3, - 0xcc, 0x84, 0x6b, 0xa8, 0x82, 0xe2, 0x29, 0x28, 0xaa, 0xb8, 0x80, 0x6b, 0x6e, 0x78, 0x0b, 0x1e, - 0x80, 0x17, 0xe0, 0x82, 0x67, 0xa0, 0xce, 0x8f, 0x64, 0x49, 0x96, 0x14, 0x67, 0x60, 0xab, 0xf6, - 0x4e, 0xea, 0xee, 0xd3, 0xa7, 0xd5, 0xfd, 0x75, 0xf7, 0xe9, 0x63, 0xc3, 0xd6, 0x94, 0x5c, 0xe1, - 0x4b, 0x42, 0x55, 0x87, 0x58, 0x0d, 0xcb, 0x36, 0xa9, 0x89, 0xf2, 0x92, 0x54, 0xfb, 0xf0, 0xdc, - 0x34, 0xcf, 0xa7, 0xf8, 0x29, 0x27, 0x9f, 0xce, 0xcf, 0x9e, 0xea, 0x73, 0x5b, 0xa3, 0xc4, 0x34, - 0x84, 0x60, 0xed, 0x20, 0xcc, 0xc7, 0x33, 0x8b, 0x5e, 0x4b, 0xe6, 0x8e, 0xab, 0x78, 0x66, 0xea, - 0x78, 0xea, 0x08, 0x6a, 0xfd, 0x5f, 0x19, 0xd8, 0x6d, 0xdb, 0x58, 0xa3, 0x78, 0xd4, 0x1b, 0x8e, - 0xed, 0xb9, 0x71, 0xa9, 0xe0, 0x5f, 0xcf, 0xb1, 0x43, 0xd1, 0x27, 0xb0, 0x45, 0x8c, 0x53, 0x73, - 0x6e, 0xe8, 0xaa, 0xa6, 0xeb, 0x36, 0x76, 0x1c, 0xec, 0x54, 0x53, 0xf7, 0x32, 0x8f, 0x8a, 0x4a, - 0x45, 0x32, 0x5a, 0x2e, 0x1d, 0x3d, 0x86, 0x8a, 0x39, 0xa7, 0x01, 0xe9, 0x6a, 0xfa, 0x5e, 0xea, - 0x51, 0x51, 0xd9, 0x74, 0xe9, 0x52, 0x18, 0x3d, 0x04, 0x8f, 0xa4, 0x1a, 0xf3, 0xd9, 0x29, 0xb6, - 0xab, 0x19, 0x2e, 0x59, 0x76, 0xc9, 0x7d, 0x4e, 0x45, 0x9f, 0xc1, 0xae, 0x6b, 0x80, 0x90, 0x73, - 0x54, 0x1b, 0x9f, 0xe3, 0x77, 0xd5, 0x35, 0x66, 0xc4, 0x8b, 0x74, 0x35, 0xa5, 0x6c, 0x4b, 0x01, - 0xb1, 0xc2, 0x51, 0x18, 0x9b, 0x6d, 0x10, 0x5a, 0x57, 0x2d, 0x72, 0xb3, 0xcb, 0x41, 0x69, 0x66, - 0xb4, 0x2b, 0x38, 0x77, 0xb0, 0x6d, 0x68, 0x33, 0x5c, 0xcd, 0x0a, 0xa3, 0x25, 0xfd, 0x44, 0x92, - 0xfd, 0xa2, 0x96, 0xe6, 0x38, 0x6f, 0x4d, 0x5b, 0xaf, 0xe6, 0x02, 0xa2, 0x43, 0x49, 0x66, 0x7e, - 0xf3, 0xbe, 0xcf, 0x53, 0x9b, 0xe7, 0xb2, 0x9e, 0x8f, 0x3c, 0xbd, 0x7e, 0x61, 0x4f, 0x71, 0x21, - 0x28, 0xec, 0x69, 0x46, 0xb0, 0xc6, 0x95, 0x01, 0xe7, 0xf3, 0x67, 0x54, 0x83, 0xc2, 0x0c, 0x53, - 0x4d, 0xd7, 0xa8, 0x56, 0x2d, 0x71, 0xba, 0xf7, 0xfe, 0x3c, 0x5d, 0x4d, 0xd5, 0xff, 0x92, 0x85, - 0x75, 0x37, 0xb2, 0x3d, 0xe3, 0xcc, 0x44, 0xf7, 0x60, 0xdd, 0x21, 0x96, 0x4a, 0x19, 0x41, 0x25, - 0x7a, 0x35, 0xc5, 0x17, 0x81, 0x43, 0x2c, 0x21, 0xa3, 0xa3, 0x67, 0xb0, 0x76, 0x49, 0x0c, 0xbd, - 0x5a, 0xbe, 0x97, 0x7a, 0x54, 0x6e, 0xde, 0x6d, 0x48, 0xdc, 0x34, 0xfc, 0x6a, 0x1a, 0xfc, 0xe9, - 0x0d, 0x31, 0x74, 0x85, 0x0b, 0x47, 0xa3, 0x25, 0x7d, 0x0b, 0xb4, 0x64, 0x56, 0x46, 0xcb, 0x5a, - 0x24, 0x5a, 0x9e, 0x41, 0x91, 0xda, 0x9a, 0xe1, 0x58, 0xa6, 0x4d, 0xab, 0x1b, 0xdc, 0xf4, 0xdd, - 0xa0, 0xe9, 0x92, 0xa9, 0x2c, 0xe4, 0xe2, 0x21, 0x96, 0xbd, 0x35, 0xc4, 0x60, 0x65, 0x88, 0xe5, - 0x56, 0x87, 0x58, 0xfe, 0x16, 0x10, 0x2b, 0xdc, 0x06, 0x62, 0xc5, 0x1b, 0x20, 0x56, 0x8a, 0x81, - 0xd8, 0x7a, 0x10, 0x62, 0xf5, 0x0e, 0x14, 0x3d, 0x24, 0xa0, 0x0a, 0xac, 0x8f, 0x95, 0x93, 0xfe, - 0x1b, 0xf5, 0xb8, 0xfb, 0xaa, 0xd5, 0xfe, 0xb2, 0x72, 0x07, 0x6d, 0xc1, 0x86, 0xa0, 0xf4, 0xfa, - 0x2f, 0x06, 0x27, 0xfd, 0x4e, 0x25, 0x85, 0x10, 0x94, 0x05, 0x69, 0x70, 0x32, 0x16, 0xb4, 0x34, - 0x07, 0xaa, 0x02, 0x87, 0x5e, 0x1d, 0xea, 0x89, 0xef, 0x0d, 0x94, 0xa3, 0x26, 0x64, 0x39, 0x66, - 0x39, 0x60, 0x4b, 0xcd, 0x43, 0x7f, 0x6c, 0xfd, 0xf2, 0x0c, 0x9d, 0x8a, 0x10, 0xad, 0xff, 0x2e, - 0x07, 0xdb, 0x11, 0xec, 0x15, 0x72, 0xc0, 0xf5, 0x43, 0x3a, 0xc6, 0x0f, 0x99, 0xa0, 0x1f, 0x50, - 0x15, 0xf2, 0x2e, 0x10, 0x78, 0x75, 0x52, 0xdc, 0x57, 0xe6, 0x7e, 0x6d, 0x3a, 0x35, 0xdf, 0x62, - 0x7f, 0x62, 0x64, 0x45, 0x62, 0x48, 0xc6, 0x22, 0x31, 0x1e, 0xc2, 0xa6, 0x2b, 0xec, 0xaa, 0xcb, - 0x09, 0x5c, 0x49, 0xb2, 0x8b, 0xab, 0xfb, 0xb0, 0xa1, 0xcd, 0xe9, 0x45, 0xb8, 0xc0, 0xac, 0x33, - 0xa2, 0x17, 0x79, 0x57, 0x28, 0x54, 0x58, 0xb8, 0x90, 0x17, 0xf1, 0x36, 0xe4, 0x2f, 0xb0, 0xa6, - 0xbb, 0x55, 0xb2, 0xd4, 0x7c, 0x9c, 0xe4, 0xd9, 0xc6, 0x6b, 0x21, 0xdb, 0x35, 0xa8, 0x7d, 0xad, - 0xb8, 0x2b, 0x11, 0x81, 0x5d, 0xf9, 0xa8, 0x52, 0x53, 0xd5, 0x28, 0xb5, 0xc9, 0xe9, 0x9c, 0x62, - 0x91, 0x15, 0xa5, 0xe6, 0x77, 0x56, 0x51, 0x39, 0x36, 0x5b, 0xde, 0x3a, 0xa1, 0x7e, 0xfb, 0x62, - 0x99, 0x83, 0x5e, 0xc0, 0xa6, 0x4d, 0x8c, 0x73, 0x62, 0x9c, 0xab, 0x94, 0xcc, 0xb0, 0x39, 0xa7, - 0x1c, 0xac, 0xa5, 0xe6, 0x7e, 0x43, 0x74, 0xbf, 0x86, 0xdb, 0xfd, 0x1a, 0x1d, 0xd9, 0x1d, 0x95, - 0xb2, 0x5c, 0x31, 0x16, 0x0b, 0x50, 0x17, 0xb6, 0x66, 0xda, 0x3b, 0x75, 0xa2, 0x4d, 0xa7, 0xaa, - 0xdb, 0x42, 0x39, 0xb4, 0x13, 0xb5, 0x6c, 0xce, 0xb4, 0x77, 0x6d, 0x6d, 0x3a, 0x75, 0x09, 0xcc, - 0xbf, 0x97, 0x36, 0x71, 0x2c, 0x15, 0x1b, 0xda, 0xe9, 0x14, 0xeb, 0xbc, 0xec, 0x14, 0x94, 0x75, - 0x4e, 0xec, 0x0a, 0x5a, 0xed, 0x39, 0xac, 0xfb, 0x7d, 0x86, 0x2a, 0x90, 0xb9, 0xc4, 0xd7, 0x12, - 0x72, 0xec, 0x11, 0xed, 0x40, 0xf6, 0x4a, 0x9b, 0xce, 0x5d, 0xb0, 0x89, 0x97, 0xe7, 0xe9, 0xef, - 0xa5, 0x6a, 0x2f, 0xa1, 0x1a, 0xe7, 0x9c, 0xdb, 0xe8, 0xa9, 0x8f, 0xe1, 0xc8, 0xcb, 0xad, 0x81, - 0x4c, 0xf9, 0x40, 0x72, 0x3d, 0x0b, 0x26, 0xd7, 0x91, 0x3f, 0x5e, 0x81, 0x05, 0xfe, 0xec, 0xfa, - 0xe7, 0x1a, 0xec, 0x44, 0xf1, 0xbf, 0x9e, 0xf4, 0x72, 0xfb, 0x84, 0xa8, 0xfe, 0xee, 0x6b, 0xb0, - 0xec, 0x67, 0x57, 0x2c, 0xfb, 0xbe, 0x6c, 0xcd, 0x05, 0xb3, 0xf5, 0xff, 0x97, 0x57, 0x9d, 0x70, - 0x5e, 0x3d, 0x49, 0x74, 0x6a, 0x4c, 0x62, 0xfd, 0x2a, 0x39, 0xb1, 0x3e, 0x5b, 0x49, 0xe7, 0x6a, - 0x99, 0xf5, 0x8d, 0x40, 0xea, 0xe7, 0xb0, 0xff, 0x0a, 0xd3, 0x98, 0x16, 0x70, 0x23, 0xae, 0xea, - 0x43, 0xa8, 0x45, 0x2d, 0x77, 0x2c, 0xd3, 0x70, 0xf0, 0x7b, 0xb5, 0x90, 0x1f, 0xb8, 0x1a, 0x23, - 0xf3, 0xe6, 0x66, 0x8b, 0x14, 0x38, 0x88, 0x5c, 0x2f, 0x4d, 0x7a, 0xaf, 0xc4, 0xdb, 0x87, 0xed, - 0x63, 0xe2, 0xd0, 0xd0, 0x81, 0x9d, 0x77, 0xd1, 0x57, 0xb0, 0x13, 0x64, 0xc9, 0x7d, 0x3e, 0x81, - 0x2c, 0xa1, 0x78, 0x26, 0x0e, 0xf0, 0xa5, 0x70, 0x8a, 0x78, 0xfa, 0xb9, 0x0c, 0x57, 0x74, 0x08, - 0x35, 0xa9, 0x28, 0x22, 0x12, 0xf5, 0x1f, 0xc3, 0x41, 0x24, 0x77, 0xe1, 0x68, 0xff, 0x6e, 0x37, - 0x38, 0x9a, 0x8b, 0xd6, 0x8f, 0x3c, 0x95, 0x51, 0x9e, 0xae, 0x8f, 0xe0, 0x30, 0x9a, 0xbd, 0x70, - 0xa4, 0x7f, 0xcb, 0x9b, 0x1c, 0x29, 0xf6, 0xfc, 0x3e, 0xec, 0x76, 0xf0, 0x14, 0x2f, 0xcf, 0x3e, - 0x37, 0xc7, 0xf5, 0x25, 0xec, 0x8e, 0x7a, 0xc3, 0x0e, 0x71, 0x2c, 0x8d, 0x4e, 0x2e, 0x94, 0xf9, - 0x14, 0x77, 0x88, 0x8d, 0x27, 0x14, 0x1d, 0x40, 0xd1, 0x36, 0xcd, 0x99, 0xca, 0xab, 0x87, 0x58, - 0x57, 0x60, 0x84, 0x3e, 0xab, 0x1c, 0x15, 0xc8, 0x58, 0xc4, 0x90, 0xb0, 0x67, 0x8f, 0xf5, 0x3e, - 0xec, 0x87, 0xf4, 0xf4, 0x0c, 0x9d, 0x5c, 0x11, 0x7d, 0xae, 0x4d, 0xd1, 0x5d, 0x28, 0x71, 0x5d, - 0x96, 0x8d, 0xcf, 0xc8, 0x3b, 0xd7, 0x0a, 0x46, 0x1a, 0x72, 0x4a, 0x84, 0xbe, 0x8b, 0x25, 0xbb, - 0x58, 0xcb, 0xc2, 0xf8, 0x3d, 0x74, 0xa1, 0x43, 0x28, 0xda, 0x9a, 0xa1, 0x9b, 0x33, 0xf2, 0x1b, - 0xcc, 0x4b, 0x72, 0x41, 0x59, 0x10, 0xea, 0x7f, 0x4a, 0xc3, 0x66, 0x68, 0x2b, 0xa4, 0xc0, 0x8e, - 0x2e, 0xdf, 0x55, 0x7b, 0x3e, 0xc5, 0xaa, 0xce, 0x9d, 0x22, 0xd1, 0xfd, 0xa1, 0x3f, 0x28, 0xcb, - 0xae, 0x7b, 0x7d, 0x47, 0x41, 0xfa, 0xb2, 0x43, 0x7f, 0x01, 0xd5, 0xa0, 0x4e, 0xe2, 0x39, 0x88, - 0x1b, 0x5b, 0x6a, 0xd6, 0xe3, 0xf4, 0x2e, 0x5c, 0xf9, 0xfa, 0x8e, 0xb2, 0xa7, 0x47, 0x3b, 0x79, - 0xc9, 0xe6, 0x09, 0x77, 0x18, 0xff, 0xe0, 0x04, 0x9b, 0x85, 0x5b, 0xc3, 0x36, 0x0b, 0xea, 0x8b, - 0x1c, 0xac, 0x31, 0x55, 0xf5, 0xdf, 0x66, 0x7c, 0xa7, 0x5a, 0xff, 0x6a, 0x17, 0x68, 0x9f, 0x0a, - 0x41, 0xe9, 0xa0, 0x6a, 0xdc, 0x66, 0x0a, 0x97, 0x62, 0xd8, 0x72, 0x21, 0xe9, 0x0e, 0x57, 0x05, - 0x2a, 0x00, 0xe9, 0xa0, 0x27, 0xb0, 0x75, 0x41, 0x74, 0xac, 0x5a, 0x17, 0xa6, 0x81, 0xfd, 0x93, - 0x75, 0x41, 0xd9, 0x64, 0x8c, 0x21, 0xa3, 0xcb, 0x61, 0x29, 0x62, 0x7e, 0xc9, 0x45, 0xce, 0x2f, - 0x6e, 0xa3, 0x5e, 0x8b, 0x69, 0xd4, 0xd9, 0x50, 0xa3, 0x3e, 0x01, 0xf0, 0x35, 0xa9, 0x7c, 0xe8, - 0xf4, 0x97, 0xe4, 0x8a, 0x46, 0xb8, 0x47, 0xf9, 0x14, 0xd5, 0x3e, 0x87, 0xcd, 0xff, 0xa5, 0xab, - 0xfc, 0x39, 0xc3, 0xe7, 0x80, 0x20, 0x34, 0xce, 0x4c, 0xf4, 0x14, 0x76, 0x58, 0x9a, 0x87, 0xe0, - 0xe5, 0xa6, 0xfb, 0x96, 0x43, 0xac, 0xc0, 0x12, 0xdd, 0x0b, 0x57, 0xfa, 0xf6, 0xe1, 0xca, 0xac, - 0x12, 0xae, 0xb5, 0x95, 0xc3, 0x95, 0x4f, 0x0c, 0x57, 0x36, 0x26, 0x5c, 0xb9, 0x50, 0xb8, 0x8e, - 0x03, 0xe1, 0x2a, 0xf0, 0x70, 0x7d, 0x1a, 0x9f, 0x4d, 0x67, 0xe6, 0xd7, 0x19, 0xa5, 0x45, 0xcb, - 0x89, 0x80, 0x87, 0xaf, 0xe5, 0x04, 0xb9, 0x2b, 0xb4, 0x9c, 0xf0, 0x47, 0xb8, 0xe5, 0x7f, 0x00, - 0x87, 0x5e, 0xf9, 0x8f, 0x4a, 0xce, 0xdb, 0xc2, 0xa3, 0xfe, 0xc7, 0x1c, 0x1c, 0x78, 0x18, 0x1f, - 0x6a, 0x36, 0x25, 0x13, 0x62, 0x69, 0x06, 0x5d, 0xb9, 0xad, 0xa0, 0x0f, 0xa1, 0xc4, 0x24, 0xf8, - 0x64, 0x42, 0x4d, 0xe9, 0xa3, 0xa2, 0x43, 0x2c, 0x56, 0x58, 0xc6, 0x66, 0xb0, 0xbb, 0x64, 0x42, - 0xdd, 0xe5, 0xdb, 0xb0, 0x63, 0x2d, 0x36, 0x55, 0x89, 0x8e, 0x0d, 0x4a, 0xe8, 0xb5, 0x4c, 0xde, - 0x6d, 0x1f, 0xaf, 0x27, 0x59, 0xe8, 0x31, 0x54, 0xfc, 0x4b, 0x7c, 0x47, 0xde, 0x4d, 0x1f, 0x3d, - 0x4a, 0xbb, 0x87, 0xa9, 0xc2, 0x92, 0xf6, 0x2f, 0x5c, 0x78, 0x5d, 0xc1, 0x9e, 0x7f, 0x89, 0x0f, - 0x6a, 0xe2, 0x48, 0xfc, 0xc3, 0xe5, 0xca, 0xb0, 0xec, 0xb5, 0x86, 0x8f, 0x14, 0x46, 0xdf, 0xae, - 0x15, 0xc5, 0x63, 0x69, 0xa0, 0xd3, 0xd9, 0x99, 0x9b, 0x06, 0xec, 0x19, 0x3d, 0x84, 0x0d, 0x6b, - 0xaa, 0x5d, 0xab, 0x6c, 0x14, 0xa4, 0xa6, 0x21, 0xae, 0x61, 0x0a, 0xfc, 0x8a, 0x67, 0x9d, 0x31, - 0x14, 0x49, 0x67, 0xa7, 0x7b, 0x2e, 0xa8, 0x13, 0x6d, 0xca, 0x05, 0xe5, 0x54, 0xc7, 0x88, 0x1d, - 0x49, 0x8b, 0xce, 0x5e, 0x88, 0xce, 0xde, 0x6f, 0xd0, 0xc4, 0xfa, 0x2d, 0x58, 0x17, 0xb3, 0xaa, - 0xca, 0x67, 0x54, 0x7e, 0xc5, 0x57, 0x50, 0x4a, 0x82, 0xf6, 0x86, 0x91, 0x6a, 0xaf, 0xa1, 0x16, - 0xef, 0xf0, 0x5b, 0xe5, 0xf3, 0xdf, 0x52, 0x80, 0x82, 0x11, 0xe5, 0x45, 0xf7, 0x01, 0x94, 0x83, - 0x28, 0x95, 0xda, 0x36, 0x02, 0xf8, 0x8c, 0x05, 0x73, 0x3a, 0x1e, 0xcc, 0x89, 0xc9, 0xe1, 0xcf, - 0x2c, 0xa2, 0xcb, 0x9c, 0x70, 0x33, 0xab, 0xa7, 0xd7, 0xff, 0x9e, 0x82, 0x23, 0x3e, 0x2c, 0x9e, - 0x61, 0x3b, 0x3a, 0x7b, 0xe3, 0x2c, 0x4a, 0xad, 0x68, 0x51, 0x3a, 0x64, 0xd1, 0x5d, 0x28, 0x51, - 0xb9, 0x21, 0xcb, 0x75, 0x61, 0x30, 0xb8, 0xa4, 0xb1, 0xb9, 0x8c, 0xc4, 0xb5, 0x65, 0x24, 0xd6, - 0xff, 0x93, 0x81, 0xd2, 0xa8, 0x37, 0xe4, 0x5f, 0xc1, 0xdc, 0xfb, 0x01, 0xe4, 0xdd, 0x6f, 0x14, - 0x86, 0xe5, 0x26, 0xfc, 0x03, 0xd1, 0x3e, 0x14, 0xbc, 0xc2, 0x23, 0x4c, 0xc9, 0xcb, 0x66, 0x94, - 0xec, 0xb8, 0x0f, 0x20, 0xcf, 0x99, 0x9e, 0xd3, 0x72, 0xec, 0x35, 0x21, 0x42, 0xd9, 0x78, 0x7f, - 0x3c, 0x81, 0xc2, 0x99, 0x6d, 0xce, 0xd4, 0xb9, 0x4d, 0x78, 0xfe, 0x95, 0x9a, 0x9b, 0xfe, 0x42, - 0x7d, 0x62, 0x13, 0x25, 0xcf, 0x04, 0x4e, 0x6c, 0x82, 0x3e, 0x86, 0x1c, 0x35, 0xb9, 0x64, 0x3e, - 0x5a, 0x32, 0x4b, 0x4d, 0x26, 0xf7, 0x5d, 0x28, 0xf1, 0x0f, 0x76, 0xa8, 0x46, 0xe7, 0x0e, 0x2f, - 0x47, 0xe5, 0xe6, 0x9e, 0x5f, 0x98, 0xf9, 0x66, 0xc4, 0xb9, 0x0a, 0x4c, 0xbc, 0x67, 0x74, 0x04, - 0x30, 0xe1, 0x65, 0x47, 0x57, 0x35, 0xca, 0x6f, 0x44, 0x33, 0x4a, 0x51, 0x52, 0x5a, 0x94, 0xb1, - 0x1d, 0xaa, 0xd9, 0x92, 0x0d, 0x82, 0x2d, 0x29, 0x2d, 0xca, 0xdc, 0x89, 0x0d, 0x5d, 0x30, 0x4b, - 0x9c, 0x99, 0xe7, 0xef, 0x2d, 0x8a, 0x5e, 0xc2, 0x96, 0x4e, 0x9c, 0x89, 0x69, 0x18, 0x78, 0x42, - 0x55, 0x1b, 0x6b, 0x8e, 0x4c, 0xd6, 0x72, 0x73, 0xdf, 0xb3, 0xab, 0xe3, 0x49, 0x28, 0x5c, 0x40, - 0xa9, 0xe8, 0x21, 0x0a, 0x4b, 0x2d, 0x6c, 0xdb, 0xa6, 0xcd, 0x2b, 0x50, 0x51, 0x11, 0x2f, 0xf5, - 0x3f, 0xa4, 0x20, 0x27, 0x3c, 0xc0, 0xea, 0xdc, 0xdc, 0xc1, 0xb6, 0x0c, 0x34, 0x7f, 0x66, 0xb4, - 0x0b, 0xd3, 0xa1, 0xee, 0xd5, 0x0a, 0x7b, 0x46, 0x65, 0x48, 0x13, 0x4b, 0x06, 0x36, 0x4d, 0x2c, - 0x26, 0xc3, 0xef, 0x4b, 0x58, 0x3c, 0x37, 0x14, 0xfe, 0xfc, 0x5e, 0x17, 0x29, 0x4f, 0x2e, 0xe5, - 0x8f, 0x0b, 0xee, 0xc5, 0xca, 0x1e, 0xcf, 0x78, 0x75, 0xac, 0xb4, 0xfa, 0xa3, 0xe1, 0x40, 0x19, - 0xab, 0xad, 0x93, 0xf1, 0xa0, 0x72, 0x07, 0xed, 0xc2, 0x56, 0x90, 0x7e, 0xd2, 0x19, 0x56, 0x52, - 0xcb, 0xe4, 0x71, 0x7b, 0x58, 0x49, 0x47, 0x90, 0x8f, 0x47, 0x95, 0xcc, 0x93, 0xb7, 0xb0, 0x11, - 0x08, 0x26, 0x97, 0x6b, 0x8f, 0xd4, 0x76, 0xeb, 0xf8, 0x58, 0xed, 0xf5, 0xdb, 0x83, 0x2f, 0x7a, - 0xfd, 0x57, 0x95, 0x3b, 0xa8, 0x06, 0x7b, 0x8c, 0x3c, 0x6c, 0x29, 0xe3, 0x5e, 0xbb, 0x37, 0x6c, - 0xf5, 0xc7, 0xea, 0x8f, 0x06, 0xbd, 0x7e, 0xb7, 0x53, 0x49, 0xa1, 0x32, 0x00, 0xe3, 0xb5, 0xda, - 0xe3, 0xde, 0x4f, 0xba, 0x95, 0x34, 0xda, 0x81, 0x0a, 0x7b, 0xef, 0xf4, 0x46, 0xed, 0x41, 0xbf, - 0xdf, 0x6d, 0x8f, 0xbb, 0x9d, 0x4a, 0x06, 0x6d, 0x40, 0x91, 0x51, 0xbb, 0x8a, 0x32, 0x50, 0x2a, - 0x6b, 0xcd, 0x7f, 0x14, 0x21, 0x33, 0xea, 0x0d, 0xd1, 0x10, 0xd6, 0xfd, 0xc3, 0x35, 0x5a, 0x1c, - 0x32, 0x22, 0xc6, 0xf1, 0xda, 0x51, 0x0c, 0x57, 0x1c, 0x58, 0xea, 0x99, 0xdf, 0xa7, 0x53, 0xe8, - 0x2b, 0xdf, 0x8f, 0x6f, 0xfe, 0xc1, 0x18, 0x3d, 0x58, 0xee, 0x8c, 0x11, 0x73, 0x78, 0x2d, 0x71, - 0xb2, 0x46, 0x2a, 0xec, 0x45, 0x5f, 0xfb, 0xa1, 0x8f, 0x97, 0xd5, 0x47, 0x4d, 0xdd, 0xb5, 0xe4, - 0x31, 0x1a, 0xfd, 0x1c, 0xd0, 0xf2, 0x75, 0x0b, 0x5a, 0x8c, 0x63, 0xb1, 0x57, 0x39, 0xb5, 0xfb, - 0x89, 0x32, 0xf2, 0x4c, 0xf7, 0x4b, 0xd8, 0x8e, 0xb8, 0x3b, 0x41, 0xe1, 0xb5, 0x91, 0x96, 0x7f, - 0x94, 0x2c, 0xb4, 0xd8, 0x21, 0xe2, 0x1e, 0xc3, 0xb7, 0x43, 0xfc, 0x1d, 0x88, 0x6f, 0x87, 0xa4, - 0xab, 0x90, 0x89, 0x77, 0x21, 0x13, 0xfc, 0x88, 0xa5, 0xd5, 0x91, 0x5f, 0xf1, 0xe0, 0x06, 0x29, - 0xb9, 0xc9, 0x2b, 0x28, 0x07, 0xef, 0x31, 0xd0, 0x62, 0x6c, 0x8d, 0xbc, 0xe0, 0xa8, 0x45, 0x5f, - 0x00, 0x05, 0xf0, 0x18, 0x18, 0xec, 0x1f, 0xac, 0x34, 0xc3, 0xd5, 0x12, 0x8f, 0xdd, 0x3e, 0x6f, - 0x07, 0x74, 0x2f, 0x79, 0x3b, 0x4a, 0xf3, 0x47, 0xc9, 0x42, 0xd2, 0x11, 0x5f, 0xf9, 0x2e, 0x74, - 0x62, 0xec, 0x4f, 0x3a, 0xf1, 0xdf, 0x60, 0xff, 0x97, 0xb0, 0x13, 0x75, 0x4e, 0xf5, 0xc5, 0x32, - 0xe1, 0x18, 0x5b, 0x3b, 0xf0, 0xeb, 0x0e, 0x1f, 0x8a, 0x7e, 0x0a, 0x7b, 0xd1, 0x87, 0x0f, 0x5f, - 0xaa, 0x26, 0x9e, 0x4e, 0x6a, 0x7b, 0x4b, 0xc7, 0xc0, 0xee, 0xcc, 0xa2, 0xd7, 0x2f, 0x5e, 0xfe, - 0xec, 0xfe, 0x39, 0xa1, 0x17, 0xf3, 0xd3, 0xc6, 0xc4, 0x9c, 0x3d, 0x95, 0xba, 0xc4, 0x3f, 0x04, - 0x26, 0xe6, 0xd4, 0x25, 0xfc, 0x35, 0xbd, 0x71, 0x4c, 0xae, 0xf0, 0x1b, 0x42, 0x1b, 0x43, 0xc6, - 0xfa, 0x77, 0xba, 0x2c, 0xdf, 0x9f, 0x3f, 0xe7, 0x84, 0xd3, 0x1c, 0x5f, 0xf2, 0xec, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x8e, 0xf4, 0x5f, 0x7e, 0xa0, 0x20, 0x00, 0x00, + // 2710 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4f, 0x73, 0xe3, 0x48, + 0x15, 0x8f, 0xac, 0xf8, 0xdf, 0xb3, 0xe3, 0x38, 0x9d, 0x3f, 0xeb, 0x38, 0xc9, 0x64, 0xf0, 0xee, + 0xec, 0xce, 0xce, 0x2e, 0x9e, 0x25, 0x53, 0x2c, 0xb3, 0x53, 0x2c, 0xe0, 0xd8, 0x99, 0x89, 0x99, + 0xac, 0x63, 0x14, 0x87, 0x62, 0xa9, 0x05, 0xa1, 0x58, 0x4a, 0x22, 0x62, 0x4b, 0x42, 0x6a, 0xcf, + 0x4e, 0x38, 0x52, 0x45, 0xd5, 0x50, 0x54, 0xf1, 0x1d, 0x28, 0xaa, 0x38, 0xc0, 0x99, 0x2b, 0x55, + 0x7c, 0x00, 0x0e, 0x5c, 0xe0, 0xc4, 0x89, 0x1b, 0x07, 0x3e, 0x03, 0xd5, 0xad, 0x96, 0xdc, 0xfa, + 0x6b, 0x27, 0x3b, 0x5b, 0xb5, 0x37, 0xe9, 0xbd, 0xd7, 0xaf, 0x9f, 0x5e, 0xff, 0xfa, 0xd7, 0xaf, + 0x9f, 0x0d, 0x2b, 0x23, 0xfd, 0x85, 0x76, 0xa5, 0x63, 0xd9, 0xd1, 0xad, 0xa6, 0x65, 0x9b, 0xd8, + 0x44, 0x79, 0x26, 0xaa, 0xdf, 0xb9, 0x30, 0xcd, 0x8b, 0x91, 0xf6, 0x90, 0x8a, 0xcf, 0x26, 0xe7, + 0x0f, 0xd5, 0x89, 0xad, 0x60, 0xdd, 0x34, 0x5c, 0xc3, 0xfa, 0x56, 0x58, 0xaf, 0x8d, 0x2d, 0x7c, + 0xcd, 0x94, 0x6b, 0x9e, 0xe3, 0xb1, 0xa9, 0x6a, 0x23, 0xc7, 0x95, 0x36, 0xfe, 0x2d, 0xc2, 0x7a, + 0xdb, 0xd6, 0x14, 0xac, 0x9d, 0x74, 0xfb, 0x03, 0x7b, 0x62, 0x5c, 0x49, 0xda, 0x2f, 0x26, 0x9a, + 0x83, 0xd1, 0x7b, 0xb0, 0xa2, 0x1b, 0x67, 0xe6, 0xc4, 0x50, 0x65, 0x45, 0x55, 0x6d, 0xcd, 0x71, + 0x34, 0xa7, 0x26, 0xdc, 0x15, 0xef, 0x17, 0xa5, 0x2a, 0x53, 0xb4, 0x3c, 0x39, 0x7a, 0x17, 0xaa, + 0xe6, 0x04, 0x07, 0xac, 0x6b, 0x99, 0xbb, 0xc2, 0xfd, 0xa2, 0xb4, 0xec, 0xc9, 0x99, 0x31, 0x7a, + 0x07, 0x7c, 0x91, 0x6c, 0x4c, 0xc6, 0x67, 0x9a, 0x5d, 0x13, 0xa9, 0x65, 0xc5, 0x13, 0xf7, 0xa8, + 0x14, 0x7d, 0x08, 0xeb, 0x5e, 0x00, 0xae, 0x9d, 0x23, 0xdb, 0xda, 0x85, 0xf6, 0xb2, 0xb6, 0x48, + 0x82, 0xd8, 0xcf, 0xd4, 0x04, 0x69, 0x95, 0x19, 0xb8, 0x23, 0x1c, 0x89, 0xa8, 0xc9, 0x04, 0xa1, + 0x71, 0xb5, 0x22, 0x0d, 0xbb, 0x12, 0xb4, 0x26, 0x41, 0x7b, 0x86, 0x13, 0x47, 0xb3, 0x0d, 0x65, + 0xac, 0xd5, 0xb2, 0x6e, 0xd0, 0x4c, 0x7e, 0xca, 0xc4, 0xbc, 0xa9, 0xa5, 0x38, 0xce, 0xe7, 0xa6, + 0xad, 0xd6, 0x72, 0x01, 0xd3, 0x3e, 0x13, 0x93, 0xbc, 0xf9, 0xdf, 0xe7, 0xbb, 0xcd, 0x53, 0x5b, + 0x3f, 0x47, 0xbe, 0x5f, 0xde, 0xd8, 0x77, 0x5c, 0x08, 0x1a, 0xfb, 0x9e, 0x11, 0x2c, 0x52, 0x67, + 0x40, 0xf5, 0xf4, 0x19, 0xd5, 0xa1, 0x30, 0xd6, 0xb0, 0xa2, 0x2a, 0x58, 0xa9, 0x95, 0xa8, 0xdc, + 0x7f, 0x7f, 0x92, 0xa9, 0x09, 0x8d, 0x3f, 0x66, 0xa1, 0xec, 0xad, 0x6c, 0xd7, 0x38, 0x37, 0xd1, + 0x5d, 0x28, 0x3b, 0xba, 0x25, 0x63, 0x22, 0x90, 0x75, 0xb5, 0x26, 0xd0, 0x41, 0xe0, 0xe8, 0x96, + 0x6b, 0xa3, 0xa2, 0x47, 0xb0, 0x78, 0xa5, 0x1b, 0x6a, 0xad, 0x72, 0x57, 0xb8, 0x5f, 0xd9, 0xdb, + 0x6d, 0x32, 0xdc, 0x34, 0x79, 0x37, 0x4d, 0xfa, 0xf4, 0x5c, 0x37, 0x54, 0x89, 0x1a, 0xc7, 0xa3, + 0x25, 0x73, 0x03, 0xb4, 0x88, 0x73, 0xa3, 0x65, 0x31, 0x16, 0x2d, 0x8f, 0xa0, 0x88, 0x6d, 0xc5, + 0x70, 0x2c, 0xd3, 0xc6, 0xb5, 0x25, 0x1a, 0xfa, 0x7a, 0x30, 0x74, 0xa6, 0x94, 0xa6, 0x76, 0xc9, + 0x10, 0xcb, 0xde, 0x18, 0x62, 0x30, 0x37, 0xc4, 0x72, 0xf3, 0x43, 0x2c, 0x7f, 0x03, 0x88, 0x15, + 0x6e, 0x02, 0xb1, 0xe2, 0x0c, 0x88, 0x95, 0x12, 0x20, 0x56, 0x0e, 0x42, 0xac, 0xd1, 0x81, 0xa2, + 0x8f, 0x04, 0x54, 0x85, 0xf2, 0x40, 0x3a, 0xed, 0x3d, 0x97, 0x8f, 0x0e, 0x9e, 0xb5, 0xda, 0x9f, + 0x56, 0x17, 0xd0, 0x0a, 0x2c, 0xb9, 0x92, 0x6e, 0x6f, 0xff, 0xf8, 0xb4, 0xd7, 0xa9, 0x0a, 0x08, + 0x41, 0xc5, 0x15, 0x1d, 0x9f, 0x0e, 0x5c, 0x59, 0x86, 0x02, 0x55, 0x82, 0x6d, 0x9f, 0x87, 0xba, + 0xee, 0xf7, 0x06, 0xe8, 0x68, 0x0f, 0xb2, 0x14, 0xb3, 0x14, 0xb0, 0xa5, 0xbd, 0x6d, 0x7e, 0x6d, + 0x79, 0x7b, 0x82, 0x4e, 0xc9, 0x35, 0x6d, 0xfc, 0x55, 0x80, 0xed, 0x53, 0x4b, 0x4d, 0x76, 0x3a, + 0x7b, 0x33, 0x3c, 0x86, 0xbc, 0xad, 0x59, 0x23, 0x65, 0xa8, 0x51, 0x3e, 0x9b, 0x31, 0xf1, 0xe1, + 0x82, 0xe4, 0x99, 0xa3, 0xc7, 0x90, 0x9b, 0xd0, 0xb9, 0x29, 0xb4, 0x4b, 0x7b, 0x77, 0x92, 0x06, + 0xba, 0x11, 0x1e, 0x2e, 0x48, 0xcc, 0x7e, 0xbf, 0x00, 0x39, 0x65, 0x48, 0x68, 0xbd, 0xf1, 0xeb, + 0x1c, 0xac, 0xc6, 0x4c, 0x33, 0x47, 0xdc, 0xde, 0x42, 0x66, 0x12, 0x16, 0x52, 0x0c, 0x2e, 0x24, + 0xaa, 0x41, 0xde, 0x43, 0x32, 0xa5, 0x57, 0xc9, 0x7b, 0x25, 0xf8, 0x51, 0x46, 0x23, 0xf3, 0x73, + 0x8d, 0xdf, 0xd9, 0x59, 0x77, 0x67, 0x33, 0xc5, 0x74, 0x67, 0xbf, 0x03, 0xcb, 0x9e, 0xb1, 0xe7, + 0x2e, 0xe7, 0x6e, 0x0c, 0x26, 0xf6, 0x36, 0xc6, 0x9b, 0xb0, 0xa4, 0x4c, 0xf0, 0x65, 0x98, 0x21, + 0xcb, 0x44, 0xe8, 0x43, 0xd7, 0x33, 0x0a, 0x31, 0x23, 0x35, 0xf2, 0x21, 0xdb, 0x86, 0xfc, 0xa5, + 0xa6, 0xa8, 0x1e, 0xcd, 0x97, 0xf6, 0xde, 0x4d, 0x5b, 0xa1, 0xe6, 0xa1, 0x6b, 0x7b, 0x60, 0x60, + 0xfb, 0x5a, 0xf2, 0x46, 0x22, 0x1d, 0xd6, 0xd9, 0xa3, 0x8c, 0x4d, 0x59, 0xc1, 0xd8, 0xd6, 0xcf, + 0x26, 0x58, 0x73, 0xb7, 0x75, 0x69, 0xef, 0x9b, 0xf3, 0xb8, 0x1c, 0x98, 0x2d, 0x7f, 0x9c, 0xeb, + 0x7e, 0xf5, 0x32, 0xaa, 0x41, 0xfb, 0xb0, 0x6c, 0xeb, 0xc6, 0x85, 0x6e, 0x5c, 0xc8, 0x58, 0x1f, + 0x6b, 0xe6, 0x04, 0xd3, 0xdd, 0x56, 0xda, 0xdb, 0x6c, 0xba, 0xc7, 0x77, 0xd3, 0x3b, 0xbe, 0x9b, + 0x1d, 0x76, 0xbc, 0x4b, 0x15, 0x36, 0x62, 0xe0, 0x0e, 0x40, 0x07, 0xb0, 0x32, 0x56, 0x5e, 0xca, + 0x43, 0x65, 0x34, 0x92, 0xbd, 0x1a, 0x80, 0xee, 0xcd, 0x54, 0x2f, 0xcb, 0x63, 0xe5, 0x65, 0x5b, + 0x19, 0x8d, 0x3c, 0x01, 0xc9, 0xef, 0x95, 0xad, 0x3b, 0x96, 0xac, 0x19, 0xca, 0xd9, 0x48, 0x53, + 0x29, 0x6f, 0x16, 0xa4, 0x32, 0x15, 0x1e, 0xb8, 0xb2, 0xfa, 0x13, 0x28, 0xf3, 0x39, 0x43, 0x55, + 0x10, 0xaf, 0xb4, 0x6b, 0x06, 0x39, 0xf2, 0x88, 0xd6, 0x20, 0xfb, 0x42, 0x19, 0x4d, 0x3c, 0xb0, + 0xb9, 0x2f, 0x4f, 0x32, 0x8f, 0x85, 0xfa, 0x53, 0xa8, 0x25, 0x25, 0xe7, 0x26, 0x7e, 0x1a, 0xbf, + 0x13, 0x61, 0x3d, 0x76, 0xd7, 0xa0, 0xaf, 0x4f, 0x71, 0xeb, 0x12, 0xc3, 0xaa, 0xbf, 0x54, 0x47, + 0xba, 0x83, 0x5d, 0xab, 0x29, 0x98, 0xbf, 0x17, 0x07, 0xe6, 0x4c, 0xf2, 0xc0, 0x28, 0xc2, 0xbf, + 0x1d, 0x45, 0xb8, 0x98, 0x3c, 0x3e, 0x0c, 0xfb, 0xfb, 0x61, 0xd8, 0xd3, 0xc3, 0xec, 0x70, 0x21, + 0x08, 0xfc, 0x57, 0x82, 0xe0, 0x5b, 0xfa, 0xd8, 0xa7, 0x95, 0xc9, 0xa1, 0x10, 0x44, 0x3f, 0xb1, + 0x7c, 0x83, 0x6d, 0x75, 0x7a, 0xae, 0x1c, 0x66, 0xdc, 0xcd, 0x4e, 0x14, 0xbb, 0xdc, 0x7e, 0xa7, + 0xdb, 0xeb, 0x50, 0x9c, 0xee, 0xf8, 0x57, 0x82, 0xb0, 0x5f, 0x85, 0x8a, 0x1c, 0x08, 0x67, 0x2a, + 0xf1, 0xa6, 0xdd, 0xcf, 0x43, 0x56, 0xa6, 0xaa, 0x12, 0x14, 0x65, 0x9f, 0xf7, 0x07, 0xb0, 0xe3, + 0xb3, 0xf5, 0x31, 0x3b, 0x44, 0x02, 0xcc, 0xfa, 0x28, 0x48, 0xd7, 0x3b, 0xfc, 0x06, 0x0a, 0x0c, + 0xe0, 0xf9, 0xfa, 0x6f, 0x02, 0xec, 0xf8, 0x7c, 0x1d, 0xeb, 0x76, 0x36, 0xf1, 0x7d, 0x14, 0x26, + 0xec, 0xf4, 0xa9, 0x79, 0xc6, 0xfe, 0x28, 0xc4, 0xd8, 0xbb, 0x89, 0x23, 0x53, 0x28, 0xfb, 0x1f, + 0x8b, 0xb0, 0x16, 0x37, 0xd1, 0x97, 0xc3, 0xd9, 0x5e, 0xf5, 0xe4, 0xd6, 0x44, 0xde, 0x6b, 0xb0, + 0x18, 0xca, 0xce, 0x59, 0x0c, 0x71, 0x47, 0x40, 0x2e, 0x78, 0x04, 0xbc, 0x3e, 0xb2, 0xee, 0x84, + 0xc9, 0xfa, 0x41, 0xea, 0xea, 0x24, 0xb0, 0xf5, 0xcf, 0xd3, 0xd9, 0xfa, 0xc3, 0xb9, 0x7c, 0xce, + 0x47, 0xd7, 0x5f, 0x09, 0xfa, 0xfb, 0x95, 0x08, 0x1b, 0xf1, 0x10, 0x44, 0x3b, 0x53, 0x0c, 0x08, + 0x8c, 0x4a, 0x3c, 0x01, 0xa1, 0x80, 0xc7, 0x3c, 0x10, 0x32, 0x29, 0x40, 0x38, 0x14, 0x38, 0x28, + 0x90, 0x91, 0x1c, 0xb1, 0x8a, 0x73, 0x10, 0x6b, 0x02, 0xb1, 0x65, 0xe6, 0x26, 0x36, 0x71, 0x16, + 0xb1, 0x2d, 0xa6, 0x11, 0x5b, 0x36, 0x48, 0x6c, 0x00, 0x05, 0x8f, 0xdf, 0xf7, 0xcb, 0x00, 0xb2, + 0xff, 0x65, 0x5f, 0x80, 0xf2, 0x3e, 0x86, 0xcd, 0x67, 0x1a, 0xbe, 0x6d, 0x21, 0xd9, 0xe8, 0x43, + 0x3d, 0x6e, 0xb8, 0x63, 0x99, 0x86, 0xa3, 0xdd, 0xaa, 0xba, 0xfd, 0x8e, 0xe7, 0xf1, 0x76, 0x4c, + 0xd9, 0x90, 0x60, 0x2b, 0x76, 0x3c, 0x0b, 0xe9, 0x56, 0x0c, 0xbe, 0x09, 0xab, 0x04, 0x1d, 0xa1, + 0x5e, 0x02, 0x2d, 0xf0, 0x9f, 0xc1, 0x5a, 0x50, 0xc5, 0xe6, 0x79, 0x0f, 0xb2, 0x3a, 0xd6, 0xc6, + 0x6e, 0x6f, 0xa1, 0x14, 0x86, 0xa7, 0xef, 0x9f, 0xda, 0x50, 0x47, 0xdb, 0x50, 0x67, 0x8e, 0x62, + 0x56, 0xa2, 0xf1, 0x03, 0xd8, 0x8a, 0xd5, 0x4e, 0x13, 0xcd, 0xcf, 0x36, 0x23, 0xd1, 0xd4, 0xb4, + 0xb1, 0xe3, 0xbb, 0x8c, 0xcb, 0x74, 0xe3, 0x04, 0xb6, 0xe3, 0xd5, 0xd3, 0x44, 0xf2, 0x53, 0xce, + 0x4a, 0xa4, 0x3b, 0xe7, 0x47, 0xb0, 0xde, 0xd1, 0x46, 0x5a, 0xb4, 0x2d, 0x33, 0x7b, 0x5d, 0x9f, + 0xd2, 0x5a, 0xa9, 0xa3, 0x3b, 0x96, 0x82, 0x87, 0x97, 0xd2, 0x64, 0xa4, 0x75, 0x74, 0x5b, 0x1b, + 0x62, 0xb4, 0x05, 0x45, 0xdb, 0x34, 0xc7, 0x14, 0xdb, 0x6c, 0x5c, 0x81, 0x08, 0x7a, 0x84, 0xbe, + 0xab, 0x20, 0x5a, 0xba, 0xc1, 0xb8, 0x87, 0x3c, 0x36, 0x7a, 0xb0, 0x19, 0xf2, 0xd3, 0x35, 0x54, + 0xfd, 0x85, 0xae, 0x4e, 0x94, 0x11, 0xda, 0x85, 0x12, 0xf5, 0x65, 0xd9, 0xda, 0xb9, 0xfe, 0xd2, + 0x8b, 0x82, 0x88, 0xfa, 0x54, 0x12, 0xe3, 0xef, 0x32, 0x12, 0x17, 0x29, 0x46, 0x35, 0xed, 0x16, + 0xbe, 0xd0, 0x36, 0x14, 0x6d, 0xc5, 0x50, 0xcd, 0xb1, 0xfe, 0x4b, 0xf7, 0xb4, 0x2e, 0x48, 0x53, + 0x41, 0xe3, 0xf7, 0x19, 0x58, 0x0e, 0x4d, 0x85, 0x24, 0x58, 0x53, 0xd9, 0xbb, 0x6c, 0x4f, 0x46, + 0x9a, 0xac, 0xd2, 0xa4, 0x30, 0x74, 0x07, 0x2e, 0x67, 0xd1, 0xd4, 0x1d, 0x2e, 0x48, 0x48, 0x8d, + 0x26, 0xf4, 0xa7, 0x50, 0x0b, 0xfa, 0xd4, 0xfd, 0x04, 0xb1, 0xe2, 0xa3, 0x91, 0xe4, 0x77, 0x9a, + 0xca, 0xc3, 0x05, 0x69, 0x43, 0x8d, 0x4f, 0x72, 0x24, 0xe6, 0x21, 0x4d, 0x58, 0xdc, 0x85, 0x32, + 0x9a, 0xd6, 0x70, 0xcc, 0xae, 0x74, 0x3f, 0x07, 0x8b, 0xc4, 0x55, 0xe3, 0x3f, 0x22, 0x77, 0xe1, + 0xe6, 0x47, 0x7b, 0x40, 0x6b, 0xc1, 0x52, 0x60, 0x72, 0x7a, 0x9e, 0x87, 0x76, 0x4c, 0xf0, 0x8b, + 0xce, 0x4d, 0xa9, 0xcc, 0xcf, 0x88, 0x3e, 0x70, 0xe7, 0x62, 0x39, 0xae, 0x25, 0x8d, 0xa4, 0x7d, + 0x16, 0x6a, 0x89, 0x76, 0xc9, 0x79, 0xe5, 0x22, 0x9b, 0xb5, 0x8f, 0xa8, 0xb2, 0x80, 0x5d, 0x6c, + 0x3b, 0xa8, 0x09, 0x2b, 0x97, 0xba, 0xaa, 0xc9, 0xd6, 0xa5, 0x69, 0x68, 0x7c, 0xff, 0xb0, 0x40, + 0x0d, 0x97, 0x89, 0xb2, 0x4f, 0x74, 0xac, 0x2d, 0xf4, 0x5e, 0xb4, 0x53, 0x93, 0xf3, 0xdd, 0x86, + 0xbb, 0x35, 0x1b, 0xec, 0xc0, 0xa1, 0x67, 0x97, 0x1b, 0x15, 0x2d, 0x6d, 0xee, 0x70, 0xe7, 0x4d, + 0xd6, 0xd7, 0x4d, 0x0b, 0xb1, 0x4f, 0x01, 0xb8, 0x22, 0x24, 0x1f, 0xba, 0x32, 0xa6, 0x65, 0xb9, + 0x19, 0x2a, 0x0b, 0xa8, 0x63, 0xce, 0x59, 0xfd, 0x63, 0x58, 0xfe, 0x22, 0x95, 0xc3, 0xdf, 0xf9, + 0x0e, 0x48, 0xdc, 0x2a, 0x3f, 0x84, 0x35, 0x42, 0x27, 0x21, 0x18, 0x7b, 0xb4, 0xb2, 0xe2, 0xe8, + 0x56, 0x60, 0x8d, 0x67, 0x35, 0x44, 0xc2, 0x80, 0x98, 0xbb, 0x21, 0xc2, 0x0f, 0x4c, 0xa9, 0xae, + 0xff, 0x20, 0xd2, 0x86, 0x48, 0x78, 0x9a, 0x9b, 0x7f, 0xc6, 0xfb, 0x0c, 0x9a, 0x99, 0x74, 0x68, + 0x32, 0x58, 0x6e, 0xf1, 0xb0, 0x14, 0x69, 0x71, 0x3c, 0x85, 0xe4, 0x83, 0x38, 0x48, 0x2e, 0x52, + 0x4e, 0x8a, 0xc0, 0x31, 0xa6, 0x71, 0x98, 0x8f, 0x6d, 0x1c, 0x7a, 0x77, 0x81, 0x6c, 0xc2, 0x5d, + 0x20, 0x17, 0xba, 0x0b, 0x1c, 0x05, 0x20, 0x58, 0xa0, 0x10, 0x7c, 0x3f, 0x6d, 0x65, 0xc2, 0xc8, + 0x7b, 0x9d, 0xa8, 0xfb, 0x67, 0x26, 0x42, 0xf5, 0xac, 0x5c, 0xfd, 0x80, 0x4f, 0x64, 0xca, 0x85, + 0x7d, 0x9a, 0xdd, 0x9b, 0x2d, 0x94, 0x57, 0x32, 0x8a, 0xac, 0x16, 0x8e, 0x2d, 0x19, 0x17, 0xd9, + 0x4d, 0x9a, 0x2f, 0x19, 0x51, 0x2f, 0x90, 0xc0, 0x2c, 0x4d, 0x60, 0x33, 0x1d, 0xa1, 0x5f, 0x62, + 0x0a, 0x13, 0x6a, 0xd0, 0x69, 0xe9, 0x13, 0xb3, 0x97, 0xb9, 0xd2, 0x27, 0xa8, 0x9d, 0xa3, 0xf4, + 0x89, 0x10, 0x39, 0x2b, 0x43, 0x8e, 0x61, 0xdb, 0x2f, 0x43, 0x5e, 0x07, 0x7d, 0x34, 0x7e, 0x9b, + 0x83, 0x2d, 0x9f, 0x10, 0xfb, 0x8a, 0x8d, 0xf5, 0xa1, 0x6e, 0x29, 0x06, 0x9e, 0xff, 0x82, 0x7f, + 0x07, 0x4a, 0xc4, 0x82, 0xf6, 0xbe, 0xb0, 0xc9, 0x32, 0x57, 0x74, 0x74, 0x8b, 0x1c, 0x70, 0x03, + 0x33, 0x58, 0xe5, 0x88, 0xa1, 0x2a, 0xe7, 0x1b, 0xb0, 0x66, 0x4d, 0x27, 0x95, 0x75, 0x55, 0x33, + 0xb0, 0x8e, 0xaf, 0xd9, 0xfd, 0x79, 0x95, 0xd3, 0x75, 0x99, 0x0a, 0xbd, 0x0b, 0x55, 0x7e, 0x08, + 0x77, 0xff, 0x5d, 0xe6, 0xe4, 0x71, 0xde, 0x7d, 0xc0, 0x15, 0x22, 0xde, 0x3f, 0xf1, 0xf6, 0xed, + 0x0b, 0xd8, 0xe0, 0x87, 0x70, 0x10, 0x74, 0xef, 0xc7, 0xdf, 0x8d, 0x1e, 0x23, 0xd1, 0xac, 0x35, + 0x39, 0x51, 0x18, 0x93, 0xeb, 0x56, 0x9c, 0x8e, 0xf0, 0x8b, 0x8a, 0xc7, 0xe7, 0x1e, 0xbf, 0x90, + 0x67, 0xf4, 0x0e, 0x2c, 0x59, 0x23, 0xe5, 0x5a, 0xb6, 0x75, 0xe3, 0x02, 0x9b, 0x86, 0x7b, 0xf1, + 0x72, 0xcf, 0xd5, 0x32, 0x51, 0x48, 0x4c, 0x4e, 0xae, 0xfa, 0xd4, 0x50, 0xd5, 0x95, 0x11, 0x35, + 0x64, 0x7d, 0x43, 0x22, 0xec, 0x30, 0x59, 0x3c, 0x2d, 0x42, 0x3c, 0x2d, 0x7e, 0x85, 0x7a, 0xa2, + 0x5f, 0x83, 0xb2, 0xdb, 0x0d, 0x95, 0x69, 0x17, 0x94, 0xfe, 0x0a, 0x56, 0x90, 0x4a, 0xae, 0xec, + 0x39, 0x11, 0xd5, 0x0f, 0xa1, 0x9e, 0x9c, 0xf0, 0x1b, 0x11, 0xe5, 0x9f, 0x05, 0x40, 0xc1, 0x15, + 0xa5, 0xa7, 0xd9, 0x3d, 0xa8, 0x04, 0x51, 0xca, 0xbc, 0x2d, 0x05, 0xf0, 0x99, 0x08, 0xe6, 0x4c, + 0x32, 0x98, 0x53, 0x37, 0x07, 0xbf, 0xb3, 0x74, 0x95, 0xed, 0x09, 0x6f, 0x67, 0x75, 0xd5, 0xc6, + 0x5f, 0x04, 0xd8, 0xa1, 0x0d, 0x83, 0x73, 0xcd, 0x8e, 0xdf, 0xbd, 0x49, 0x11, 0x09, 0x73, 0x46, + 0x94, 0x09, 0x45, 0xb4, 0x0b, 0x25, 0xcc, 0x26, 0x24, 0x7b, 0xdd, 0x0d, 0x18, 0x3c, 0xd1, 0xc0, + 0x8c, 0x22, 0x71, 0x31, 0x8a, 0xc4, 0xc6, 0xff, 0x44, 0x28, 0x9d, 0x74, 0xfb, 0xf4, 0x2b, 0x48, + 0x7a, 0xdf, 0x80, 0xbc, 0xf7, 0x8d, 0x6e, 0x60, 0xb9, 0x21, 0xfd, 0x40, 0xb4, 0x09, 0x05, 0x9f, + 0x78, 0xdc, 0x50, 0xf2, 0xec, 0x1c, 0x4a, 0x4f, 0xdc, 0x1b, 0x90, 0xa7, 0x4a, 0x3f, 0x69, 0x39, + 0xf2, 0x9a, 0xb2, 0x42, 0xd9, 0xe4, 0x7c, 0x3c, 0x80, 0xc2, 0xb9, 0x6d, 0x8e, 0xe5, 0x89, 0xad, + 0xd3, 0xfd, 0x57, 0xda, 0x5b, 0xe6, 0x89, 0xfa, 0xd4, 0xd6, 0xa5, 0x3c, 0x31, 0x38, 0xb5, 0x75, + 0xf4, 0x36, 0xe4, 0xb0, 0x49, 0x2d, 0xf3, 0xf1, 0x96, 0x59, 0x6c, 0x12, 0xbb, 0x6f, 0x41, 0x89, + 0x7e, 0xb0, 0x83, 0x15, 0x3c, 0x71, 0x28, 0x1d, 0x55, 0xf6, 0x36, 0x78, 0x63, 0x92, 0x9b, 0x13, + 0xaa, 0x95, 0x60, 0xe8, 0x3f, 0xa3, 0x1d, 0x80, 0x21, 0xa5, 0x1d, 0x55, 0x56, 0x30, 0xfd, 0xd1, + 0x50, 0x94, 0x8a, 0x4c, 0xd2, 0xc2, 0x44, 0xed, 0x60, 0xc5, 0x66, 0x6a, 0x70, 0xd5, 0x4c, 0xd2, + 0xc2, 0x24, 0x9d, 0x9a, 0xa1, 0xba, 0xca, 0x12, 0x55, 0xe6, 0xe9, 0x7b, 0x0b, 0xa3, 0xa7, 0xb0, + 0xa2, 0xea, 0xce, 0xd0, 0x34, 0x0c, 0x6d, 0x88, 0x65, 0x5b, 0x53, 0x1c, 0xb6, 0x59, 0x2b, 0x7b, + 0x9b, 0x7e, 0x5c, 0x1d, 0xdf, 0x42, 0xa2, 0x06, 0x52, 0x55, 0x0d, 0x49, 0xc8, 0xd6, 0xd2, 0x6c, + 0xdb, 0xb4, 0x29, 0x03, 0x15, 0x25, 0xf7, 0xa5, 0xf1, 0x1b, 0x01, 0x72, 0x6e, 0x06, 0x08, 0xcf, + 0x4d, 0x1c, 0xcd, 0x66, 0x0b, 0x4d, 0x9f, 0x89, 0xec, 0xd2, 0x74, 0xb0, 0xd7, 0x67, 0x25, 0xcf, + 0xa8, 0x02, 0x19, 0xdd, 0x62, 0x0b, 0x9b, 0xd1, 0x2d, 0x62, 0x43, 0x7b, 0x66, 0x64, 0x3d, 0x97, + 0x24, 0xfa, 0x7c, 0xab, 0xae, 0xea, 0x83, 0x2b, 0xf6, 0xfb, 0xbb, 0xd7, 0x65, 0xdd, 0xa0, 0x3b, + 0x5e, 0x1e, 0x48, 0xad, 0xde, 0x49, 0xff, 0x58, 0x1a, 0xc8, 0xad, 0xd3, 0xc1, 0x71, 0x75, 0x01, + 0xad, 0xc3, 0x4a, 0x50, 0x7e, 0xda, 0xe9, 0x57, 0x85, 0xa8, 0x78, 0xd0, 0xee, 0x57, 0x33, 0x31, + 0xe2, 0xa3, 0x93, 0xaa, 0xf8, 0xe0, 0x73, 0x58, 0x0a, 0x2c, 0x26, 0xb5, 0x6b, 0x9f, 0xc8, 0xed, + 0xd6, 0xd1, 0x91, 0xdc, 0xed, 0xb5, 0x8f, 0x3f, 0xe9, 0xf6, 0x9e, 0x55, 0x17, 0x50, 0x1d, 0x36, + 0x88, 0xb8, 0xdf, 0x92, 0x06, 0xdd, 0x76, 0xb7, 0xdf, 0xea, 0x0d, 0xe4, 0xef, 0x1f, 0x77, 0x7b, + 0x07, 0x9d, 0xaa, 0x80, 0x2a, 0x00, 0x44, 0xd7, 0x6a, 0x0f, 0xba, 0x3f, 0x3c, 0xa8, 0x66, 0xd0, + 0x1a, 0x54, 0xc9, 0x7b, 0xa7, 0x7b, 0xd2, 0x3e, 0xee, 0xf5, 0x0e, 0xda, 0x83, 0x83, 0x4e, 0x55, + 0x44, 0x4b, 0x50, 0x24, 0xd2, 0x03, 0x49, 0x3a, 0x96, 0xaa, 0x8b, 0x7b, 0xff, 0x2a, 0x81, 0x78, + 0xd2, 0xed, 0xa3, 0x3e, 0x94, 0xf9, 0x26, 0x0f, 0xda, 0x0e, 0x14, 0x77, 0xa1, 0x5e, 0x46, 0x7d, + 0x27, 0x41, 0xeb, 0x16, 0x2c, 0x0d, 0xf1, 0x55, 0x46, 0x40, 0x9f, 0x71, 0xff, 0x4f, 0xe1, 0x1b, + 0x34, 0xe8, 0x5e, 0xf4, 0x64, 0x8c, 0xe9, 0x07, 0xd5, 0x53, 0x3b, 0x3c, 0x48, 0x86, 0x8d, 0xf8, + 0xdf, 0x31, 0xd0, 0xdb, 0x51, 0xf7, 0x71, 0xdd, 0x9f, 0x7a, 0x7a, 0x3b, 0x87, 0x84, 0x1f, 0xfb, + 0x0b, 0x34, 0x17, 0x7e, 0xda, 0x2f, 0xd4, 0xb3, 0xc3, 0x8f, 0xff, 0xbd, 0x84, 0x0b, 0x3f, 0xf5, + 0x07, 0x95, 0x59, 0xe1, 0xff, 0x04, 0x50, 0xb4, 0x6b, 0x89, 0xa6, 0x5d, 0x8d, 0xc4, 0x8e, 0x68, + 0xfd, 0xcd, 0x54, 0x1b, 0x56, 0x92, 0xfe, 0x0c, 0x56, 0x63, 0x5a, 0x90, 0x28, 0x3c, 0x36, 0x36, + 0xf2, 0xb7, 0xd2, 0x8d, 0xa6, 0x33, 0xc4, 0xb4, 0x03, 0xb9, 0x19, 0x92, 0x5b, 0x89, 0xdc, 0x0c, + 0x69, 0x1d, 0xc5, 0xa1, 0xdf, 0xd7, 0x0c, 0x7e, 0x44, 0x64, 0x74, 0xec, 0x57, 0xdc, 0x9b, 0x61, + 0xc5, 0x26, 0x79, 0x06, 0x95, 0x60, 0x3b, 0x10, 0x4d, 0x6f, 0xcf, 0xb1, 0x7d, 0xc2, 0x7a, 0x7c, + 0x1f, 0x35, 0xb0, 0x9d, 0x02, 0xfd, 0xb1, 0x7b, 0x73, 0xf5, 0x2b, 0xea, 0xa9, 0xb7, 0x86, 0x00, + 0xda, 0x13, 0xbc, 0xa7, 0x75, 0x23, 0x66, 0x78, 0x9f, 0xae, 0x65, 0xc0, 0x77, 0x64, 0x2d, 0xe3, + 0x3c, 0xbf, 0x95, 0x6e, 0xc4, 0xd2, 0xfc, 0x19, 0xd7, 0x75, 0x4d, 0x88, 0x3f, 0xed, 0x3a, 0x34, + 0x23, 0xfe, 0x4f, 0x61, 0x2d, 0xae, 0x88, 0xe7, 0x90, 0x92, 0x52, 0xe3, 0xd7, 0xb7, 0x78, 0xdf, + 0xe1, 0x8a, 0xf1, 0x47, 0xb0, 0x11, 0x5f, 0x99, 0x71, 0x44, 0x90, 0x5a, 0xba, 0xd5, 0x37, 0x22, + 0x35, 0xf2, 0xc1, 0xd8, 0xc2, 0xd7, 0xfb, 0x4f, 0x7f, 0xfc, 0xe6, 0x85, 0x8e, 0x2f, 0x27, 0x67, + 0xcd, 0xa1, 0x39, 0x7e, 0xc8, 0x7c, 0xb9, 0xff, 0x30, 0x1c, 0x9a, 0x23, 0x4f, 0xf0, 0xa7, 0xcc, + 0xd2, 0x91, 0xfe, 0x42, 0x7b, 0xae, 0xe3, 0x66, 0x9f, 0xa8, 0xfe, 0x9b, 0xa9, 0xb0, 0xf7, 0x27, + 0x4f, 0xa8, 0xe0, 0x2c, 0x47, 0x87, 0x3c, 0xfa, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x11, 0x12, + 0x3c, 0x3b, 0xe0, 0x28, 0x00, 0x00, } diff --git a/livekit/sip.go b/livekit/sip.go index e91db6bb..0fbc3467 100644 --- a/livekit/sip.go +++ b/livekit/sip.go @@ -4,6 +4,8 @@ import ( "errors" "fmt" "strings" + + "google.golang.org/protobuf/proto" ) // ToProto implements DataPacket in Go SDK. @@ -138,6 +140,62 @@ func (p *CreateSIPInboundTrunkRequest) Validate() error { return nil } +func (p *UpdateSIPOutboundTrunkRequest) Validate() error { + if p.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPOutboundTrunkRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" && info.SipTrunkId != p.SipTrunkId { + return errors.New("trunk id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPOutboundTrunkRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Validate() + } +} + +func (p *UpdateSIPInboundTrunkRequest) Validate() error { + if p.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPInboundTrunkRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" && info.SipTrunkId != p.SipTrunkId { + return errors.New("trunk id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPInboundTrunkRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Validate() + } +} + func (p *SIPInboundTrunkInfo) Validate() error { if len(p.Numbers) == 0 { return errors.New("no trunk numbers specified") @@ -151,6 +209,63 @@ func (p *SIPInboundTrunkInfo) Validate() error { return nil } +func (p *SIPInboundTrunkUpdate) Validate() error { + if err := p.Numbers.Validate(); err != nil { + return err + } + if err := p.AllowedAddresses.Validate(); err != nil { + return err + } + if err := p.AllowedNumbers.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPInboundTrunkUpdate) Apply(info *SIPInboundTrunkInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyListUpdate(&info.Numbers, p.Numbers) + applyListUpdate(&info.AllowedAddresses, p.AllowedAddresses) + applyListUpdate(&info.AllowedNumbers, p.AllowedNumbers) + applyUpdate(&info.AuthUsername, p.AuthUsername) + applyUpdate(&info.AuthPassword, p.AuthPassword) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + return info.Validate() +} + +type UpdateSIPOutboundTrunkRequestAction interface { + isUpdateSIPOutboundTrunkRequest_Action + Apply(info *SIPOutboundTrunkInfo) error +} + +var ( + _ UpdateSIPOutboundTrunkRequestAction = (*UpdateSIPOutboundTrunkRequest_Replace)(nil) + _ UpdateSIPOutboundTrunkRequestAction = (*UpdateSIPOutboundTrunkRequest_Update)(nil) +) + +func (p *UpdateSIPOutboundTrunkRequest_Replace) Apply(info *SIPOutboundTrunkInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" { + val.SipTrunkId = info.SipTrunkId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPOutboundTrunkRequest_Update) Apply(info *SIPOutboundTrunkInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Apply(info) +} + func (p *SIPOutboundTrunkInfo) Validate() error { if len(p.Numbers) == 0 { return errors.New("no trunk numbers specified") @@ -169,13 +284,170 @@ func (p *SIPOutboundTrunkInfo) Validate() error { return nil } +func (p *SIPOutboundTrunkUpdate) Validate() error { + if err := p.Numbers.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPOutboundTrunkUpdate) Apply(info *SIPOutboundTrunkInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyUpdate(&info.Address, p.Address) + applyUpdate(&info.Transport, p.Transport) + applyListUpdate(&info.Numbers, p.Numbers) + applyUpdate(&info.AuthUsername, p.AuthUsername) + applyUpdate(&info.AuthPassword, p.AuthPassword) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + return info.Validate() +} + +type UpdateSIPInboundTrunkRequestAction interface { + isUpdateSIPInboundTrunkRequest_Action + Apply(info *SIPInboundTrunkInfo) error +} + +var ( + _ UpdateSIPInboundTrunkRequestAction = (*UpdateSIPInboundTrunkRequest_Replace)(nil) + _ UpdateSIPInboundTrunkRequestAction = (*UpdateSIPInboundTrunkRequest_Update)(nil) +) + +func (p *UpdateSIPInboundTrunkRequest_Replace) Apply(info *SIPInboundTrunkInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" { + val.SipTrunkId = info.SipTrunkId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPInboundTrunkRequest_Update) Apply(info *SIPInboundTrunkInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Apply(info) +} + +func (p *CreateSIPDispatchRuleRequest) DispatchRuleInfo() *SIPDispatchRuleInfo { + if p == nil { + return nil + } + if p.DispatchRule != nil { + return p.DispatchRule + } + return &SIPDispatchRuleInfo{ + Rule: p.Rule, + TrunkIds: p.TrunkIds, + InboundNumbers: p.InboundNumbers, + HidePhoneNumber: p.HidePhoneNumber, + Name: p.Name, + Metadata: p.Metadata, + Attributes: p.Attributes, + } +} + func (p *CreateSIPDispatchRuleRequest) Validate() error { + if p.DispatchRule == nil { + // legacy + return p.DispatchRuleInfo().Validate() + } + if p.DispatchRule.SipDispatchRuleId != "" { + return errors.New("rule id must not be set") + } + return p.DispatchRule.Validate() +} + +func (p *UpdateSIPDispatchRuleRequest) Validate() error { + if p.SipDispatchRuleId == "" { + return errors.New("rule id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPDispatchRuleRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing dispatch rule") + } + if info.SipDispatchRuleId != "" && info.SipDispatchRuleId != p.SipDispatchRuleId { + return errors.New("rule id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPDispatchRuleRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing dispatch rule update") + } + return diff.Validate() + } +} + +func (p *SIPDispatchRuleInfo) Validate() error { if p.Rule == nil { return errors.New("missing rule") } return nil } +func (p *SIPDispatchRuleUpdate) Validate() error { + if err := p.TrunkIds.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPDispatchRuleUpdate) Apply(info *SIPDispatchRuleInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyListUpdate(&info.TrunkIds, p.TrunkIds) + applyUpdate(&info.Rule, &p.Rule) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + applyMapDiff(&info.Attributes, p.Attributes) + return info.Validate() +} + +type UpdateSIPDispatchRuleRequestAction interface { + isUpdateSIPDispatchRuleRequest_Action + Apply(info *SIPDispatchRuleInfo) error +} + +var ( + _ UpdateSIPDispatchRuleRequestAction = (*UpdateSIPDispatchRuleRequest_Replace)(nil) + _ UpdateSIPDispatchRuleRequestAction = (*UpdateSIPDispatchRuleRequest_Update)(nil) +) + +func (p *UpdateSIPDispatchRuleRequest_Replace) Apply(info *SIPDispatchRuleInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing dispatch rule") + } + if info.SipDispatchRuleId != "" { + val.SipDispatchRuleId = info.SipDispatchRuleId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPDispatchRuleRequest_Update) Apply(info *SIPDispatchRuleInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing dispatch rule update") + } + return diff.Apply(info) +} + func (p *CreateSIPParticipantRequest) Validate() error { if p.SipTrunkId == "" { return errors.New("missing sip trunk id") diff --git a/livekit/types.go b/livekit/types.go index 40cc0a94..f4933adf 100644 --- a/livekit/types.go +++ b/livekit/types.go @@ -15,6 +15,8 @@ package livekit import ( + "fmt" + "buf.build/go/protoyaml" proto "google.golang.org/protobuf/proto" "gopkg.in/yaml.v3" @@ -130,3 +132,47 @@ func IsJobType(jobType JobType) bool { _, ok := JobType_name[int32(jobType)] return ok } + +func (p *ListUpdate) Validate() error { + if p == nil { + return nil + } + for _, v := range p.Set { + if v == "" { + return fmt.Errorf("empty element in the list") + } + } + return nil +} + +func applyUpdate[T any](dst *T, set *T) { + if set != nil { + *dst = *set + } +} + +func applyListUpdate[T ~string](dst *[]T, u *ListUpdate) { + if u == nil { + return + } + arr := make([]T, 0, len(u.Set)) + for _, v := range u.Set { + arr = append(arr, T(v)) + } + *dst = arr +} + +func applyMapDiff(dst *map[string]string, diff map[string]string) { + m := *dst + if m == nil { + m = make(map[string]string) + } + for k, v := range diff { + if v != "" { + m[k] = v + } else { + delete(m, k) + } + } + *dst = m +} diff --git a/protobufs/livekit_models.proto b/protobufs/livekit_models.proto index fb4bed49..775a8a58 100644 --- a/protobufs/livekit_models.proto +++ b/protobufs/livekit_models.proto @@ -23,6 +23,11 @@ import "google/protobuf/timestamp.proto"; import "livekit_metrics.proto"; +// ListUpdate is used for updated APIs where 'repeated string' field is modified. +message ListUpdate { + repeated string set = 1; // set the field to a new list +} + message Room { string sid = 1; string name = 2; diff --git a/protobufs/livekit_sip.proto b/protobufs/livekit_sip.proto index e8372605..7a404a7b 100644 --- a/protobufs/livekit_sip.proto +++ b/protobufs/livekit_sip.proto @@ -56,6 +56,8 @@ service SIP { rpc CreateSIPInboundTrunk(CreateSIPInboundTrunkRequest) returns (SIPInboundTrunkInfo); rpc CreateSIPOutboundTrunk(CreateSIPOutboundTrunkRequest) returns (SIPOutboundTrunkInfo); + rpc UpdateSIPInboundTrunk(UpdateSIPInboundTrunkRequest) returns (SIPInboundTrunkInfo); + rpc UpdateSIPOutboundTrunk(UpdateSIPOutboundTrunkRequest) returns (SIPOutboundTrunkInfo); rpc GetSIPInboundTrunk(GetSIPInboundTrunkRequest) returns (GetSIPInboundTrunkResponse); rpc GetSIPOutboundTrunk(GetSIPOutboundTrunkRequest) returns (GetSIPOutboundTrunkResponse); rpc ListSIPInboundTrunk(ListSIPInboundTrunkRequest) returns (ListSIPInboundTrunkResponse); @@ -63,6 +65,7 @@ service SIP { rpc DeleteSIPTrunk(DeleteSIPTrunkRequest) returns (SIPTrunkInfo); rpc CreateSIPDispatchRule(CreateSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); + rpc UpdateSIPDispatchRule(UpdateSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); rpc ListSIPDispatchRule(ListSIPDispatchRuleRequest) returns (ListSIPDispatchRuleResponse); rpc DeleteSIPDispatchRule(DeleteSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); @@ -161,6 +164,14 @@ message CreateSIPInboundTrunkRequest { SIPInboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPInboundTrunkRequest { + string sip_trunk_id = 1; + oneof action { + SIPInboundTrunkInfo replace = 2; + SIPInboundTrunkUpdate update = 3; + } +} + message SIPInboundTrunkInfo { string sip_trunk_id = 1; @@ -199,10 +210,28 @@ message SIPInboundTrunkInfo { bool krisp_enabled = 13; } +message SIPInboundTrunkUpdate { + ListUpdate numbers = 1; + ListUpdate allowed_addresses = 2; + ListUpdate allowed_numbers = 3; + optional string auth_username = 4; + optional string auth_password = 5; + optional string name = 6; + optional string metadata = 7; +} + message CreateSIPOutboundTrunkRequest { SIPOutboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPOutboundTrunkRequest { + string sip_trunk_id = 1; + oneof action { + SIPOutboundTrunkInfo replace = 2; + SIPOutboundTrunkUpdate update = 3; + } +} + message SIPOutboundTrunkInfo { string sip_trunk_id = 1; @@ -234,6 +263,16 @@ message SIPOutboundTrunkInfo { map headers_to_attributes = 10; } +message SIPOutboundTrunkUpdate { + optional string address = 1; + optional SIPTransport transport = 2; + ListUpdate numbers = 3; + optional string auth_username = 4; + optional string auth_password = 5; + optional string name = 6; + optional string metadata = 7; +} + message GetSIPInboundTrunkRequest { string sip_trunk_id = 1; } @@ -320,29 +359,39 @@ message SIPDispatchRule { } message CreateSIPDispatchRuleRequest { - SIPDispatchRule rule = 1; + SIPDispatchRuleInfo dispatch_rule = 8; // Rule ID is ignored + + SIPDispatchRule rule = 1 [deprecated=true]; // What trunks are accepted for this dispatch rule // If empty all trunks will match this dispatch rule - repeated string trunk_ids = 2; + repeated string trunk_ids = 2 [deprecated=true]; // By default the From value (Phone number) is used for participant name/identity and added to attributes. // If true, a random value for identity will be used and numbers will be omitted from attributes. - bool hide_phone_number = 3; + bool hide_phone_number = 3 [deprecated=true]; // Dispatch Rule will only accept a call made to these numbers (if set). - repeated string inbound_numbers = 6; + repeated string inbound_numbers = 6 [deprecated=true]; // Optional human-readable name for the Dispatch Rule. - string name = 4; + string name = 4 [deprecated=true]; // User-defined metadata for the Dispatch Rule. // Participants created by this rule will inherit this metadata. - string metadata = 5; + string metadata = 5 [deprecated=true]; // User-defined attributes for the Dispatch Rule. // Participants created by this rule will inherit these attributes. - map attributes = 7; + map attributes = 7 [deprecated=true]; + + // NEXT ID: 9 +} - // NEXT ID: 8 +message UpdateSIPDispatchRuleRequest { + string sip_dispatch_rule_id = 1; + oneof action { + SIPDispatchRuleInfo replace = 2; + SIPDispatchRuleUpdate update = 3; + } } message SIPDispatchRuleInfo { @@ -365,6 +414,14 @@ message SIPDispatchRuleInfo { // NEXT ID: 9 } +message SIPDispatchRuleUpdate { + ListUpdate trunk_ids = 1; + SIPDispatchRule rule = 2; + optional string name = 3; + optional string metadata = 4; + map attributes = 5; +} + message ListSIPDispatchRuleRequest { }