From 211fc0770ce3e1ac2207092135a3da3f85561897 Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Fri, 25 Oct 2024 13:08:46 +0300 Subject: [PATCH] Update API for SIP. Allow setting outbound number. --- .changeset/yellow-beers-sin.md | 6 + livekit/livekit_sip.pb.go | 1468 ++++++++++++++++++-------------- livekit/livekit_sip.twirp.go | 1359 +++++++++++++++++++++++------ livekit/sip.go | 74 +- protobufs/livekit_sip.proto | 40 +- rpc/sip.go | 9 +- 6 files changed, 2063 insertions(+), 893 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..7da5d691 --- /dev/null +++ b/.changeset/yellow-beers-sin.md @@ -0,0 +1,6 @@ +--- +"@livekit/protocol": minor +"github.com/livekit/protocol": minor +--- + +Update API for SIP. Allow setting outbound number. diff --git a/livekit/livekit_sip.pb.go b/livekit/livekit_sip.pb.go index 01f97396..70ea8b41 100644 --- a/livekit/livekit_sip.pb.go +++ b/livekit/livekit_sip.pb.go @@ -540,6 +540,51 @@ func (x *CreateSIPInboundTrunkRequest) GetTrunk() *SIPInboundTrunkInfo { return nil } +type UpdateSIPInboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trunk *SIPInboundTrunkInfo `protobuf:"bytes,1,opt,name=trunk,proto3" json:"trunk,omitempty"` // Trunk ID is required +} + +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) GetTrunk() *SIPInboundTrunkInfo { + if x != nil { + return x.Trunk + } + return nil +} + type SIPInboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -576,7 +621,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 +633,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 +646,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 { @@ -705,7 +750,7 @@ type CreateSIPOutboundTrunkRequest struct { func (x *CreateSIPOutboundTrunkRequest) Reset() { *x = CreateSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[4] + mi := &file_livekit_sip_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -717,7 +762,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[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -730,7 +775,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{5} } func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { @@ -740,6 +785,51 @@ func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { return nil } +type UpdateSIPOutboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Trunk *SIPOutboundTrunkInfo `protobuf:"bytes,1,opt,name=trunk,proto3" json:"trunk,omitempty"` // Trunk ID is required +} + +func (x *UpdateSIPOutboundTrunkRequest) Reset() { + *x = UpdateSIPOutboundTrunkRequest{} + mi := &file_livekit_sip_proto_msgTypes[6] + 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[6] + 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{6} +} + +func (x *UpdateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { + if x != nil { + return x.Trunk + } + return nil +} + type SIPOutboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -771,7 +861,7 @@ type SIPOutboundTrunkInfo struct { func (x *SIPOutboundTrunkInfo) Reset() { *x = SIPOutboundTrunkInfo{} - mi := &file_livekit_sip_proto_msgTypes[5] + mi := &file_livekit_sip_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -783,7 +873,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[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -796,7 +886,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{7} } func (x *SIPOutboundTrunkInfo) GetSipTrunkId() string { @@ -879,7 +969,7 @@ type GetSIPInboundTrunkRequest struct { func (x *GetSIPInboundTrunkRequest) Reset() { *x = GetSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[6] + mi := &file_livekit_sip_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -891,7 +981,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[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -904,7 +994,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{8} } func (x *GetSIPInboundTrunkRequest) GetSipTrunkId() string { @@ -924,7 +1014,7 @@ type GetSIPInboundTrunkResponse struct { func (x *GetSIPInboundTrunkResponse) Reset() { *x = GetSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[7] + mi := &file_livekit_sip_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +1026,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[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +1039,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{9} } func (x *GetSIPInboundTrunkResponse) GetTrunk() *SIPInboundTrunkInfo { @@ -969,7 +1059,7 @@ type GetSIPOutboundTrunkRequest struct { func (x *GetSIPOutboundTrunkRequest) Reset() { *x = GetSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[8] + mi := &file_livekit_sip_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -981,7 +1071,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[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -994,7 +1084,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{10} } func (x *GetSIPOutboundTrunkRequest) GetSipTrunkId() string { @@ -1014,7 +1104,7 @@ type GetSIPOutboundTrunkResponse struct { func (x *GetSIPOutboundTrunkResponse) Reset() { *x = GetSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[9] + mi := &file_livekit_sip_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1026,7 +1116,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[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1039,7 +1129,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{11} } func (x *GetSIPOutboundTrunkResponse) GetTrunk() *SIPOutboundTrunkInfo { @@ -1058,7 +1148,7 @@ type ListSIPTrunkRequest struct { func (x *ListSIPTrunkRequest) Reset() { *x = ListSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[10] + mi := &file_livekit_sip_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1070,7 +1160,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[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1083,7 +1173,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{12} } // Deprecated: Marked as deprecated in livekit_sip.proto. @@ -1097,7 +1187,7 @@ type ListSIPTrunkResponse struct { func (x *ListSIPTrunkResponse) Reset() { *x = ListSIPTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[11] + mi := &file_livekit_sip_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1109,7 +1199,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[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1122,7 +1212,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{13} } func (x *ListSIPTrunkResponse) GetItems() []*SIPTrunkInfo { @@ -1140,7 +1230,7 @@ type ListSIPInboundTrunkRequest struct { func (x *ListSIPInboundTrunkRequest) Reset() { *x = ListSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[12] + mi := &file_livekit_sip_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1242,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[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1255,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{14} } type ListSIPInboundTrunkResponse struct { @@ -1178,7 +1268,7 @@ type ListSIPInboundTrunkResponse struct { func (x *ListSIPInboundTrunkResponse) Reset() { *x = ListSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[13] + mi := &file_livekit_sip_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1280,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[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1293,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{15} } func (x *ListSIPInboundTrunkResponse) GetItems() []*SIPInboundTrunkInfo { @@ -1221,7 +1311,7 @@ type ListSIPOutboundTrunkRequest struct { func (x *ListSIPOutboundTrunkRequest) Reset() { *x = ListSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[14] + mi := &file_livekit_sip_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1323,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[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1336,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{16} } type ListSIPOutboundTrunkResponse struct { @@ -1259,7 +1349,7 @@ type ListSIPOutboundTrunkResponse struct { func (x *ListSIPOutboundTrunkResponse) Reset() { *x = ListSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[15] + mi := &file_livekit_sip_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1271,7 +1361,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[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1284,7 +1374,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{17} } func (x *ListSIPOutboundTrunkResponse) GetItems() []*SIPOutboundTrunkInfo { @@ -1304,7 +1394,7 @@ type DeleteSIPTrunkRequest struct { func (x *DeleteSIPTrunkRequest) Reset() { *x = DeleteSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[16] + mi := &file_livekit_sip_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1316,7 +1406,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[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1329,7 +1419,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{18} } func (x *DeleteSIPTrunkRequest) GetSipTrunkId() string { @@ -1352,7 +1442,7 @@ type SIPDispatchRuleDirect struct { func (x *SIPDispatchRuleDirect) Reset() { *x = SIPDispatchRuleDirect{} - mi := &file_livekit_sip_proto_msgTypes[17] + mi := &file_livekit_sip_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1364,7 +1454,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[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1377,7 +1467,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{19} } func (x *SIPDispatchRuleDirect) GetRoomName() string { @@ -1407,7 +1497,7 @@ type SIPDispatchRuleIndividual struct { func (x *SIPDispatchRuleIndividual) Reset() { *x = SIPDispatchRuleIndividual{} - mi := &file_livekit_sip_proto_msgTypes[18] + mi := &file_livekit_sip_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1509,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[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1522,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{20} } func (x *SIPDispatchRuleIndividual) GetRoomPrefix() string { @@ -1464,7 +1554,7 @@ type SIPDispatchRuleCallee struct { func (x *SIPDispatchRuleCallee) Reset() { *x = SIPDispatchRuleCallee{} - mi := &file_livekit_sip_proto_msgTypes[19] + mi := &file_livekit_sip_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1476,7 +1566,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[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1489,7 +1579,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{21} } func (x *SIPDispatchRuleCallee) GetRoomPrefix() string { @@ -1528,7 +1618,7 @@ type SIPDispatchRule struct { func (x *SIPDispatchRule) Reset() { *x = SIPDispatchRule{} - mi := &file_livekit_sip_proto_msgTypes[20] + mi := &file_livekit_sip_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1540,7 +1630,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[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1553,7 +1643,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{22} } func (m *SIPDispatchRule) GetRule() isSIPDispatchRule_Rule { @@ -1616,28 +1706,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[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1649,7 +1753,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[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1662,9 +1766,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{23} +} + +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 +1784,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 +1792,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 +1800,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 +1808,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 +1816,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 +1824,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 +1832,51 @@ func (x *CreateSIPDispatchRuleRequest) GetAttributes() map[string]string { return nil } +type UpdateSIPDispatchRuleRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DispatchRule *SIPDispatchRuleInfo `protobuf:"bytes,1,opt,name=dispatch_rule,json=dispatchRule,proto3" json:"dispatch_rule,omitempty"` // Rule ID is required +} + +func (x *UpdateSIPDispatchRuleRequest) Reset() { + *x = UpdateSIPDispatchRuleRequest{} + mi := &file_livekit_sip_proto_msgTypes[24] + 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[24] + 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{24} +} + +func (x *UpdateSIPDispatchRuleRequest) GetDispatchRule() *SIPDispatchRuleInfo { + if x != nil { + return x.DispatchRule + } + return nil +} + type SIPDispatchRuleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1737,7 +1900,7 @@ type SIPDispatchRuleInfo struct { func (x *SIPDispatchRuleInfo) Reset() { *x = SIPDispatchRuleInfo{} - mi := &file_livekit_sip_proto_msgTypes[22] + mi := &file_livekit_sip_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1749,7 +1912,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[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1762,7 +1925,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{25} } func (x *SIPDispatchRuleInfo) GetSipDispatchRuleId() string { @@ -1829,7 +1992,7 @@ type ListSIPDispatchRuleRequest struct { func (x *ListSIPDispatchRuleRequest) Reset() { *x = ListSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[23] + mi := &file_livekit_sip_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1841,7 +2004,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[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1854,7 +2017,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{26} } type ListSIPDispatchRuleResponse struct { @@ -1867,7 +2030,7 @@ type ListSIPDispatchRuleResponse struct { func (x *ListSIPDispatchRuleResponse) Reset() { *x = ListSIPDispatchRuleResponse{} - mi := &file_livekit_sip_proto_msgTypes[24] + mi := &file_livekit_sip_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1879,7 +2042,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[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1892,7 +2055,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{27} } func (x *ListSIPDispatchRuleResponse) GetItems() []*SIPDispatchRuleInfo { @@ -1912,7 +2075,7 @@ type DeleteSIPDispatchRuleRequest struct { func (x *DeleteSIPDispatchRuleRequest) Reset() { *x = DeleteSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[25] + mi := &file_livekit_sip_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1924,7 +2087,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[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1937,7 +2100,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{28} } func (x *DeleteSIPDispatchRuleRequest) GetSipDispatchRuleId() string { @@ -1958,6 +2121,8 @@ type CreateSIPParticipantRequest struct { SipTrunkId string `protobuf:"bytes,1,opt,name=sip_trunk_id,json=sipTrunkId,proto3" json:"sip_trunk_id,omitempty"` // What number should be dialed via SIP SipCallTo string `protobuf:"bytes,2,opt,name=sip_call_to,json=sipCallTo,proto3" json:"sip_call_to,omitempty"` + // Optional SIP From number to use. If empty, trunk number is used. + SipNumber string `protobuf:"bytes,15,opt,name=sip_number,json=sipNumber,proto3" json:"sip_number,omitempty"` // What LiveKit room should this participant be connected too RoomName string `protobuf:"bytes,3,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"` // Optional identity of the participant in LiveKit room @@ -1984,12 +2149,12 @@ type CreateSIPParticipantRequest struct { // Max call duration. MaxCallDuration *durationpb.Duration `protobuf:"bytes,12,opt,name=max_call_duration,json=maxCallDuration,proto3" json:"max_call_duration,omitempty"` // Enable voice isolation for the callee. - EnableKrisp bool `protobuf:"varint,14,opt,name=enable_krisp,json=enableKrisp,proto3" json:"enable_krisp,omitempty"` // NEXT ID: 15 + EnableKrisp bool `protobuf:"varint,14,opt,name=enable_krisp,json=enableKrisp,proto3" json:"enable_krisp,omitempty"` // NEXT ID: 16 } func (x *CreateSIPParticipantRequest) Reset() { *x = CreateSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[26] + mi := &file_livekit_sip_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2001,7 +2166,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[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2014,7 +2179,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{29} } func (x *CreateSIPParticipantRequest) GetSipTrunkId() string { @@ -2031,6 +2196,13 @@ func (x *CreateSIPParticipantRequest) GetSipCallTo() string { return "" } +func (x *CreateSIPParticipantRequest) GetSipNumber() string { + if x != nil { + return x.SipNumber + } + return "" +} + func (x *CreateSIPParticipantRequest) GetRoomName() string { if x != nil { return x.RoomName @@ -2129,7 +2301,7 @@ type SIPParticipantInfo struct { func (x *SIPParticipantInfo) Reset() { *x = SIPParticipantInfo{} - mi := &file_livekit_sip_proto_msgTypes[27] + mi := &file_livekit_sip_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2141,7 +2313,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[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2154,7 +2326,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{30} } func (x *SIPParticipantInfo) GetParticipantId() string { @@ -2199,7 +2371,7 @@ type TransferSIPParticipantRequest struct { func (x *TransferSIPParticipantRequest) Reset() { *x = TransferSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[28] + mi := &file_livekit_sip_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2211,7 +2383,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[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2224,7 +2396,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{31} } func (x *TransferSIPParticipantRequest) GetParticipantIdentity() string { @@ -2277,7 +2449,7 @@ type SIPCallInfo struct { func (x *SIPCallInfo) Reset() { *x = SIPCallInfo{} - mi := &file_livekit_sip_proto_msgTypes[29] + mi := &file_livekit_sip_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2289,7 +2461,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[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2302,7 +2474,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{32} } func (x *SIPCallInfo) GetCallId() string { @@ -2404,13 +2576,13 @@ type SIPUri struct { User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` - Port string `protobuf:"bytes,4,opt,name=port,proto3" json:"port,omitempty"` + Port uint32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"` Transport SIPTransport `protobuf:"varint,5,opt,name=transport,proto3,enum=livekit.SIPTransport" json:"transport,omitempty"` } func (x *SIPUri) Reset() { *x = SIPUri{} - mi := &file_livekit_sip_proto_msgTypes[30] + mi := &file_livekit_sip_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2422,7 +2594,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[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2607,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{33} } func (x *SIPUri) GetUser() string { @@ -2459,11 +2631,11 @@ func (x *SIPUri) GetIp() string { return "" } -func (x *SIPUri) GetPort() string { +func (x *SIPUri) GetPort() uint32 { if x != nil { return x.Port } - return "" + return 0 } func (x *SIPUri) GetTransport() SIPTransport { @@ -2560,444 +2732,487 @@ 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, - 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, 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, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x52, 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, 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, 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, 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, 0x54, + 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, + 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, 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, + 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, 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, - 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, + 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, 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, 0x50, 0x44, 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, - 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, 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, - 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, + 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, 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, 0x61, 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, 0x41, 0x0a, + 0x0d, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, + 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, + 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, 0xaa, 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, 0x1d, 0x0a, 0x0a, 0x73, 0x69, + 0x70, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x70, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 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, 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, 0x09, 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, + 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, 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, 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, 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, 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, 0x24, 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, 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, - 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, + 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, 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, 0x60, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 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, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 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, 0x5c, 0x0a, - 0x15, 0x44, 0x65, 0x6c, 0x65, 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, 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, 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, 0x59, 0x0a, 0x14, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x12, 0x24, 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, 0x1a, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x58, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 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, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, - 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, - 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 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, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 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, 0x1a, + 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 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, 0x5c, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 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, 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, 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, 0x59, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x24, 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, 0x1a, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x58, + 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 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, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, + 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, + 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3013,7 +3228,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, 41) var file_livekit_sip_proto_goTypes = []any{ (SIPTransport)(0), // 0: livekit.SIPTransport (SIPCallStatus)(0), // 1: livekit.SIPCallStatus @@ -3021,109 +3236,122 @@ 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 + (*CreateSIPOutboundTrunkRequest)(nil), // 8: livekit.CreateSIPOutboundTrunkRequest + (*UpdateSIPOutboundTrunkRequest)(nil), // 9: livekit.UpdateSIPOutboundTrunkRequest + (*SIPOutboundTrunkInfo)(nil), // 10: livekit.SIPOutboundTrunkInfo + (*GetSIPInboundTrunkRequest)(nil), // 11: livekit.GetSIPInboundTrunkRequest + (*GetSIPInboundTrunkResponse)(nil), // 12: livekit.GetSIPInboundTrunkResponse + (*GetSIPOutboundTrunkRequest)(nil), // 13: livekit.GetSIPOutboundTrunkRequest + (*GetSIPOutboundTrunkResponse)(nil), // 14: livekit.GetSIPOutboundTrunkResponse + (*ListSIPTrunkRequest)(nil), // 15: livekit.ListSIPTrunkRequest + (*ListSIPTrunkResponse)(nil), // 16: livekit.ListSIPTrunkResponse + (*ListSIPInboundTrunkRequest)(nil), // 17: livekit.ListSIPInboundTrunkRequest + (*ListSIPInboundTrunkResponse)(nil), // 18: livekit.ListSIPInboundTrunkResponse + (*ListSIPOutboundTrunkRequest)(nil), // 19: livekit.ListSIPOutboundTrunkRequest + (*ListSIPOutboundTrunkResponse)(nil), // 20: livekit.ListSIPOutboundTrunkResponse + (*DeleteSIPTrunkRequest)(nil), // 21: livekit.DeleteSIPTrunkRequest + (*SIPDispatchRuleDirect)(nil), // 22: livekit.SIPDispatchRuleDirect + (*SIPDispatchRuleIndividual)(nil), // 23: livekit.SIPDispatchRuleIndividual + (*SIPDispatchRuleCallee)(nil), // 24: livekit.SIPDispatchRuleCallee + (*SIPDispatchRule)(nil), // 25: livekit.SIPDispatchRule + (*CreateSIPDispatchRuleRequest)(nil), // 26: livekit.CreateSIPDispatchRuleRequest + (*UpdateSIPDispatchRuleRequest)(nil), // 27: livekit.UpdateSIPDispatchRuleRequest + (*SIPDispatchRuleInfo)(nil), // 28: livekit.SIPDispatchRuleInfo + (*ListSIPDispatchRuleRequest)(nil), // 29: livekit.ListSIPDispatchRuleRequest + (*ListSIPDispatchRuleResponse)(nil), // 30: livekit.ListSIPDispatchRuleResponse + (*DeleteSIPDispatchRuleRequest)(nil), // 31: livekit.DeleteSIPDispatchRuleRequest + (*CreateSIPParticipantRequest)(nil), // 32: livekit.CreateSIPParticipantRequest + (*SIPParticipantInfo)(nil), // 33: livekit.SIPParticipantInfo + (*TransferSIPParticipantRequest)(nil), // 34: livekit.TransferSIPParticipantRequest + (*SIPCallInfo)(nil), // 35: livekit.SIPCallInfo + (*SIPUri)(nil), // 36: livekit.SIPUri + nil, // 37: livekit.SIPInboundTrunkInfo.HeadersEntry + nil, // 38: livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + nil, // 39: livekit.SIPOutboundTrunkInfo.HeadersEntry + nil, // 40: livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + nil, // 41: livekit.CreateSIPDispatchRuleRequest.AttributesEntry + nil, // 42: livekit.SIPDispatchRuleInfo.AttributesEntry + nil, // 43: livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + (*durationpb.Duration)(nil), // 44: google.protobuf.Duration + (DisconnectReason)(0), // 45: livekit.DisconnectReason + (*emptypb.Empty)(nil), // 46: 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.trunk:type_name -> livekit.SIPInboundTrunkInfo + 37, // 4: livekit.SIPInboundTrunkInfo.headers:type_name -> livekit.SIPInboundTrunkInfo.HeadersEntry + 38, // 5: livekit.SIPInboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + 44, // 6: livekit.SIPInboundTrunkInfo.ringing_timeout:type_name -> google.protobuf.Duration + 44, // 7: livekit.SIPInboundTrunkInfo.max_call_duration:type_name -> google.protobuf.Duration + 10, // 8: livekit.CreateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 10, // 9: livekit.UpdateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 0, // 10: livekit.SIPOutboundTrunkInfo.transport:type_name -> livekit.SIPTransport + 39, // 11: livekit.SIPOutboundTrunkInfo.headers:type_name -> livekit.SIPOutboundTrunkInfo.HeadersEntry + 40, // 12: livekit.SIPOutboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + 7, // 13: livekit.GetSIPInboundTrunkResponse.trunk:type_name -> livekit.SIPInboundTrunkInfo + 10, // 14: livekit.GetSIPOutboundTrunkResponse.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 4, // 15: livekit.ListSIPTrunkResponse.items:type_name -> livekit.SIPTrunkInfo + 7, // 16: livekit.ListSIPInboundTrunkResponse.items:type_name -> livekit.SIPInboundTrunkInfo + 10, // 17: livekit.ListSIPOutboundTrunkResponse.items:type_name -> livekit.SIPOutboundTrunkInfo + 22, // 18: livekit.SIPDispatchRule.dispatch_rule_direct:type_name -> livekit.SIPDispatchRuleDirect + 23, // 19: livekit.SIPDispatchRule.dispatch_rule_individual:type_name -> livekit.SIPDispatchRuleIndividual + 24, // 20: livekit.SIPDispatchRule.dispatch_rule_callee:type_name -> livekit.SIPDispatchRuleCallee + 28, // 21: livekit.CreateSIPDispatchRuleRequest.dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 25, // 22: livekit.CreateSIPDispatchRuleRequest.rule:type_name -> livekit.SIPDispatchRule + 41, // 23: livekit.CreateSIPDispatchRuleRequest.attributes:type_name -> livekit.CreateSIPDispatchRuleRequest.AttributesEntry + 28, // 24: livekit.UpdateSIPDispatchRuleRequest.dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 25, // 25: livekit.SIPDispatchRuleInfo.rule:type_name -> livekit.SIPDispatchRule + 42, // 26: livekit.SIPDispatchRuleInfo.attributes:type_name -> livekit.SIPDispatchRuleInfo.AttributesEntry + 28, // 27: livekit.ListSIPDispatchRuleResponse.items:type_name -> livekit.SIPDispatchRuleInfo + 43, // 28: livekit.CreateSIPParticipantRequest.participant_attributes:type_name -> livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + 44, // 29: livekit.CreateSIPParticipantRequest.ringing_timeout:type_name -> google.protobuf.Duration + 44, // 30: livekit.CreateSIPParticipantRequest.max_call_duration:type_name -> google.protobuf.Duration + 36, // 31: livekit.SIPCallInfo.from_uri:type_name -> livekit.SIPUri + 36, // 32: livekit.SIPCallInfo.to_uri:type_name -> livekit.SIPUri + 1, // 33: livekit.SIPCallInfo.call_status:type_name -> livekit.SIPCallStatus + 45, // 34: livekit.SIPCallInfo.disconnect_reason:type_name -> livekit.DisconnectReason + 0, // 35: livekit.SIPUri.transport:type_name -> livekit.SIPTransport + 15, // 36: livekit.SIP.ListSIPTrunk:input_type -> livekit.ListSIPTrunkRequest + 5, // 37: livekit.SIP.CreateSIPInboundTrunk:input_type -> livekit.CreateSIPInboundTrunkRequest + 8, // 38: livekit.SIP.CreateSIPOutboundTrunk:input_type -> livekit.CreateSIPOutboundTrunkRequest + 6, // 39: livekit.SIP.UpdateSIPInboundTrunk:input_type -> livekit.UpdateSIPInboundTrunkRequest + 9, // 40: livekit.SIP.UpdateSIPOutboundTrunk:input_type -> livekit.UpdateSIPOutboundTrunkRequest + 11, // 41: livekit.SIP.GetSIPInboundTrunk:input_type -> livekit.GetSIPInboundTrunkRequest + 13, // 42: livekit.SIP.GetSIPOutboundTrunk:input_type -> livekit.GetSIPOutboundTrunkRequest + 17, // 43: livekit.SIP.ListSIPInboundTrunk:input_type -> livekit.ListSIPInboundTrunkRequest + 19, // 44: livekit.SIP.ListSIPOutboundTrunk:input_type -> livekit.ListSIPOutboundTrunkRequest + 21, // 45: livekit.SIP.DeleteSIPTrunk:input_type -> livekit.DeleteSIPTrunkRequest + 26, // 46: livekit.SIP.CreateSIPDispatchRule:input_type -> livekit.CreateSIPDispatchRuleRequest + 27, // 47: livekit.SIP.UpdateSIPDispatchRule:input_type -> livekit.UpdateSIPDispatchRuleRequest + 29, // 48: livekit.SIP.ListSIPDispatchRule:input_type -> livekit.ListSIPDispatchRuleRequest + 31, // 49: livekit.SIP.DeleteSIPDispatchRule:input_type -> livekit.DeleteSIPDispatchRuleRequest + 32, // 50: livekit.SIP.CreateSIPParticipant:input_type -> livekit.CreateSIPParticipantRequest + 34, // 51: livekit.SIP.TransferSIPParticipant:input_type -> livekit.TransferSIPParticipantRequest + 16, // 52: livekit.SIP.ListSIPTrunk:output_type -> livekit.ListSIPTrunkResponse + 7, // 53: livekit.SIP.CreateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 10, // 54: livekit.SIP.CreateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 7, // 55: livekit.SIP.UpdateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 10, // 56: livekit.SIP.UpdateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 12, // 57: livekit.SIP.GetSIPInboundTrunk:output_type -> livekit.GetSIPInboundTrunkResponse + 14, // 58: livekit.SIP.GetSIPOutboundTrunk:output_type -> livekit.GetSIPOutboundTrunkResponse + 18, // 59: livekit.SIP.ListSIPInboundTrunk:output_type -> livekit.ListSIPInboundTrunkResponse + 20, // 60: livekit.SIP.ListSIPOutboundTrunk:output_type -> livekit.ListSIPOutboundTrunkResponse + 4, // 61: livekit.SIP.DeleteSIPTrunk:output_type -> livekit.SIPTrunkInfo + 28, // 62: livekit.SIP.CreateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 28, // 63: livekit.SIP.UpdateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 30, // 64: livekit.SIP.ListSIPDispatchRule:output_type -> livekit.ListSIPDispatchRuleResponse + 28, // 65: livekit.SIP.DeleteSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 33, // 66: livekit.SIP.CreateSIPParticipant:output_type -> livekit.SIPParticipantInfo + 46, // 67: livekit.SIP.TransferSIPParticipant:output_type -> google.protobuf.Empty + 52, // [52:68] is the sub-list for method output_type + 36, // [36:52] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_livekit_sip_proto_init() } @@ -3132,7 +3360,7 @@ 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[22].OneofWrappers = []any{ (*SIPDispatchRule_DispatchRuleDirect)(nil), (*SIPDispatchRule_DispatchRuleIndividual)(nil), (*SIPDispatchRule_DispatchRuleCallee)(nil), @@ -3143,7 +3371,7 @@ func file_livekit_sip_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_sip_proto_rawDesc, NumEnums: 3, - NumMessages: 38, + NumMessages: 41, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_sip.twirp.go b/livekit/livekit_sip.twirp.go index 5cfe0f38..b3a6315e 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,156 @@ 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, 0xe4, 0xa9, 0x8e, 0xdf, 0x89, 0xbc, 0xcf, 0x45, 0xca, 0x93, 0x4b, 0xf9, - 0xe3, 0x82, 0x7b, 0xb1, 0xb2, 0xc7, 0x33, 0x5e, 0x1d, 0x2b, 0xad, 0xfe, 0x68, 0x38, 0x50, 0xc6, - 0x6a, 0xeb, 0x64, 0x3c, 0xa8, 0xdc, 0x41, 0xbb, 0xb0, 0x15, 0xa4, 0x9f, 0x74, 0x86, 0x95, 0xd4, - 0x32, 0x79, 0xdc, 0x1e, 0x56, 0xd2, 0x11, 0xe4, 0xe3, 0x51, 0x25, 0xf3, 0xe4, 0x2d, 0x6c, 0x04, - 0x82, 0xc9, 0xe5, 0xda, 0x23, 0xb5, 0xdd, 0x3a, 0x3e, 0x56, 0x7b, 0xfd, 0xf6, 0xe0, 0x8b, 0x5e, - 0xff, 0x55, 0xe5, 0x0e, 0xaa, 0xc1, 0x1e, 0x23, 0x0f, 0x5b, 0xca, 0xb8, 0xd7, 0xee, 0x0d, 0x5b, - 0xfd, 0xb1, 0xfa, 0xa3, 0x41, 0xaf, 0xdf, 0xed, 0x54, 0x52, 0xa8, 0x0c, 0xc0, 0x78, 0xad, 0xf6, - 0xb8, 0xf7, 0x93, 0x6e, 0x25, 0x8d, 0x76, 0xa0, 0xc2, 0xde, 0x3b, 0xbd, 0x51, 0x7b, 0xd0, 0xef, - 0x77, 0xdb, 0xe3, 0x6e, 0xa7, 0x92, 0x41, 0x1b, 0x50, 0x64, 0xd4, 0xae, 0xa2, 0x0c, 0x94, 0xca, - 0x5a, 0xf3, 0x1f, 0x45, 0xc8, 0x8c, 0x7a, 0x43, 0x34, 0x84, 0x75, 0xff, 0x70, 0x8d, 0x16, 0x87, - 0x8c, 0x88, 0x71, 0xbc, 0x76, 0x14, 0xc3, 0x15, 0x07, 0x96, 0x7a, 0xe6, 0xf7, 0xe9, 0x14, 0xfa, - 0xca, 0xf7, 0xe3, 0x9b, 0x7f, 0x30, 0x46, 0x0f, 0x96, 0x3b, 0x63, 0xc4, 0x1c, 0x5e, 0x4b, 0x9c, - 0xac, 0x91, 0x0a, 0x7b, 0xd1, 0xd7, 0x7e, 0xe8, 0xe3, 0x65, 0xf5, 0x51, 0x53, 0x77, 0x2d, 0x79, - 0x8c, 0x46, 0x3f, 0x07, 0xb4, 0x7c, 0xdd, 0x82, 0x16, 0xe3, 0x58, 0xec, 0x55, 0x4e, 0xed, 0x7e, - 0xa2, 0x8c, 0x3c, 0xd3, 0xfd, 0x12, 0xb6, 0x23, 0xee, 0x4e, 0x50, 0x78, 0x6d, 0xa4, 0xe5, 0x1f, - 0x25, 0x0b, 0x2d, 0x76, 0x88, 0xb8, 0xc7, 0xf0, 0xed, 0x10, 0x7f, 0x07, 0xe2, 0xdb, 0x21, 0xe9, - 0x2a, 0x64, 0xe2, 0x5d, 0xc8, 0x04, 0x3f, 0x62, 0x69, 0x75, 0xe4, 0x57, 0x3c, 0xb8, 0x41, 0x4a, - 0x6e, 0xf2, 0x0a, 0xca, 0xc1, 0x7b, 0x0c, 0xb4, 0x18, 0x5b, 0x23, 0x2f, 0x38, 0x6a, 0xd1, 0x17, - 0x40, 0x01, 0x3c, 0x06, 0x06, 0xfb, 0x07, 0x2b, 0xcd, 0x70, 0xb5, 0xc4, 0x63, 0xb7, 0xcf, 0xdb, - 0x01, 0xdd, 0x4b, 0xde, 0x8e, 0xd2, 0xfc, 0x51, 0xb2, 0x90, 0x74, 0xc4, 0x57, 0xbe, 0x0b, 0x9d, - 0x18, 0xfb, 0x93, 0x4e, 0xfc, 0x37, 0xd8, 0xff, 0x25, 0xec, 0x44, 0x9d, 0x53, 0x7d, 0xb1, 0x4c, - 0x38, 0xc6, 0xd6, 0x0e, 0xfc, 0xba, 0xc3, 0x87, 0xa2, 0x9f, 0xc2, 0x5e, 0xf4, 0xe1, 0xc3, 0x97, - 0xaa, 0x89, 0xa7, 0x93, 0xda, 0xde, 0xd2, 0x31, 0xb0, 0x3b, 0xb3, 0xe8, 0xf5, 0x8b, 0x97, 0x3f, - 0xbb, 0x7f, 0x4e, 0xe8, 0xc5, 0xfc, 0xb4, 0x31, 0x31, 0x67, 0x4f, 0xa5, 0x2e, 0xf1, 0x0f, 0x81, - 0x89, 0x39, 0x75, 0x09, 0x7f, 0x4d, 0x6f, 0x1c, 0x93, 0x2b, 0xfc, 0x86, 0xd0, 0xc6, 0x90, 0xb1, - 0xfe, 0x9d, 0x2e, 0xcb, 0xf7, 0xe7, 0xcf, 0x39, 0xe1, 0x34, 0xc7, 0x97, 0x3c, 0xfb, 0x6f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x04, 0x8a, 0xd6, 0x42, 0xa0, 0x20, 0x00, 0x00, + // 2407 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0xdb, 0xc8, + 0xf1, 0x37, 0x49, 0xf1, 0xd5, 0x94, 0x28, 0x6a, 0xf4, 0x58, 0x8a, 0x92, 0x6c, 0xff, 0xb9, 0xeb, + 0x5d, 0x3f, 0xb6, 0xe8, 0x7f, 0xe8, 0xca, 0x26, 0x71, 0xd5, 0x26, 0x45, 0x93, 0xb2, 0xcd, 0x58, + 0x4b, 0x31, 0x10, 0x95, 0x8a, 0x53, 0x9b, 0x20, 0x10, 0x31, 0x92, 0x26, 0x22, 0x01, 0x04, 0x18, + 0xda, 0x56, 0xee, 0xa9, 0x4a, 0x3e, 0x46, 0x2a, 0x55, 0x39, 0x6c, 0xce, 0xf9, 0x20, 0x39, 0xe5, + 0x94, 0x53, 0x6e, 0x39, 0xe4, 0x33, 0xa4, 0xe6, 0x01, 0x70, 0x00, 0x82, 0x20, 0xe5, 0x38, 0x55, + 0x7b, 0x03, 0xba, 0x7b, 0x7a, 0x1a, 0x3d, 0xbf, 0xee, 0x9e, 0x6e, 0x12, 0x36, 0x46, 0xe4, 0x0d, + 0xbe, 0x22, 0x54, 0xf7, 0x88, 0xd3, 0x70, 0x5c, 0x9b, 0xda, 0x28, 0x2f, 0x49, 0xb5, 0xdb, 0x17, + 0xb6, 0x7d, 0x31, 0xc2, 0x8f, 0x39, 0xf9, 0x6c, 0x72, 0xfe, 0xd8, 0x9c, 0xb8, 0x06, 0x25, 0xb6, + 0x25, 0x04, 0x6b, 0x7b, 0x51, 0x3e, 0x1e, 0x3b, 0xf4, 0x5a, 0x32, 0xb7, 0x7c, 0xc5, 0x63, 0xdb, + 0xc4, 0x23, 0x4f, 0x50, 0xeb, 0xff, 0xc8, 0xc0, 0x76, 0xdb, 0xc5, 0x06, 0xc5, 0x27, 0xdd, 0xfe, + 0xc0, 0x9d, 0x58, 0x57, 0x1a, 0xfe, 0xcd, 0x04, 0x7b, 0x14, 0x3d, 0x82, 0x0d, 0x62, 0x9d, 0xd9, + 0x13, 0xcb, 0xd4, 0x0d, 0xd3, 0x74, 0xb1, 0xe7, 0x61, 0xaf, 0x9a, 0xba, 0x9b, 0xb9, 0x5f, 0xd4, + 0x2a, 0x92, 0xd1, 0xf2, 0xe9, 0xe8, 0x01, 0x54, 0xec, 0x09, 0x0d, 0x49, 0x57, 0xd3, 0x77, 0x53, + 0xf7, 0x8b, 0xda, 0xba, 0x4f, 0x97, 0xc2, 0xe8, 0x33, 0x08, 0x48, 0xba, 0x35, 0x19, 0x9f, 0x61, + 0xb7, 0x9a, 0xe1, 0x92, 0x65, 0x9f, 0xdc, 0xe3, 0x54, 0xf4, 0x05, 0x6c, 0xfb, 0x06, 0x08, 0x39, + 0x4f, 0x77, 0xf1, 0x05, 0x7e, 0x57, 0x5d, 0x61, 0x46, 0x3c, 0x4b, 0x57, 0x53, 0xda, 0xa6, 0x14, + 0x10, 0x2b, 0x3c, 0x8d, 0xb1, 0xd9, 0x06, 0x91, 0x75, 0xd5, 0x22, 0x37, 0xbb, 0x1c, 0x96, 0x66, + 0x46, 0xfb, 0x82, 0x13, 0x0f, 0xbb, 0x96, 0x31, 0xc6, 0xd5, 0xac, 0x30, 0x5a, 0xd2, 0x4f, 0x25, + 0x59, 0x15, 0x75, 0x0c, 0xcf, 0x7b, 0x6b, 0xbb, 0x66, 0x35, 0x17, 0x12, 0xed, 0x4b, 0x32, 0xf3, + 0x5b, 0xf0, 0x7d, 0x81, 0xda, 0x3c, 0x97, 0x0d, 0x7c, 0x14, 0xe8, 0x55, 0x85, 0x03, 0xc5, 0x85, + 0xb0, 0x70, 0xa0, 0x19, 0xc1, 0x0a, 0x57, 0x06, 0x9c, 0xcf, 0x9f, 0x51, 0x0d, 0x0a, 0x63, 0x4c, + 0x0d, 0xd3, 0xa0, 0x46, 0xb5, 0xc4, 0xe9, 0xc1, 0xfb, 0xd3, 0x74, 0x35, 0x55, 0xff, 0x73, 0x16, + 0x56, 0xfd, 0x93, 0xed, 0x5a, 0xe7, 0x36, 0xba, 0x0b, 0xab, 0x1e, 0x71, 0x74, 0xca, 0x08, 0x3a, + 0x31, 0xab, 0x29, 0xbe, 0x08, 0x3c, 0xe2, 0x08, 0x19, 0x13, 0x3d, 0x81, 0x95, 0x2b, 0x62, 0x99, + 0xd5, 0xf2, 0xdd, 0xd4, 0xfd, 0x72, 0xf3, 0x4e, 0x43, 0xe2, 0xa6, 0xa1, 0xaa, 0x69, 0xf0, 0xa7, + 0x57, 0xc4, 0x32, 0x35, 0x2e, 0x1c, 0x8f, 0x96, 0xf4, 0x0d, 0xd0, 0x92, 0x59, 0x1a, 0x2d, 0x2b, + 0xb1, 0x68, 0x79, 0x02, 0x45, 0xea, 0x1a, 0x96, 0xe7, 0xd8, 0x2e, 0xad, 0xae, 0x71, 0xd3, 0xb7, + 0xc3, 0xa6, 0x4b, 0xa6, 0x36, 0x95, 0x9b, 0x0f, 0xb1, 0xec, 0x8d, 0x21, 0x06, 0x4b, 0x43, 0x2c, + 0xb7, 0x3c, 0xc4, 0xf2, 0x37, 0x80, 0x58, 0xe1, 0x26, 0x10, 0x2b, 0x2e, 0x80, 0x58, 0x69, 0x0e, + 0xc4, 0x56, 0xc3, 0x10, 0xab, 0x77, 0xa0, 0x18, 0x20, 0x01, 0x55, 0x60, 0x75, 0xa0, 0x9d, 0xf6, + 0x5e, 0xe9, 0x47, 0x87, 0x2f, 0x5a, 0xed, 0xd7, 0x95, 0x5b, 0x68, 0x03, 0xd6, 0x04, 0xa5, 0xdb, + 0x7b, 0x76, 0x7c, 0xda, 0xeb, 0x54, 0x52, 0x08, 0x41, 0x59, 0x90, 0x8e, 0x4f, 0x07, 0x82, 0x96, + 0xe6, 0x40, 0xd5, 0x60, 0x3f, 0xc8, 0x43, 0x5d, 0xf1, 0xbd, 0xa1, 0x74, 0xd4, 0x84, 0x2c, 0xc7, + 0x2c, 0x07, 0x6c, 0xa9, 0xb9, 0xaf, 0x9e, 0xad, 0x2a, 0xcf, 0xd0, 0xa9, 0x09, 0x51, 0xa6, 0xf3, + 0xd4, 0x31, 0x3f, 0xac, 0xce, 0xdf, 0xe5, 0x60, 0x33, 0x86, 0xbd, 0x44, 0x5c, 0xf9, 0xbe, 0x4d, + 0xcf, 0xf1, 0x6d, 0x26, 0xec, 0x5b, 0x54, 0x85, 0xbc, 0x0f, 0x2e, 0x9e, 0xf1, 0x34, 0xff, 0x95, + 0x1d, 0xa9, 0x31, 0x1a, 0xd9, 0x6f, 0xb1, 0x1a, 0x6c, 0x59, 0x11, 0x6c, 0x92, 0x31, 0x0d, 0xb6, + 0xcf, 0x60, 0xdd, 0x17, 0xf6, 0xd5, 0xe5, 0x04, 0x56, 0x25, 0xd9, 0xc7, 0xea, 0xc7, 0xb0, 0x66, + 0x4c, 0xe8, 0x65, 0x34, 0x69, 0xad, 0x32, 0x62, 0x80, 0x26, 0x5f, 0x28, 0x92, 0xac, 0xb8, 0x50, + 0x80, 0xa2, 0x36, 0xe4, 0x2f, 0xb1, 0x61, 0xfa, 0x99, 0xb7, 0xd4, 0x7c, 0x90, 0xe4, 0xd9, 0xc6, + 0x4b, 0x21, 0x7b, 0x68, 0x51, 0xf7, 0x5a, 0xf3, 0x57, 0x22, 0x02, 0xdb, 0xf2, 0x51, 0xa7, 0xb6, + 0x6e, 0x50, 0xea, 0x92, 0xb3, 0x09, 0xc5, 0x22, 0xd2, 0x4a, 0xcd, 0xef, 0x2e, 0xa3, 0x72, 0x60, + 0xb7, 0x82, 0x75, 0x42, 0xfd, 0xe6, 0xe5, 0x2c, 0x07, 0x3d, 0x83, 0x75, 0x97, 0x58, 0x17, 0xc4, + 0xba, 0xd0, 0x29, 0x19, 0x63, 0x7b, 0x42, 0x79, 0x00, 0x94, 0x9a, 0xbb, 0x0d, 0x51, 0x51, 0x1b, + 0x7e, 0x45, 0x6d, 0x74, 0x64, 0xc5, 0xd5, 0xca, 0x72, 0xc5, 0x40, 0x2c, 0x40, 0x87, 0xb0, 0x31, + 0x36, 0xde, 0xe9, 0x43, 0x63, 0x34, 0xd2, 0xfd, 0xb2, 0xcc, 0xc3, 0x25, 0x51, 0xcb, 0xfa, 0xd8, + 0x78, 0xd7, 0x36, 0x46, 0x23, 0x9f, 0xc0, 0xfc, 0x7b, 0xe5, 0x12, 0xcf, 0xd1, 0xb1, 0x65, 0x9c, + 0x8d, 0xb0, 0xc9, 0x53, 0x59, 0x41, 0x5b, 0xe5, 0xc4, 0x43, 0x41, 0xab, 0x3d, 0x85, 0x55, 0xd5, + 0x67, 0xa8, 0x02, 0x99, 0x2b, 0x7c, 0x2d, 0x21, 0xc7, 0x1e, 0xd1, 0x16, 0x64, 0xdf, 0x18, 0xa3, + 0x89, 0x0f, 0x36, 0xf1, 0xf2, 0x34, 0xfd, 0xfd, 0x54, 0xed, 0x39, 0x54, 0xe7, 0x39, 0xe7, 0x26, + 0x7a, 0xea, 0x03, 0x38, 0x08, 0xe2, 0xf5, 0x58, 0xa6, 0x91, 0x50, 0x70, 0x3d, 0x09, 0x07, 0xd7, + 0x81, 0x7a, 0x5e, 0xa1, 0x05, 0x6a, 0x74, 0x0d, 0xe0, 0x20, 0x88, 0xd8, 0x0f, 0xa7, 0xf5, 0x6f, + 0x2b, 0xb0, 0x15, 0xc7, 0xff, 0xdf, 0x04, 0xad, 0x5f, 0xd1, 0x44, 0x9d, 0xf2, 0x5f, 0xc3, 0x05, + 0x2a, 0xbb, 0x64, 0x81, 0x52, 0x72, 0x40, 0x2e, 0x9c, 0x03, 0x3e, 0x5c, 0xb4, 0x76, 0xa2, 0xd1, + 0xfa, 0x30, 0xd1, 0xa9, 0x73, 0xc2, 0xf5, 0xd7, 0xc9, 0xe1, 0xfa, 0xc5, 0x52, 0x3a, 0x97, 0x8b, + 0xd7, 0x6f, 0x05, 0xfe, 0xbf, 0x84, 0xdd, 0x17, 0x98, 0xce, 0x29, 0x2c, 0x0b, 0x71, 0x55, 0xef, + 0x43, 0x2d, 0x6e, 0xb9, 0xe7, 0xd8, 0x96, 0x87, 0xdf, 0xab, 0x30, 0xfd, 0xd0, 0xd7, 0x18, 0x1b, + 0x37, 0x8b, 0x2d, 0xd2, 0x60, 0x2f, 0x76, 0xbd, 0x34, 0xe9, 0xbd, 0x02, 0x6f, 0x17, 0x36, 0x8f, + 0x88, 0x47, 0x23, 0xad, 0x05, 0xaf, 0xf7, 0x2f, 0x60, 0x2b, 0xcc, 0x92, 0xfb, 0x3c, 0x82, 0x2c, + 0xa1, 0x78, 0x2c, 0x5a, 0x8d, 0x52, 0x34, 0x44, 0x02, 0xfd, 0x5c, 0x86, 0x2b, 0xda, 0x87, 0x9a, + 0x54, 0x14, 0x73, 0x12, 0xf5, 0x9f, 0xc0, 0x5e, 0x2c, 0x77, 0xea, 0x68, 0x75, 0xb7, 0x05, 0x8e, + 0xe6, 0xa2, 0xf5, 0x83, 0x40, 0x65, 0x9c, 0xa7, 0xeb, 0x27, 0xb0, 0x1f, 0xcf, 0x9e, 0x3a, 0x52, + 0xdd, 0x72, 0x91, 0x23, 0xc5, 0x9e, 0x3f, 0x80, 0xed, 0x0e, 0x1e, 0xe1, 0xd9, 0x2e, 0x6d, 0xf1, + 0xb9, 0x3e, 0x87, 0xed, 0x93, 0x6e, 0xbf, 0x43, 0x3c, 0xc7, 0xa0, 0xc3, 0x4b, 0x6d, 0x32, 0xc2, + 0x1d, 0xe2, 0xe2, 0x21, 0x45, 0x7b, 0x50, 0x74, 0x6d, 0x7b, 0xac, 0xf3, 0xec, 0x21, 0xd6, 0x15, + 0x18, 0xa1, 0xc7, 0x32, 0x47, 0x05, 0x32, 0x0e, 0xb1, 0x24, 0xec, 0xd9, 0x63, 0xbd, 0x07, 0xbb, + 0x11, 0x3d, 0x5d, 0xcb, 0x24, 0x6f, 0x88, 0x39, 0x31, 0x46, 0xe8, 0x0e, 0x94, 0xb8, 0x2e, 0xc7, + 0xc5, 0xe7, 0xe4, 0x9d, 0x6f, 0x05, 0x23, 0xf5, 0x39, 0x25, 0x46, 0xdf, 0xe5, 0x8c, 0x5d, 0xac, + 0x10, 0x62, 0xfc, 0x1e, 0xba, 0xd0, 0x3e, 0x14, 0x5d, 0xc3, 0x32, 0xed, 0x31, 0xf9, 0x2d, 0xe6, + 0x29, 0xb9, 0xa0, 0x4d, 0x09, 0xf5, 0x3f, 0xa6, 0x61, 0x3d, 0xb2, 0x15, 0xd2, 0x60, 0xcb, 0x94, + 0xef, 0xba, 0x3b, 0x19, 0x61, 0xdd, 0xe4, 0x4e, 0x91, 0xe8, 0xbe, 0xad, 0x1e, 0xca, 0xac, 0xeb, + 0x5e, 0xde, 0xd2, 0x90, 0x39, 0xeb, 0xd0, 0x5f, 0x42, 0x35, 0xac, 0x93, 0x04, 0x0e, 0xe2, 0xc6, + 0x96, 0x9a, 0xf5, 0x79, 0x7a, 0xa7, 0xae, 0x7c, 0x79, 0x4b, 0xdb, 0x31, 0xe3, 0x9d, 0x3c, 0x63, + 0xf3, 0x90, 0x3b, 0x8c, 0x7f, 0x70, 0x82, 0xcd, 0xc2, 0xad, 0x51, 0x9b, 0x05, 0xf5, 0x59, 0x0e, + 0x56, 0x98, 0xaa, 0xfa, 0x3f, 0x33, 0xca, 0xfd, 0x5b, 0x5d, 0xed, 0x03, 0xad, 0x05, 0x6b, 0xa1, + 0xcd, 0x79, 0x29, 0x89, 0x44, 0x4c, 0xf8, 0x8b, 0xce, 0x6d, 0x6d, 0x55, 0xdd, 0x11, 0xfd, 0xbf, + 0xd8, 0x4b, 0xfa, 0xb8, 0x3a, 0x6f, 0x25, 0x6f, 0xbb, 0xb8, 0x24, 0xba, 0xc3, 0x6a, 0xa6, 0x40, + 0xb6, 0xec, 0x26, 0x39, 0xb3, 0x40, 0x05, 0xb6, 0x3d, 0xd4, 0x80, 0x8d, 0x4b, 0x62, 0x62, 0xdd, + 0xb9, 0xb4, 0x2d, 0xac, 0x8e, 0x13, 0x0a, 0x5c, 0x70, 0x9d, 0x31, 0xfb, 0x8c, 0x27, 0xbb, 0xc4, + 0x47, 0xb3, 0x8d, 0x5b, 0x2e, 0x50, 0x1b, 0x6d, 0xde, 0x76, 0x64, 0xed, 0xe7, 0x85, 0x5c, 0x58, + 0xc5, 0xab, 0xea, 0x6d, 0xa5, 0xfe, 0x67, 0x03, 0xde, 0xf4, 0x0e, 0xf0, 0x1a, 0x40, 0xa9, 0x7f, + 0xf9, 0xc8, 0x75, 0x35, 0xc9, 0xcb, 0x8d, 0x48, 0x45, 0xe2, 0x8a, 0x15, 0x65, 0xb5, 0x2f, 0x61, + 0xfd, 0xbf, 0x29, 0x5a, 0x86, 0xd2, 0x10, 0x2d, 0x75, 0xc8, 0xa9, 0x9b, 0x1e, 0x72, 0xfd, 0x4f, + 0x19, 0xde, 0x1f, 0x45, 0xa5, 0xd0, 0x63, 0xd8, 0x62, 0x89, 0x2a, 0x12, 0x20, 0x7e, 0xc2, 0xda, + 0xf0, 0x88, 0x13, 0x5a, 0x62, 0xa2, 0xcf, 0x25, 0x5a, 0xd2, 0xc9, 0x68, 0x91, 0x48, 0xd9, 0x53, + 0x91, 0x92, 0xe1, 0x57, 0xa5, 0x29, 0x4a, 0x1e, 0xc6, 0xa1, 0x64, 0x85, 0xa7, 0x89, 0x19, 0x84, + 0xc4, 0xb4, 0xf6, 0xf9, 0xd8, 0xd6, 0xde, 0xbf, 0x19, 0x66, 0xe7, 0xdc, 0x0c, 0x73, 0x91, 0x9b, + 0xe1, 0x51, 0x08, 0x15, 0x05, 0x8e, 0x8a, 0xcf, 0x93, 0x1c, 0x1b, 0x05, 0xc3, 0x87, 0x04, 0xc2, + 0xb4, 0x68, 0xc6, 0xc0, 0x40, 0x29, 0x9a, 0x61, 0xee, 0x12, 0x45, 0x73, 0x06, 0x1d, 0xb2, 0x80, + 0x1d, 0xc3, 0x7e, 0x50, 0xc0, 0xe2, 0x90, 0x77, 0x53, 0x78, 0xd4, 0xbf, 0xc9, 0xc1, 0x5e, 0x10, + 0x4a, 0x7d, 0xc3, 0xa5, 0x64, 0x48, 0x1c, 0xc3, 0xa2, 0x4b, 0x17, 0x46, 0x74, 0x1b, 0x4a, 0x4c, + 0x82, 0x77, 0x6c, 0xd4, 0x96, 0x3e, 0x2a, 0x7a, 0xc4, 0x61, 0xa9, 0x71, 0x60, 0xa3, 0x03, 0x60, + 0xd2, 0x3e, 0x5c, 0xd6, 0x03, 0xb6, 0x04, 0x4a, 0xa8, 0x7c, 0x66, 0x22, 0xe5, 0xf3, 0x3b, 0xb0, + 0xe5, 0x4c, 0x6d, 0xd2, 0x89, 0x89, 0x2d, 0x4a, 0xe8, 0xb5, 0xec, 0x09, 0x36, 0x15, 0x5e, 0x57, + 0xb2, 0xd0, 0x03, 0xa8, 0xa8, 0x4b, 0x94, 0x3b, 0xfd, 0xba, 0x42, 0x8f, 0xd3, 0x1e, 0x40, 0xae, + 0x30, 0xa3, 0xfd, 0x2b, 0x1f, 0x7d, 0x6f, 0x60, 0x47, 0x5d, 0xa2, 0x20, 0x51, 0xdc, 0xf9, 0x7f, + 0x34, 0x9b, 0x9f, 0x66, 0x9d, 0xda, 0x50, 0x48, 0x51, 0x70, 0x6e, 0x3b, 0x71, 0x3c, 0x16, 0x25, + 0x26, 0x1d, 0x9f, 0xfb, 0x51, 0xc2, 0x9e, 0xd1, 0x67, 0xb0, 0xe6, 0x8c, 0x8c, 0x6b, 0x9d, 0x75, + 0xd0, 0xd4, 0xb6, 0xc4, 0x44, 0x4c, 0x24, 0xec, 0x55, 0xc6, 0xd0, 0x24, 0x9d, 0xb5, 0x2f, 0x5c, + 0xd0, 0x24, 0xc6, 0x88, 0x0b, 0xca, 0x66, 0x98, 0x11, 0x3b, 0x92, 0x16, 0x1f, 0xdc, 0x10, 0x1f, + 0xdc, 0xdf, 0xa2, 0x46, 0xff, 0xff, 0x60, 0x55, 0xb4, 0xf8, 0x3a, 0x6f, 0xed, 0xf9, 0xb4, 0xb5, + 0xa0, 0x95, 0x04, 0xed, 0x15, 0x23, 0xd5, 0x5e, 0x42, 0x6d, 0xbe, 0xc3, 0x6f, 0x14, 0xee, 0x7f, + 0x49, 0x01, 0x0a, 0x9f, 0x28, 0xcf, 0xc9, 0xf7, 0xa0, 0x1c, 0x46, 0xa9, 0xd4, 0xb6, 0x16, 0xc2, + 0xe7, 0x5c, 0x30, 0xa7, 0xe7, 0x83, 0x39, 0x31, 0x38, 0xd4, 0xc0, 0x23, 0xa6, 0x8c, 0x09, 0x3f, + 0xf0, 0xba, 0x66, 0xfd, 0xaf, 0x29, 0x38, 0xe0, 0xdd, 0xf0, 0x39, 0x76, 0xe3, 0x83, 0x7b, 0x9e, + 0x45, 0xa9, 0x25, 0x2d, 0x4a, 0x47, 0x2c, 0xba, 0x03, 0x25, 0x2a, 0x37, 0x64, 0xa9, 0x40, 0x18, + 0x0c, 0x3e, 0x69, 0x60, 0xcf, 0x22, 0x71, 0x65, 0x16, 0x89, 0xf5, 0x7f, 0x67, 0xa0, 0x74, 0xd2, + 0xed, 0xf3, 0xaf, 0x60, 0xee, 0xfd, 0x08, 0xf2, 0xfe, 0x37, 0x0a, 0xc3, 0x72, 0x43, 0xfe, 0x81, + 0x68, 0x17, 0x0a, 0x41, 0x5e, 0x12, 0xa6, 0xe4, 0x65, 0xad, 0x4a, 0x76, 0xdc, 0x47, 0x90, 0xe7, + 0xcc, 0xc0, 0x69, 0x39, 0xf6, 0x9a, 0x70, 0x42, 0xd9, 0xf9, 0xfe, 0x78, 0x08, 0x85, 0x73, 0xd7, + 0x1e, 0xeb, 0x13, 0x97, 0xf0, 0xf8, 0x2b, 0x35, 0xd7, 0xd5, 0x3c, 0x7e, 0xea, 0x12, 0x2d, 0xcf, + 0x04, 0x4e, 0x5d, 0x82, 0x3e, 0x85, 0x1c, 0xb5, 0xb9, 0x64, 0x3e, 0x5e, 0x32, 0x4b, 0x6d, 0x26, + 0xf7, 0x3d, 0x28, 0xf1, 0x0f, 0xf6, 0xa8, 0x41, 0x27, 0x1e, 0x4f, 0x47, 0xe5, 0xe6, 0x8e, 0x2a, + 0xcc, 0x7c, 0x73, 0xc2, 0xb9, 0x1a, 0x0c, 0x83, 0x67, 0x96, 0x6a, 0x87, 0x3c, 0xed, 0x98, 0xba, + 0x41, 0xf9, 0x70, 0x3a, 0xa3, 0x15, 0x25, 0xa5, 0x45, 0x79, 0x26, 0xa6, 0x86, 0x2b, 0xd9, 0x20, + 0xd8, 0x92, 0xd2, 0xa2, 0xcc, 0x9d, 0xd8, 0x32, 0x05, 0xb3, 0xc4, 0x99, 0x79, 0xfe, 0xde, 0xa2, + 0xe8, 0x39, 0x6c, 0x98, 0xc4, 0x1b, 0xda, 0x96, 0x85, 0x87, 0x54, 0x77, 0xb1, 0xe1, 0xc9, 0x60, + 0x2d, 0x37, 0x77, 0x03, 0xbb, 0x3a, 0x81, 0x84, 0xc6, 0x05, 0xb4, 0x8a, 0x19, 0xa1, 0xb0, 0xd0, + 0xc2, 0xae, 0x6b, 0xbb, 0x3c, 0x03, 0x15, 0x35, 0xf1, 0x52, 0xff, 0x43, 0x0a, 0x72, 0xc2, 0x03, + 0x2c, 0xcf, 0x4d, 0x3c, 0xec, 0xca, 0x83, 0xe6, 0xcf, 0x8c, 0x76, 0x69, 0x7b, 0xd4, 0x9f, 0x1d, + 0xb1, 0x67, 0x54, 0x86, 0x34, 0x71, 0xe4, 0xc1, 0xa6, 0x89, 0xc3, 0x64, 0xf8, 0x40, 0x88, 0x9d, + 0xe7, 0x9a, 0xc6, 0x9f, 0xdf, 0x6b, 0x52, 0xf4, 0xf0, 0x4a, 0xfe, 0xce, 0xe3, 0x4f, 0x8e, 0x76, + 0x78, 0xc4, 0xeb, 0x03, 0xad, 0xd5, 0x3b, 0xe9, 0x1f, 0x6b, 0x03, 0xbd, 0x75, 0x3a, 0x38, 0xae, + 0xdc, 0x42, 0xdb, 0xb0, 0x11, 0xa6, 0x9f, 0x76, 0xfa, 0x95, 0xd4, 0x2c, 0x79, 0xd0, 0xee, 0x57, + 0xd2, 0x31, 0xe4, 0xa3, 0x93, 0x4a, 0xe6, 0xe1, 0x5b, 0x58, 0x0b, 0x1d, 0x26, 0x97, 0x6b, 0x9f, + 0xe8, 0xed, 0xd6, 0xd1, 0x91, 0xde, 0xed, 0xb5, 0x8f, 0xbf, 0xea, 0xf6, 0x5e, 0x54, 0x6e, 0xa1, + 0x1a, 0xec, 0x30, 0x72, 0xbf, 0xa5, 0x0d, 0xba, 0xed, 0x6e, 0xbf, 0xd5, 0x1b, 0xe8, 0x3f, 0x3e, + 0xee, 0xf6, 0x0e, 0x3b, 0x95, 0x14, 0x2a, 0x03, 0x30, 0x5e, 0xab, 0x3d, 0xe8, 0xfe, 0xf4, 0xb0, + 0x92, 0x46, 0x5b, 0x50, 0x61, 0xef, 0x9d, 0xee, 0x49, 0xfb, 0xb8, 0xd7, 0x3b, 0x6c, 0x0f, 0x0e, + 0x3b, 0x95, 0x0c, 0x5a, 0x83, 0x22, 0xa3, 0x1e, 0x6a, 0xda, 0xb1, 0x56, 0x59, 0x69, 0xfe, 0xbd, + 0x04, 0x99, 0x93, 0x6e, 0x1f, 0xf5, 0x61, 0x55, 0x9d, 0x1e, 0xa0, 0xe9, 0x1d, 0x24, 0x66, 0xde, + 0x50, 0x3b, 0x98, 0xc3, 0x15, 0xf7, 0x99, 0x7a, 0xe6, 0xf7, 0xe9, 0x14, 0xfa, 0x5a, 0xf9, 0x1d, + 0x54, 0xed, 0xfc, 0xd1, 0xbd, 0xd9, 0xca, 0x18, 0x33, 0x68, 0xa8, 0x25, 0x8e, 0x0e, 0x90, 0x0e, + 0x3b, 0xf1, 0xd3, 0x52, 0xf4, 0xe9, 0xac, 0xfa, 0xb8, 0xb1, 0x42, 0x2d, 0x79, 0x4e, 0xc0, 0xcc, + 0x8f, 0xfd, 0xa9, 0x43, 0x31, 0x3f, 0xe9, 0xa7, 0x90, 0xc5, 0xe6, 0xc7, 0x8f, 0x65, 0x15, 0xf3, + 0x13, 0xe7, 0xb6, 0x8b, 0xcc, 0xff, 0x05, 0xa0, 0xd9, 0x71, 0x18, 0x9a, 0xb6, 0xcb, 0x73, 0x47, + 0x6d, 0xb5, 0x8f, 0x13, 0x65, 0xe4, 0x8d, 0xf5, 0x57, 0xb0, 0x19, 0x33, 0xdb, 0x42, 0xd1, 0xb5, + 0xb1, 0x96, 0x7f, 0x92, 0x2c, 0x34, 0xdd, 0x21, 0x66, 0xce, 0xa4, 0xec, 0x30, 0x7f, 0x46, 0xa5, + 0xec, 0x90, 0x34, 0xaa, 0x1a, 0x06, 0x03, 0xb3, 0xf0, 0x47, 0xcc, 0xac, 0x8e, 0xfd, 0x8a, 0x7b, + 0x0b, 0xa4, 0xe4, 0x26, 0x2f, 0xa0, 0x1c, 0x9e, 0x33, 0xa1, 0xe9, 0x58, 0x21, 0x76, 0x00, 0x55, + 0x8b, 0x1f, 0xd0, 0x85, 0xc2, 0x29, 0x34, 0x78, 0xb9, 0xb7, 0x54, 0x23, 0x5c, 0x4b, 0x6c, 0x2a, + 0x42, 0x68, 0x9f, 0xa3, 0x3d, 0xa9, 0xcf, 0x5d, 0xa0, 0x7d, 0x7a, 0x96, 0x21, 0xdd, 0x33, 0x67, + 0x19, 0xa7, 0xf9, 0x93, 0x64, 0x21, 0xe9, 0xe6, 0xaf, 0x95, 0x71, 0xde, 0x1c, 0xfb, 0x93, 0xba, + 0xa5, 0x05, 0xf6, 0xbf, 0x86, 0xad, 0xb8, 0x4b, 0xbc, 0x82, 0x94, 0x84, 0x3b, 0x7e, 0x6d, 0x4f, + 0xd5, 0x1d, 0xbd, 0x31, 0xfe, 0x0c, 0x76, 0xe2, 0x6f, 0x66, 0x4a, 0x22, 0x48, 0xbc, 0xba, 0xd5, + 0x76, 0x66, 0xee, 0xc8, 0x87, 0x63, 0x87, 0x5e, 0x3f, 0x7b, 0xfe, 0xf3, 0x8f, 0x2f, 0x08, 0xbd, + 0x9c, 0x9c, 0x35, 0x86, 0xf6, 0xf8, 0xb1, 0xd4, 0x25, 0xfe, 0xc9, 0x32, 0xb4, 0x47, 0x3e, 0xe1, + 0x9b, 0xf4, 0xda, 0x11, 0x79, 0x83, 0x5f, 0x11, 0xda, 0xe8, 0x33, 0xd6, 0xbf, 0xd2, 0x65, 0xf9, + 0xfe, 0xf4, 0x29, 0x27, 0x9c, 0xe5, 0xf8, 0x92, 0x27, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x08, + 0xf5, 0xc6, 0x47, 0x48, 0x23, 0x00, 0x00, } diff --git a/livekit/sip.go b/livekit/sip.go index e91db6bb..64220ea3 100644 --- a/livekit/sip.go +++ b/livekit/sip.go @@ -122,6 +122,9 @@ func (p *CreateSIPOutboundTrunkRequest) Validate() error { if p.Trunk == nil { return errors.New("missing trunk") } + if p.Trunk.SipTrunkId != "" { + return errors.New("trunk id must not be set") + } if err := p.Trunk.Validate(); err != nil { return err } @@ -132,16 +135,42 @@ func (p *CreateSIPInboundTrunkRequest) Validate() error { if p.Trunk == nil { return errors.New("missing trunk") } + if p.Trunk.SipTrunkId != "" { + return errors.New("trunk id must not be set") + } if err := p.Trunk.Validate(); err != nil { return err } return nil } -func (p *SIPInboundTrunkInfo) Validate() error { - if len(p.Numbers) == 0 { - return errors.New("no trunk numbers specified") +func (p *UpdateSIPOutboundTrunkRequest) Validate() error { + if p.Trunk == nil { + return errors.New("missing trunk") + } + if p.Trunk.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if err := p.Trunk.Validate(); err != nil { + return err + } + return nil +} + +func (p *UpdateSIPInboundTrunkRequest) Validate() error { + if p.Trunk == nil { + return errors.New("missing trunk") + } + if p.Trunk.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if err := p.Trunk.Validate(); err != nil { + return err } + return nil +} + +func (p *SIPInboundTrunkInfo) Validate() error { if err := validateHeaders(p.Headers); err != nil { return err } @@ -169,7 +198,46 @@ func (p *SIPOutboundTrunkInfo) Validate() error { return nil } +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.DispatchRule == nil { + return errors.New("missing dispatch rule") + } + if p.DispatchRule.SipDispatchRuleId == "" { + return errors.New("rule id must be set") + } + return p.DispatchRule.Validate() +} + +func (p *SIPDispatchRuleInfo) Validate() error { if p.Rule == nil { return errors.New("missing rule") } diff --git a/protobufs/livekit_sip.proto b/protobufs/livekit_sip.proto index b617174f..95c03d11 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,10 @@ message CreateSIPInboundTrunkRequest { SIPInboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPInboundTrunkRequest { + SIPInboundTrunkInfo trunk = 1; // Trunk ID is required +} + message SIPInboundTrunkInfo { string sip_trunk_id = 1; @@ -203,6 +210,10 @@ message CreateSIPOutboundTrunkRequest { SIPOutboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPOutboundTrunkRequest { + SIPOutboundTrunkInfo trunk = 1; // Trunk ID is required +} + message SIPOutboundTrunkInfo { string sip_trunk_id = 1; @@ -320,29 +331,35 @@ 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: 8 + // NEXT ID: 9 +} + +message UpdateSIPDispatchRuleRequest { + SIPDispatchRuleInfo dispatch_rule = 1; // Rule ID is required } message SIPDispatchRuleInfo { @@ -385,6 +402,9 @@ message CreateSIPParticipantRequest { // What number should be dialed via SIP string sip_call_to = 2; + // Optional SIP From number to use. If empty, trunk number is used. + string sip_number = 15; + // What LiveKit room should this participant be connected too string room_name = 3; @@ -418,7 +438,7 @@ message CreateSIPParticipantRequest { // Enable voice isolation for the callee. bool enable_krisp = 14; - // NEXT ID: 15 + // NEXT ID: 16 } message SIPParticipantInfo { @@ -457,7 +477,7 @@ message SIPUri { string user = 1; string host = 2; string ip = 3; - string port = 4; + uint32 port = 4; SIPTransport transport = 5; } diff --git a/rpc/sip.go b/rpc/sip.go index cdd273c0..ef159b93 100644 --- a/rpc/sip.go +++ b/rpc/sip.go @@ -16,10 +16,13 @@ func NewCreateSIPParticipantRequest( req *livekit.CreateSIPParticipantRequest, trunk *livekit.SIPOutboundTrunkInfo, ) (*InternalCreateSIPParticipantRequest, error) { - if len(trunk.Numbers) == 0 { - return nil, errors.New("no numbers on outbound trunk") + outboundNumber := req.SipNumber + if outboundNumber == "" { + if len(trunk.Numbers) == 0 { + return nil, errors.New("no numbers on outbound trunk") + } + outboundNumber = trunk.Numbers[rand.IntN(len(trunk.Numbers))] } - outboundNumber := trunk.Numbers[rand.IntN(len(trunk.Numbers))] // A sanity check for the number format for well-known providers. switch { case strings.HasSuffix(trunk.Address, "telnyx.com"):