From 0147acbdd45e636b317afe4c8bdeda17841a7181 Mon Sep 17 00:00:00 2001 From: Pierre Phaneuf Date: Mon, 22 Mar 2021 16:12:08 +0000 Subject: [PATCH] Remove the unused GetSequencedLeafCount API. Part of #2245. --- docs/api.md | 41 -- server/interceptor/interceptor.go | 3 - server/log_rpc_server.go | 27 - server/log_rpc_server_test.go | 133 ----- testonly/tmock/mock_log_server.go | 15 - trillian_log_api.pb.go | 917 ++++++++++++------------------ trillian_log_api.proto | 27 - 7 files changed, 356 insertions(+), 807 deletions(-) diff --git a/docs/api.md b/docs/api.md index 492325a4ca..b6ee6c8f57 100644 --- a/docs/api.md +++ b/docs/api.md @@ -23,8 +23,6 @@ - [GetLeavesByIndexResponse](#trillian.GetLeavesByIndexResponse) - [GetLeavesByRangeRequest](#trillian.GetLeavesByRangeRequest) - [GetLeavesByRangeResponse](#trillian.GetLeavesByRangeResponse) - - [GetSequencedLeafCountRequest](#trillian.GetSequencedLeafCountRequest) - - [GetSequencedLeafCountResponse](#trillian.GetSequencedLeafCountResponse) - [InitLogRequest](#trillian.InitLogRequest) - [InitLogResponse](#trillian.InitLogResponse) - [LogLeaf](#trillian.LogLeaf) @@ -388,40 +386,6 @@ As an example, a Certificate Transparency frontend might set the following user - - -### GetSequencedLeafCountRequest -DO NOT USE - FOR DEBUGGING/TEST ONLY - -(Use GetLatestSignedLogRoot then de-serialize the Log Root and use -use the tree size field within.) - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| log_id | [int64](#int64) | | | -| charge_to | [ChargeTo](#trillian.ChargeTo) | | | - - - - - - - - -### GetSequencedLeafCountResponse - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| leaf_count | [int64](#int64) | | | - - - - - - ### InitLogRequest @@ -625,11 +589,6 @@ If the requested tree size is larger than the server is aware of, the response w | GetLatestSignedLogRoot | [GetLatestSignedLogRootRequest](#trillian.GetLatestSignedLogRootRequest) | [GetLatestSignedLogRootResponse](#trillian.GetLatestSignedLogRootResponse) | GetLatestSignedLogRoot returns the latest signed log root for a given tree, and optionally also includes a consistency proof from an earlier tree size to the new size of the tree. If the earlier tree size is larger than the server is aware of, an InvalidArgument error is returned. | -| GetSequencedLeafCount | [GetSequencedLeafCountRequest](#trillian.GetSequencedLeafCountRequest) | [GetSequencedLeafCountResponse](#trillian.GetSequencedLeafCountResponse) | GetSequencedLeafCount returns the total number of leaves that have been integrated into the given tree. - -DO NOT USE - FOR DEBUGGING/TEST ONLY - -(Use GetLatestSignedLogRoot then de-serialize the Log Root and use use the tree size field within.) | | GetEntryAndProof | [GetEntryAndProofRequest](#trillian.GetEntryAndProofRequest) | [GetEntryAndProofResponse](#trillian.GetEntryAndProofResponse) | GetEntryAndProof returns a log leaf and the corresponding inclusion proof to a specified tree size, for a given leaf index in a particular tree. If the requested tree size is unavailable but the leaf is in scope for the current tree, the returned proof will be for the current tree size rather than the requested tree size. | diff --git a/server/interceptor/interceptor.go b/server/interceptor/interceptor.go index ece9ba9122..c5572a0096 100644 --- a/server/interceptor/interceptor.go +++ b/server/interceptor/interceptor.go @@ -397,9 +397,6 @@ func newRPCInfoForRequest(req interface{}) (*rpcInfo, error) { if c := req.GetCount(); c > 1 { info.tokens = int(c) } - case *trillian.GetSequencedLeafCountRequest: - info.treeTypes = []trillian.TreeType{trillian.TreeType_LOG, trillian.TreeType_PREORDERED_LOG} - // Log / readwrite case *trillian.QueueLeafRequest: info.readonly = false diff --git a/server/log_rpc_server.go b/server/log_rpc_server.go index 990c9ecd34..8bc6d8b6bb 100644 --- a/server/log_rpc_server.go +++ b/server/log_rpc_server.go @@ -463,33 +463,6 @@ func tryGetConsistencyProof(ctx context.Context, firstTreeSize, secondTreeSize, return proof, nil } -// GetSequencedLeafCount returns the number of leaves that have been integrated into the Merkle -// Tree. This can be zero for a log containing no entries. -func (t *TrillianLogRPCServer) GetSequencedLeafCount(ctx context.Context, req *trillian.GetSequencedLeafCountRequest) (*trillian.GetSequencedLeafCountResponse, error) { - ctx, spanEnd := spanFor(ctx, "GetSequencedLeafCount") - defer spanEnd() - tree, ctx, err := t.getTreeAndContext(ctx, req.LogId, optsLogRead) - if err != nil { - return nil, err - } - tx, err := t.snapshotForTree(ctx, tree, "GetSequencedLeafCount") - if err != nil { - return nil, err - } - defer t.closeAndLog(ctx, tree.TreeId, tx, "GetSequencedLeafCount") - - leafCount, err := tx.GetSequencedLeafCount(ctx) - if err != nil { - return nil, err - } - - if err := t.commitAndLog(ctx, req.LogId, tx, "GetSequencedLeafCount"); err != nil { - return nil, err - } - - return &trillian.GetSequencedLeafCountResponse{LeafCount: leafCount}, nil -} - // GetLeavesByIndex obtains one or more leaves based on their sequence number within the // tree. It is not possible to fetch leaves that have been queued but not yet integrated. // TODO: Validate indices against published tree size in case we implement write sharding that diff --git a/server/log_rpc_server_test.go b/server/log_rpc_server_test.go index 626b582813..2726b68cfa 100644 --- a/server/log_rpc_server_test.go +++ b/server/log_rpc_server_test.go @@ -1331,82 +1331,6 @@ func TestGetEntryAndProof(t *testing.T) { } } -func TestGetSequencedLeafCountBeginTXFails(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage, - func(t *storage.MockLogTreeTX) { - t.EXPECT().Close().Return(nil) - }, - func(s *TrillianLogRPCServer) error { - _, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1}) - return err - }) - - test.executeBeginFailsTest(t, logID1) -} - -func TestGetSequencedLeafCountStorageFails(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage, - func(t *storage.MockLogTreeTX) { - t.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(0), errors.New("STORAGE")) - }, - func(s *TrillianLogRPCServer) error { - _, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1}) - return err - }) - - test.executeStorageFailureTest(t, logID1) -} - -func TestGetSequencedLeafCountCommitFails(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage, - func(t *storage.MockLogTreeTX) { - t.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(27), nil) - }, - func(s *TrillianLogRPCServer) error { - _, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1}) - return err - }) - - test.executeCommitFailsTest(t, logID1) -} - -func TestGetSequencedLeafCount(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - fakeStorage := storage.NewMockLogStorage(ctrl) - mockTX := storage.NewMockLogTreeTX(ctrl) - fakeStorage.EXPECT().SnapshotForTree(gomock.Any(), cmpMatcher{tree1}).Return(mockTX, nil) - - mockTX.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(268), nil) - mockTX.EXPECT().Commit(gomock.Any()).Return(nil) - mockTX.EXPECT().Close().Return(nil) - - registry := extension.Registry{ - AdminStorage: fakeAdminStorage(ctrl, storageParams{treeID: logID1, numSnapshots: 1}), - LogStorage: fakeStorage, - } - server := NewTrillianLogRPCServer(registry, fakeTimeSource) - - response, err := server.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1}) - if err != nil { - t.Fatalf("expected no error getting leaf count but got: %v", err) - } - - if got, want := response.LeafCount, int64(268); got != want { - t.Fatalf("expected leaf count: %d but got: %d", want, got) - } -} - type consistProofTest struct { req *trillian.GetConsistencyProofRequest errStr string @@ -1976,37 +1900,6 @@ func newParameterizedTest(ctrl *gomock.Controller, operation string, m txMode, p return ¶meterizedTest{ctrl, operation, m, false /* preordered */, prepareStorage, prepareTx, makeRPC} } -func (p *parameterizedTest) executeCommitFailsTest(t *testing.T, logID int64) { - t.Helper() - - mockTX := storage.NewMockLogTreeTX(p.ctrl) - fakeStorage := &stestonly.FakeLogStorage{} - - switch p.mode { - case readOnly: - fakeStorage.ReadOnlyTX = mockTX - case readWrite: - fakeStorage.TX = mockTX - } - if p.mode != noTX { - p.prepareTX(mockTX) - mockTX.EXPECT().Commit(gomock.Any()).Return(errors.New("bang")) - mockTX.EXPECT().Close().Return(errors.New("bang")) - mockTX.EXPECT().IsOpen().AnyTimes().Return(false) - } - - registry := extension.Registry{ - AdminStorage: fakeAdminStorage(p.ctrl, storageParams{logID, p.preordered, 1, nil, nil, false}), - LogStorage: fakeStorage, - } - server := NewTrillianLogRPCServer(registry, fakeTimeSource) - - err := p.makeRPC(server) - if err == nil { - t.Fatalf("returned OK when commit failed: %s", p.operation) - } -} - func (p *parameterizedTest) executeInvalidLogIDTest(t *testing.T, snapshot bool) { badLogErr := errors.New("BADLOGID") @@ -2060,32 +1953,6 @@ func (p *parameterizedTest) executeStorageFailureTest(t *testing.T, logID int64) } } -func (p *parameterizedTest) executeBeginFailsTest(t *testing.T, logID int64) { - logStorage := storage.NewMockLogStorage(p.ctrl) - logTX := storage.NewMockLogTreeTX(p.ctrl) - - switch p.mode { - case readOnly: - logStorage.EXPECT().SnapshotForTree(gomock.Any(), cmpMatcher{tree1}).Return(logTX, errors.New("TX")) - case readWrite: - logStorage.EXPECT().ReadWriteTransaction(gomock.Any(), logID, gomock.Any()).Return(errors.New("TX")) - } - - if p.prepareTX != nil { - p.prepareTX(logTX) - } - - registry := extension.Registry{ - AdminStorage: fakeAdminStorage(p.ctrl, storageParams{logID, p.preordered, 1, nil, nil, false}), - LogStorage: logStorage, - } - server := NewTrillianLogRPCServer(registry, fakeTimeSource) - - if err := p.makeRPC(server); err == nil || !strings.Contains(err.Error(), "TX") { - t.Fatalf("Returned wrong error response when begin failed: %v", err) - } -} - type storageParams struct { treeID int64 preordered bool diff --git a/testonly/tmock/mock_log_server.go b/testonly/tmock/mock_log_server.go index acd81ce0b6..dfc2a2ffba 100644 --- a/testonly/tmock/mock_log_server.go +++ b/testonly/tmock/mock_log_server.go @@ -170,21 +170,6 @@ func (mr *MockTrillianLogServerMockRecorder) GetLeavesByRange(arg0, arg1 interfa return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLeavesByRange", reflect.TypeOf((*MockTrillianLogServer)(nil).GetLeavesByRange), arg0, arg1) } -// GetSequencedLeafCount mocks base method. -func (m *MockTrillianLogServer) GetSequencedLeafCount(arg0 context.Context, arg1 *trillian.GetSequencedLeafCountRequest) (*trillian.GetSequencedLeafCountResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSequencedLeafCount", arg0, arg1) - ret0, _ := ret[0].(*trillian.GetSequencedLeafCountResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetSequencedLeafCount indicates an expected call of GetSequencedLeafCount. -func (mr *MockTrillianLogServerMockRecorder) GetSequencedLeafCount(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSequencedLeafCount", reflect.TypeOf((*MockTrillianLogServer)(nil).GetSequencedLeafCount), arg0, arg1) -} - // InitLog mocks base method. func (m *MockTrillianLogServer) InitLog(arg0 context.Context, arg1 *trillian.InitLogRequest) (*trillian.InitLogResponse, error) { m.ctrl.T.Helper() diff --git a/trillian_log_api.pb.go b/trillian_log_api.pb.go index bd6ca0f8b4..78e6c1c2ae 100644 --- a/trillian_log_api.pb.go +++ b/trillian_log_api.pb.go @@ -860,112 +860,6 @@ func (x *GetLatestSignedLogRootResponse) GetProof() *Proof { return nil } -// DO NOT USE - FOR DEBUGGING/TEST ONLY -// -// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use -// use the tree size field within.) -type GetSequencedLeafCountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LogId int64 `protobuf:"varint,1,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"` - ChargeTo *ChargeTo `protobuf:"bytes,2,opt,name=charge_to,json=chargeTo,proto3" json:"charge_to,omitempty"` -} - -func (x *GetSequencedLeafCountRequest) Reset() { - *x = GetSequencedLeafCountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetSequencedLeafCountRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSequencedLeafCountRequest) ProtoMessage() {} - -func (x *GetSequencedLeafCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSequencedLeafCountRequest.ProtoReflect.Descriptor instead. -func (*GetSequencedLeafCountRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{13} -} - -func (x *GetSequencedLeafCountRequest) GetLogId() int64 { - if x != nil { - return x.LogId - } - return 0 -} - -func (x *GetSequencedLeafCountRequest) GetChargeTo() *ChargeTo { - if x != nil { - return x.ChargeTo - } - return nil -} - -type GetSequencedLeafCountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LeafCount int64 `protobuf:"varint,2,opt,name=leaf_count,json=leafCount,proto3" json:"leaf_count,omitempty"` -} - -func (x *GetSequencedLeafCountResponse) Reset() { - *x = GetSequencedLeafCountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetSequencedLeafCountResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSequencedLeafCountResponse) ProtoMessage() {} - -func (x *GetSequencedLeafCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetSequencedLeafCountResponse.ProtoReflect.Descriptor instead. -func (*GetSequencedLeafCountResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{14} -} - -func (x *GetSequencedLeafCountResponse) GetLeafCount() int64 { - if x != nil { - return x.LeafCount - } - return 0 -} - type GetEntryAndProofRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -980,7 +874,7 @@ type GetEntryAndProofRequest struct { func (x *GetEntryAndProofRequest) Reset() { *x = GetEntryAndProofRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[15] + mi := &file_trillian_log_api_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -993,7 +887,7 @@ func (x *GetEntryAndProofRequest) String() string { func (*GetEntryAndProofRequest) ProtoMessage() {} func (x *GetEntryAndProofRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[15] + mi := &file_trillian_log_api_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1006,7 +900,7 @@ func (x *GetEntryAndProofRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEntryAndProofRequest.ProtoReflect.Descriptor instead. func (*GetEntryAndProofRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{15} + return file_trillian_log_api_proto_rawDescGZIP(), []int{13} } func (x *GetEntryAndProofRequest) GetLogId() int64 { @@ -1050,7 +944,7 @@ type GetEntryAndProofResponse struct { func (x *GetEntryAndProofResponse) Reset() { *x = GetEntryAndProofResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[16] + mi := &file_trillian_log_api_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1063,7 +957,7 @@ func (x *GetEntryAndProofResponse) String() string { func (*GetEntryAndProofResponse) ProtoMessage() {} func (x *GetEntryAndProofResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[16] + mi := &file_trillian_log_api_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1076,7 +970,7 @@ func (x *GetEntryAndProofResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEntryAndProofResponse.ProtoReflect.Descriptor instead. func (*GetEntryAndProofResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{16} + return file_trillian_log_api_proto_rawDescGZIP(), []int{14} } func (x *GetEntryAndProofResponse) GetProof() *Proof { @@ -1112,7 +1006,7 @@ type InitLogRequest struct { func (x *InitLogRequest) Reset() { *x = InitLogRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[17] + mi := &file_trillian_log_api_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1125,7 +1019,7 @@ func (x *InitLogRequest) String() string { func (*InitLogRequest) ProtoMessage() {} func (x *InitLogRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[17] + mi := &file_trillian_log_api_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1138,7 +1032,7 @@ func (x *InitLogRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitLogRequest.ProtoReflect.Descriptor instead. func (*InitLogRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{17} + return file_trillian_log_api_proto_rawDescGZIP(), []int{15} } func (x *InitLogRequest) GetLogId() int64 { @@ -1166,7 +1060,7 @@ type InitLogResponse struct { func (x *InitLogResponse) Reset() { *x = InitLogResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[18] + mi := &file_trillian_log_api_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1179,7 +1073,7 @@ func (x *InitLogResponse) String() string { func (*InitLogResponse) ProtoMessage() {} func (x *InitLogResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[18] + mi := &file_trillian_log_api_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1192,7 +1086,7 @@ func (x *InitLogResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitLogResponse.ProtoReflect.Descriptor instead. func (*InitLogResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{18} + return file_trillian_log_api_proto_rawDescGZIP(), []int{16} } func (x *InitLogResponse) GetCreated() *SignedLogRoot { @@ -1215,7 +1109,7 @@ type QueueLeavesRequest struct { func (x *QueueLeavesRequest) Reset() { *x = QueueLeavesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[19] + mi := &file_trillian_log_api_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1228,7 +1122,7 @@ func (x *QueueLeavesRequest) String() string { func (*QueueLeavesRequest) ProtoMessage() {} func (x *QueueLeavesRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[19] + mi := &file_trillian_log_api_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1241,7 +1135,7 @@ func (x *QueueLeavesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueueLeavesRequest.ProtoReflect.Descriptor instead. func (*QueueLeavesRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{19} + return file_trillian_log_api_proto_rawDescGZIP(), []int{17} } func (x *QueueLeavesRequest) GetLogId() int64 { @@ -1277,7 +1171,7 @@ type QueueLeavesResponse struct { func (x *QueueLeavesResponse) Reset() { *x = QueueLeavesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[20] + mi := &file_trillian_log_api_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1290,7 +1184,7 @@ func (x *QueueLeavesResponse) String() string { func (*QueueLeavesResponse) ProtoMessage() {} func (x *QueueLeavesResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[20] + mi := &file_trillian_log_api_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1303,7 +1197,7 @@ func (x *QueueLeavesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueueLeavesResponse.ProtoReflect.Descriptor instead. func (*QueueLeavesResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{20} + return file_trillian_log_api_proto_rawDescGZIP(), []int{18} } func (x *QueueLeavesResponse) GetQueuedLeaves() []*QueuedLogLeaf { @@ -1326,7 +1220,7 @@ type AddSequencedLeavesRequest struct { func (x *AddSequencedLeavesRequest) Reset() { *x = AddSequencedLeavesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[21] + mi := &file_trillian_log_api_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1339,7 +1233,7 @@ func (x *AddSequencedLeavesRequest) String() string { func (*AddSequencedLeavesRequest) ProtoMessage() {} func (x *AddSequencedLeavesRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[21] + mi := &file_trillian_log_api_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1352,7 +1246,7 @@ func (x *AddSequencedLeavesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddSequencedLeavesRequest.ProtoReflect.Descriptor instead. func (*AddSequencedLeavesRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{21} + return file_trillian_log_api_proto_rawDescGZIP(), []int{19} } func (x *AddSequencedLeavesRequest) GetLogId() int64 { @@ -1388,7 +1282,7 @@ type AddSequencedLeavesResponse struct { func (x *AddSequencedLeavesResponse) Reset() { *x = AddSequencedLeavesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[22] + mi := &file_trillian_log_api_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1401,7 +1295,7 @@ func (x *AddSequencedLeavesResponse) String() string { func (*AddSequencedLeavesResponse) ProtoMessage() {} func (x *AddSequencedLeavesResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[22] + mi := &file_trillian_log_api_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1414,7 +1308,7 @@ func (x *AddSequencedLeavesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddSequencedLeavesResponse.ProtoReflect.Descriptor instead. func (*AddSequencedLeavesResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{22} + return file_trillian_log_api_proto_rawDescGZIP(), []int{20} } func (x *AddSequencedLeavesResponse) GetResults() []*QueuedLogLeaf { @@ -1437,7 +1331,7 @@ type GetLeavesByIndexRequest struct { func (x *GetLeavesByIndexRequest) Reset() { *x = GetLeavesByIndexRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[23] + mi := &file_trillian_log_api_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1450,7 +1344,7 @@ func (x *GetLeavesByIndexRequest) String() string { func (*GetLeavesByIndexRequest) ProtoMessage() {} func (x *GetLeavesByIndexRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[23] + mi := &file_trillian_log_api_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1463,7 +1357,7 @@ func (x *GetLeavesByIndexRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLeavesByIndexRequest.ProtoReflect.Descriptor instead. func (*GetLeavesByIndexRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{23} + return file_trillian_log_api_proto_rawDescGZIP(), []int{21} } func (x *GetLeavesByIndexRequest) GetLogId() int64 { @@ -1500,7 +1394,7 @@ type GetLeavesByIndexResponse struct { func (x *GetLeavesByIndexResponse) Reset() { *x = GetLeavesByIndexResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[24] + mi := &file_trillian_log_api_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1513,7 +1407,7 @@ func (x *GetLeavesByIndexResponse) String() string { func (*GetLeavesByIndexResponse) ProtoMessage() {} func (x *GetLeavesByIndexResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[24] + mi := &file_trillian_log_api_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1526,7 +1420,7 @@ func (x *GetLeavesByIndexResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLeavesByIndexResponse.ProtoReflect.Descriptor instead. func (*GetLeavesByIndexResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{24} + return file_trillian_log_api_proto_rawDescGZIP(), []int{22} } func (x *GetLeavesByIndexResponse) GetLeaves() []*LogLeaf { @@ -1557,7 +1451,7 @@ type GetLeavesByRangeRequest struct { func (x *GetLeavesByRangeRequest) Reset() { *x = GetLeavesByRangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[25] + mi := &file_trillian_log_api_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1464,7 @@ func (x *GetLeavesByRangeRequest) String() string { func (*GetLeavesByRangeRequest) ProtoMessage() {} func (x *GetLeavesByRangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[25] + mi := &file_trillian_log_api_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1477,7 @@ func (x *GetLeavesByRangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLeavesByRangeRequest.ProtoReflect.Descriptor instead. func (*GetLeavesByRangeRequest) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{25} + return file_trillian_log_api_proto_rawDescGZIP(), []int{23} } func (x *GetLeavesByRangeRequest) GetLogId() int64 { @@ -1630,7 +1524,7 @@ type GetLeavesByRangeResponse struct { func (x *GetLeavesByRangeResponse) Reset() { *x = GetLeavesByRangeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[26] + mi := &file_trillian_log_api_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1643,7 +1537,7 @@ func (x *GetLeavesByRangeResponse) String() string { func (*GetLeavesByRangeResponse) ProtoMessage() {} func (x *GetLeavesByRangeResponse) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[26] + mi := &file_trillian_log_api_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1656,7 +1550,7 @@ func (x *GetLeavesByRangeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLeavesByRangeResponse.ProtoReflect.Descriptor instead. func (*GetLeavesByRangeResponse) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{26} + return file_trillian_log_api_proto_rawDescGZIP(), []int{24} } func (x *GetLeavesByRangeResponse) GetLeaves() []*LogLeaf { @@ -1698,7 +1592,7 @@ type QueuedLogLeaf struct { func (x *QueuedLogLeaf) Reset() { *x = QueuedLogLeaf{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[27] + mi := &file_trillian_log_api_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1711,7 +1605,7 @@ func (x *QueuedLogLeaf) String() string { func (*QueuedLogLeaf) ProtoMessage() {} func (x *QueuedLogLeaf) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[27] + mi := &file_trillian_log_api_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1724,7 +1618,7 @@ func (x *QueuedLogLeaf) ProtoReflect() protoreflect.Message { // Deprecated: Use QueuedLogLeaf.ProtoReflect.Descriptor instead. func (*QueuedLogLeaf) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{27} + return file_trillian_log_api_proto_rawDescGZIP(), []int{25} } func (x *QueuedLogLeaf) GetLeaf() *LogLeaf { @@ -1815,7 +1709,7 @@ type LogLeaf struct { func (x *LogLeaf) Reset() { *x = LogLeaf{} if protoimpl.UnsafeEnabled { - mi := &file_trillian_log_api_proto_msgTypes[28] + mi := &file_trillian_log_api_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1828,7 +1722,7 @@ func (x *LogLeaf) String() string { func (*LogLeaf) ProtoMessage() {} func (x *LogLeaf) ProtoReflect() protoreflect.Message { - mi := &file_trillian_log_api_proto_msgTypes[28] + mi := &file_trillian_log_api_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1841,7 +1735,7 @@ func (x *LogLeaf) ProtoReflect() protoreflect.Message { // Deprecated: Use LogLeaf.ProtoReflect.Descriptor instead. func (*LogLeaf) Descriptor() ([]byte, []int) { - return file_trillian_log_api_proto_rawDescGZIP(), []int{28} + return file_trillian_log_api_proto_rawDescGZIP(), []int{26} } func (x *LogLeaf) GetMerkleLeafHash() []byte { @@ -2011,249 +1905,229 @@ var file_trillian_log_api_proto_rawDesc = []byte{ 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, - 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x66, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, - 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, - 0x3e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, - 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x9d, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, - 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, - 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x72, 0x65, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, - 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, - 0xa9, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, - 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, - 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x72, - 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, - 0x6f, 0x6f, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x9d, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, + 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x65, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x72, + 0x65, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, + 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c, + 0x65, 0x61, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, + 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65, + 0x61, 0x66, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, + 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, + 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, + 0x6f, 0x6f, 0x74, 0x22, 0x58, 0x0a, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09, + 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x44, 0x0a, + 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, + 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, + 0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, - 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x58, 0x0a, 0x0e, 0x49, - 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, - 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, - 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, - 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x44, 0x0a, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, - 0x6f, 0x74, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x12, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, - 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, - 0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, - 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x53, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x0c, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x41, - 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, - 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, - 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, - 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x4f, 0x0a, 0x1a, 0x41, - 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, - 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x61, 0x66, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x80, 0x01, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2f, - 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, - 0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, - 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, - 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, - 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, + 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, + 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x53, 0x0a, + 0x13, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, + 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x61, 0x66, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, + 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, + 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x62, 0x0a, 0x0d, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x25, 0x0a, - 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, - 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, - 0x6c, 0x65, 0x61, 0x66, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0xd0, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x28, 0x0a, 0x10, - 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x4c, 0x65, - 0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x10, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x43, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x32, 0x8e, 0x0d, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, - 0x4c, 0x6f, 0x67, 0x12, 0x6e, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, - 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, + 0x65, 0x54, 0x6f, 0x22, 0x4f, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, + 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, + 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, + 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, + 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, + 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, + 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, + 0x22, 0x98, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, + 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, + 0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, + 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, + 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, + 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, + 0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, + 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, + 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, + 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x62, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, + 0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, + 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x2a, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x61, 0x66, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, + 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, + 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x12, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x43, 0x0a, 0x0f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, + 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xec, 0x0b, 0x0a, 0x0b, + 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x6e, 0x0a, 0x09, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, + 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x10, + 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, + 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, + 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, + 0x27, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, + 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0x12, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, + 0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x3a, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xa7, + 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x2e, 0x74, 0x72, 0x69, + 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x62, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, + 0x12, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, + 0x98, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x72, 0x69, + 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, + 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, + 0x6f, 0x74, 0x73, 0x3a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, + 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x12, 0x63, 0x0a, 0x07, 0x49, 0x6e, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, + 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, + 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x69, 0x6e, 0x69, 0x74, 0x12, + 0x4c, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x1c, + 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, - 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, - 0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, + 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, + 0x12, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, + 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, - 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, - 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, - 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, - 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x3a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x28, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, - 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, - 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, - 0x2f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, - 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x12, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, - 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, - 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x98, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, - 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x72, - 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, - 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x3a, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x74, - 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, - 0x61, 0x76, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, - 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x7d, 0x12, 0x63, 0x0a, 0x07, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x12, - 0x18, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, - 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, - 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, - 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x23, 0x2e, - 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, - 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, - 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x72, - 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, - 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x4e, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x42, 0x13, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x4c, 0x6f, 0x67, 0x41, 0x70, - 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x72, 0x69, 0x6c, - 0x6c, 0x69, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, + 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4e, 0x0a, 0x19, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x13, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, + 0x6e, 0x4c, 0x6f, 0x67, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2268,7 +2142,7 @@ func file_trillian_log_api_proto_rawDescGZIP() []byte { return file_trillian_log_api_proto_rawDescData } -var file_trillian_log_api_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_trillian_log_api_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_trillian_log_api_proto_goTypes = []interface{}{ (*ChargeTo)(nil), // 0: trillian.ChargeTo (*QueueLeafRequest)(nil), // 1: trillian.QueueLeafRequest @@ -2283,100 +2157,95 @@ var file_trillian_log_api_proto_goTypes = []interface{}{ (*GetConsistencyProofResponse)(nil), // 10: trillian.GetConsistencyProofResponse (*GetLatestSignedLogRootRequest)(nil), // 11: trillian.GetLatestSignedLogRootRequest (*GetLatestSignedLogRootResponse)(nil), // 12: trillian.GetLatestSignedLogRootResponse - (*GetSequencedLeafCountRequest)(nil), // 13: trillian.GetSequencedLeafCountRequest - (*GetSequencedLeafCountResponse)(nil), // 14: trillian.GetSequencedLeafCountResponse - (*GetEntryAndProofRequest)(nil), // 15: trillian.GetEntryAndProofRequest - (*GetEntryAndProofResponse)(nil), // 16: trillian.GetEntryAndProofResponse - (*InitLogRequest)(nil), // 17: trillian.InitLogRequest - (*InitLogResponse)(nil), // 18: trillian.InitLogResponse - (*QueueLeavesRequest)(nil), // 19: trillian.QueueLeavesRequest - (*QueueLeavesResponse)(nil), // 20: trillian.QueueLeavesResponse - (*AddSequencedLeavesRequest)(nil), // 21: trillian.AddSequencedLeavesRequest - (*AddSequencedLeavesResponse)(nil), // 22: trillian.AddSequencedLeavesResponse - (*GetLeavesByIndexRequest)(nil), // 23: trillian.GetLeavesByIndexRequest - (*GetLeavesByIndexResponse)(nil), // 24: trillian.GetLeavesByIndexResponse - (*GetLeavesByRangeRequest)(nil), // 25: trillian.GetLeavesByRangeRequest - (*GetLeavesByRangeResponse)(nil), // 26: trillian.GetLeavesByRangeResponse - (*QueuedLogLeaf)(nil), // 27: trillian.QueuedLogLeaf - (*LogLeaf)(nil), // 28: trillian.LogLeaf - (*Proof)(nil), // 29: trillian.Proof - (*SignedLogRoot)(nil), // 30: trillian.SignedLogRoot - (*status.Status)(nil), // 31: google.rpc.Status - (*timestamp.Timestamp)(nil), // 32: google.protobuf.Timestamp + (*GetEntryAndProofRequest)(nil), // 13: trillian.GetEntryAndProofRequest + (*GetEntryAndProofResponse)(nil), // 14: trillian.GetEntryAndProofResponse + (*InitLogRequest)(nil), // 15: trillian.InitLogRequest + (*InitLogResponse)(nil), // 16: trillian.InitLogResponse + (*QueueLeavesRequest)(nil), // 17: trillian.QueueLeavesRequest + (*QueueLeavesResponse)(nil), // 18: trillian.QueueLeavesResponse + (*AddSequencedLeavesRequest)(nil), // 19: trillian.AddSequencedLeavesRequest + (*AddSequencedLeavesResponse)(nil), // 20: trillian.AddSequencedLeavesResponse + (*GetLeavesByIndexRequest)(nil), // 21: trillian.GetLeavesByIndexRequest + (*GetLeavesByIndexResponse)(nil), // 22: trillian.GetLeavesByIndexResponse + (*GetLeavesByRangeRequest)(nil), // 23: trillian.GetLeavesByRangeRequest + (*GetLeavesByRangeResponse)(nil), // 24: trillian.GetLeavesByRangeResponse + (*QueuedLogLeaf)(nil), // 25: trillian.QueuedLogLeaf + (*LogLeaf)(nil), // 26: trillian.LogLeaf + (*Proof)(nil), // 27: trillian.Proof + (*SignedLogRoot)(nil), // 28: trillian.SignedLogRoot + (*status.Status)(nil), // 29: google.rpc.Status + (*timestamp.Timestamp)(nil), // 30: google.protobuf.Timestamp } var file_trillian_log_api_proto_depIdxs = []int32{ - 28, // 0: trillian.QueueLeafRequest.leaf:type_name -> trillian.LogLeaf + 26, // 0: trillian.QueueLeafRequest.leaf:type_name -> trillian.LogLeaf 0, // 1: trillian.QueueLeafRequest.charge_to:type_name -> trillian.ChargeTo - 27, // 2: trillian.QueueLeafResponse.queued_leaf:type_name -> trillian.QueuedLogLeaf - 28, // 3: trillian.AddSequencedLeafRequest.leaf:type_name -> trillian.LogLeaf + 25, // 2: trillian.QueueLeafResponse.queued_leaf:type_name -> trillian.QueuedLogLeaf + 26, // 3: trillian.AddSequencedLeafRequest.leaf:type_name -> trillian.LogLeaf 0, // 4: trillian.AddSequencedLeafRequest.charge_to:type_name -> trillian.ChargeTo - 27, // 5: trillian.AddSequencedLeafResponse.result:type_name -> trillian.QueuedLogLeaf + 25, // 5: trillian.AddSequencedLeafResponse.result:type_name -> trillian.QueuedLogLeaf 0, // 6: trillian.GetInclusionProofRequest.charge_to:type_name -> trillian.ChargeTo - 29, // 7: trillian.GetInclusionProofResponse.proof:type_name -> trillian.Proof - 30, // 8: trillian.GetInclusionProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 27, // 7: trillian.GetInclusionProofResponse.proof:type_name -> trillian.Proof + 28, // 8: trillian.GetInclusionProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot 0, // 9: trillian.GetInclusionProofByHashRequest.charge_to:type_name -> trillian.ChargeTo - 29, // 10: trillian.GetInclusionProofByHashResponse.proof:type_name -> trillian.Proof - 30, // 11: trillian.GetInclusionProofByHashResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 27, // 10: trillian.GetInclusionProofByHashResponse.proof:type_name -> trillian.Proof + 28, // 11: trillian.GetInclusionProofByHashResponse.signed_log_root:type_name -> trillian.SignedLogRoot 0, // 12: trillian.GetConsistencyProofRequest.charge_to:type_name -> trillian.ChargeTo - 29, // 13: trillian.GetConsistencyProofResponse.proof:type_name -> trillian.Proof - 30, // 14: trillian.GetConsistencyProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 27, // 13: trillian.GetConsistencyProofResponse.proof:type_name -> trillian.Proof + 28, // 14: trillian.GetConsistencyProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot 0, // 15: trillian.GetLatestSignedLogRootRequest.charge_to:type_name -> trillian.ChargeTo - 30, // 16: trillian.GetLatestSignedLogRootResponse.signed_log_root:type_name -> trillian.SignedLogRoot - 29, // 17: trillian.GetLatestSignedLogRootResponse.proof:type_name -> trillian.Proof - 0, // 18: trillian.GetSequencedLeafCountRequest.charge_to:type_name -> trillian.ChargeTo - 0, // 19: trillian.GetEntryAndProofRequest.charge_to:type_name -> trillian.ChargeTo - 29, // 20: trillian.GetEntryAndProofResponse.proof:type_name -> trillian.Proof - 28, // 21: trillian.GetEntryAndProofResponse.leaf:type_name -> trillian.LogLeaf - 30, // 22: trillian.GetEntryAndProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot - 0, // 23: trillian.InitLogRequest.charge_to:type_name -> trillian.ChargeTo - 30, // 24: trillian.InitLogResponse.created:type_name -> trillian.SignedLogRoot - 28, // 25: trillian.QueueLeavesRequest.leaves:type_name -> trillian.LogLeaf - 0, // 26: trillian.QueueLeavesRequest.charge_to:type_name -> trillian.ChargeTo - 27, // 27: trillian.QueueLeavesResponse.queued_leaves:type_name -> trillian.QueuedLogLeaf - 28, // 28: trillian.AddSequencedLeavesRequest.leaves:type_name -> trillian.LogLeaf - 0, // 29: trillian.AddSequencedLeavesRequest.charge_to:type_name -> trillian.ChargeTo - 27, // 30: trillian.AddSequencedLeavesResponse.results:type_name -> trillian.QueuedLogLeaf - 0, // 31: trillian.GetLeavesByIndexRequest.charge_to:type_name -> trillian.ChargeTo - 28, // 32: trillian.GetLeavesByIndexResponse.leaves:type_name -> trillian.LogLeaf - 30, // 33: trillian.GetLeavesByIndexResponse.signed_log_root:type_name -> trillian.SignedLogRoot - 0, // 34: trillian.GetLeavesByRangeRequest.charge_to:type_name -> trillian.ChargeTo - 28, // 35: trillian.GetLeavesByRangeResponse.leaves:type_name -> trillian.LogLeaf - 30, // 36: trillian.GetLeavesByRangeResponse.signed_log_root:type_name -> trillian.SignedLogRoot - 28, // 37: trillian.QueuedLogLeaf.leaf:type_name -> trillian.LogLeaf - 31, // 38: trillian.QueuedLogLeaf.status:type_name -> google.rpc.Status - 32, // 39: trillian.LogLeaf.queue_timestamp:type_name -> google.protobuf.Timestamp - 32, // 40: trillian.LogLeaf.integrate_timestamp:type_name -> google.protobuf.Timestamp - 1, // 41: trillian.TrillianLog.QueueLeaf:input_type -> trillian.QueueLeafRequest - 3, // 42: trillian.TrillianLog.AddSequencedLeaf:input_type -> trillian.AddSequencedLeafRequest - 5, // 43: trillian.TrillianLog.GetInclusionProof:input_type -> trillian.GetInclusionProofRequest - 7, // 44: trillian.TrillianLog.GetInclusionProofByHash:input_type -> trillian.GetInclusionProofByHashRequest - 9, // 45: trillian.TrillianLog.GetConsistencyProof:input_type -> trillian.GetConsistencyProofRequest - 11, // 46: trillian.TrillianLog.GetLatestSignedLogRoot:input_type -> trillian.GetLatestSignedLogRootRequest - 13, // 47: trillian.TrillianLog.GetSequencedLeafCount:input_type -> trillian.GetSequencedLeafCountRequest - 15, // 48: trillian.TrillianLog.GetEntryAndProof:input_type -> trillian.GetEntryAndProofRequest - 17, // 49: trillian.TrillianLog.InitLog:input_type -> trillian.InitLogRequest - 19, // 50: trillian.TrillianLog.QueueLeaves:input_type -> trillian.QueueLeavesRequest - 21, // 51: trillian.TrillianLog.AddSequencedLeaves:input_type -> trillian.AddSequencedLeavesRequest - 23, // 52: trillian.TrillianLog.GetLeavesByIndex:input_type -> trillian.GetLeavesByIndexRequest - 25, // 53: trillian.TrillianLog.GetLeavesByRange:input_type -> trillian.GetLeavesByRangeRequest - 2, // 54: trillian.TrillianLog.QueueLeaf:output_type -> trillian.QueueLeafResponse - 4, // 55: trillian.TrillianLog.AddSequencedLeaf:output_type -> trillian.AddSequencedLeafResponse - 6, // 56: trillian.TrillianLog.GetInclusionProof:output_type -> trillian.GetInclusionProofResponse - 8, // 57: trillian.TrillianLog.GetInclusionProofByHash:output_type -> trillian.GetInclusionProofByHashResponse - 10, // 58: trillian.TrillianLog.GetConsistencyProof:output_type -> trillian.GetConsistencyProofResponse - 12, // 59: trillian.TrillianLog.GetLatestSignedLogRoot:output_type -> trillian.GetLatestSignedLogRootResponse - 14, // 60: trillian.TrillianLog.GetSequencedLeafCount:output_type -> trillian.GetSequencedLeafCountResponse - 16, // 61: trillian.TrillianLog.GetEntryAndProof:output_type -> trillian.GetEntryAndProofResponse - 18, // 62: trillian.TrillianLog.InitLog:output_type -> trillian.InitLogResponse - 20, // 63: trillian.TrillianLog.QueueLeaves:output_type -> trillian.QueueLeavesResponse - 22, // 64: trillian.TrillianLog.AddSequencedLeaves:output_type -> trillian.AddSequencedLeavesResponse - 24, // 65: trillian.TrillianLog.GetLeavesByIndex:output_type -> trillian.GetLeavesByIndexResponse - 26, // 66: trillian.TrillianLog.GetLeavesByRange:output_type -> trillian.GetLeavesByRangeResponse - 54, // [54:67] is the sub-list for method output_type - 41, // [41:54] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 28, // 16: trillian.GetLatestSignedLogRootResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 27, // 17: trillian.GetLatestSignedLogRootResponse.proof:type_name -> trillian.Proof + 0, // 18: trillian.GetEntryAndProofRequest.charge_to:type_name -> trillian.ChargeTo + 27, // 19: trillian.GetEntryAndProofResponse.proof:type_name -> trillian.Proof + 26, // 20: trillian.GetEntryAndProofResponse.leaf:type_name -> trillian.LogLeaf + 28, // 21: trillian.GetEntryAndProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 0, // 22: trillian.InitLogRequest.charge_to:type_name -> trillian.ChargeTo + 28, // 23: trillian.InitLogResponse.created:type_name -> trillian.SignedLogRoot + 26, // 24: trillian.QueueLeavesRequest.leaves:type_name -> trillian.LogLeaf + 0, // 25: trillian.QueueLeavesRequest.charge_to:type_name -> trillian.ChargeTo + 25, // 26: trillian.QueueLeavesResponse.queued_leaves:type_name -> trillian.QueuedLogLeaf + 26, // 27: trillian.AddSequencedLeavesRequest.leaves:type_name -> trillian.LogLeaf + 0, // 28: trillian.AddSequencedLeavesRequest.charge_to:type_name -> trillian.ChargeTo + 25, // 29: trillian.AddSequencedLeavesResponse.results:type_name -> trillian.QueuedLogLeaf + 0, // 30: trillian.GetLeavesByIndexRequest.charge_to:type_name -> trillian.ChargeTo + 26, // 31: trillian.GetLeavesByIndexResponse.leaves:type_name -> trillian.LogLeaf + 28, // 32: trillian.GetLeavesByIndexResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 0, // 33: trillian.GetLeavesByRangeRequest.charge_to:type_name -> trillian.ChargeTo + 26, // 34: trillian.GetLeavesByRangeResponse.leaves:type_name -> trillian.LogLeaf + 28, // 35: trillian.GetLeavesByRangeResponse.signed_log_root:type_name -> trillian.SignedLogRoot + 26, // 36: trillian.QueuedLogLeaf.leaf:type_name -> trillian.LogLeaf + 29, // 37: trillian.QueuedLogLeaf.status:type_name -> google.rpc.Status + 30, // 38: trillian.LogLeaf.queue_timestamp:type_name -> google.protobuf.Timestamp + 30, // 39: trillian.LogLeaf.integrate_timestamp:type_name -> google.protobuf.Timestamp + 1, // 40: trillian.TrillianLog.QueueLeaf:input_type -> trillian.QueueLeafRequest + 3, // 41: trillian.TrillianLog.AddSequencedLeaf:input_type -> trillian.AddSequencedLeafRequest + 5, // 42: trillian.TrillianLog.GetInclusionProof:input_type -> trillian.GetInclusionProofRequest + 7, // 43: trillian.TrillianLog.GetInclusionProofByHash:input_type -> trillian.GetInclusionProofByHashRequest + 9, // 44: trillian.TrillianLog.GetConsistencyProof:input_type -> trillian.GetConsistencyProofRequest + 11, // 45: trillian.TrillianLog.GetLatestSignedLogRoot:input_type -> trillian.GetLatestSignedLogRootRequest + 13, // 46: trillian.TrillianLog.GetEntryAndProof:input_type -> trillian.GetEntryAndProofRequest + 15, // 47: trillian.TrillianLog.InitLog:input_type -> trillian.InitLogRequest + 17, // 48: trillian.TrillianLog.QueueLeaves:input_type -> trillian.QueueLeavesRequest + 19, // 49: trillian.TrillianLog.AddSequencedLeaves:input_type -> trillian.AddSequencedLeavesRequest + 21, // 50: trillian.TrillianLog.GetLeavesByIndex:input_type -> trillian.GetLeavesByIndexRequest + 23, // 51: trillian.TrillianLog.GetLeavesByRange:input_type -> trillian.GetLeavesByRangeRequest + 2, // 52: trillian.TrillianLog.QueueLeaf:output_type -> trillian.QueueLeafResponse + 4, // 53: trillian.TrillianLog.AddSequencedLeaf:output_type -> trillian.AddSequencedLeafResponse + 6, // 54: trillian.TrillianLog.GetInclusionProof:output_type -> trillian.GetInclusionProofResponse + 8, // 55: trillian.TrillianLog.GetInclusionProofByHash:output_type -> trillian.GetInclusionProofByHashResponse + 10, // 56: trillian.TrillianLog.GetConsistencyProof:output_type -> trillian.GetConsistencyProofResponse + 12, // 57: trillian.TrillianLog.GetLatestSignedLogRoot:output_type -> trillian.GetLatestSignedLogRootResponse + 14, // 58: trillian.TrillianLog.GetEntryAndProof:output_type -> trillian.GetEntryAndProofResponse + 16, // 59: trillian.TrillianLog.InitLog:output_type -> trillian.InitLogResponse + 18, // 60: trillian.TrillianLog.QueueLeaves:output_type -> trillian.QueueLeavesResponse + 20, // 61: trillian.TrillianLog.AddSequencedLeaves:output_type -> trillian.AddSequencedLeavesResponse + 22, // 62: trillian.TrillianLog.GetLeavesByIndex:output_type -> trillian.GetLeavesByIndexResponse + 24, // 63: trillian.TrillianLog.GetLeavesByRange:output_type -> trillian.GetLeavesByRangeResponse + 52, // [52:64] is the sub-list for method output_type + 40, // [40:52] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name } func init() { file_trillian_log_api_proto_init() } @@ -2543,30 +2412,6 @@ func file_trillian_log_api_proto_init() { } } file_trillian_log_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSequencedLeafCountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_trillian_log_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSequencedLeafCountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_trillian_log_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEntryAndProofRequest); i { case 0: return &v.state @@ -2578,7 +2423,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEntryAndProofResponse); i { case 0: return &v.state @@ -2590,7 +2435,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InitLogRequest); i { case 0: return &v.state @@ -2602,7 +2447,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InitLogResponse); i { case 0: return &v.state @@ -2614,7 +2459,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueueLeavesRequest); i { case 0: return &v.state @@ -2626,7 +2471,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueueLeavesResponse); i { case 0: return &v.state @@ -2638,7 +2483,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSequencedLeavesRequest); i { case 0: return &v.state @@ -2650,7 +2495,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSequencedLeavesResponse); i { case 0: return &v.state @@ -2662,7 +2507,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLeavesByIndexRequest); i { case 0: return &v.state @@ -2674,7 +2519,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLeavesByIndexResponse); i { case 0: return &v.state @@ -2686,7 +2531,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLeavesByRangeRequest); i { case 0: return &v.state @@ -2698,7 +2543,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLeavesByRangeResponse); i { case 0: return &v.state @@ -2710,7 +2555,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueuedLogLeaf); i { case 0: return &v.state @@ -2722,7 +2567,7 @@ func file_trillian_log_api_proto_init() { return nil } } - file_trillian_log_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_trillian_log_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogLeaf); i { case 0: return &v.state @@ -2741,7 +2586,7 @@ func file_trillian_log_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_trillian_log_api_proto_rawDesc, NumEnums: 0, - NumMessages: 29, + NumMessages: 27, NumExtensions: 0, NumServices: 1, }, @@ -2798,14 +2643,6 @@ type TrillianLogClient interface { // If the earlier tree size is larger than the server is aware of, // an InvalidArgument error is returned. GetLatestSignedLogRoot(ctx context.Context, in *GetLatestSignedLogRootRequest, opts ...grpc.CallOption) (*GetLatestSignedLogRootResponse, error) - // GetSequencedLeafCount returns the total number of leaves that have been - // integrated into the given tree. - // - // DO NOT USE - FOR DEBUGGING/TEST ONLY - // - // (Use GetLatestSignedLogRoot then de-serialize the Log Root and use - // use the tree size field within.) - GetSequencedLeafCount(ctx context.Context, in *GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*GetSequencedLeafCountResponse, error) // GetEntryAndProof returns a log leaf and the corresponding inclusion proof // to a specified tree size, for a given leaf index in a particular tree. // @@ -2892,15 +2729,6 @@ func (c *trillianLogClient) GetLatestSignedLogRoot(ctx context.Context, in *GetL return out, nil } -func (c *trillianLogClient) GetSequencedLeafCount(ctx context.Context, in *GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*GetSequencedLeafCountResponse, error) { - out := new(GetSequencedLeafCountResponse) - err := c.cc.Invoke(ctx, "/trillian.TrillianLog/GetSequencedLeafCount", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *trillianLogClient) GetEntryAndProof(ctx context.Context, in *GetEntryAndProofRequest, opts ...grpc.CallOption) (*GetEntryAndProofResponse, error) { out := new(GetEntryAndProofResponse) err := c.cc.Invoke(ctx, "/trillian.TrillianLog/GetEntryAndProof", in, out, opts...) @@ -2988,14 +2816,6 @@ type TrillianLogServer interface { // If the earlier tree size is larger than the server is aware of, // an InvalidArgument error is returned. GetLatestSignedLogRoot(context.Context, *GetLatestSignedLogRootRequest) (*GetLatestSignedLogRootResponse, error) - // GetSequencedLeafCount returns the total number of leaves that have been - // integrated into the given tree. - // - // DO NOT USE - FOR DEBUGGING/TEST ONLY - // - // (Use GetLatestSignedLogRoot then de-serialize the Log Root and use - // use the tree size field within.) - GetSequencedLeafCount(context.Context, *GetSequencedLeafCountRequest) (*GetSequencedLeafCountResponse, error) // GetEntryAndProof returns a log leaf and the corresponding inclusion proof // to a specified tree size, for a given leaf index in a particular tree. // @@ -3042,9 +2862,6 @@ func (*UnimplementedTrillianLogServer) GetConsistencyProof(context.Context, *Get func (*UnimplementedTrillianLogServer) GetLatestSignedLogRoot(context.Context, *GetLatestSignedLogRootRequest) (*GetLatestSignedLogRootResponse, error) { return nil, status1.Errorf(codes.Unimplemented, "method GetLatestSignedLogRoot not implemented") } -func (*UnimplementedTrillianLogServer) GetSequencedLeafCount(context.Context, *GetSequencedLeafCountRequest) (*GetSequencedLeafCountResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetSequencedLeafCount not implemented") -} func (*UnimplementedTrillianLogServer) GetEntryAndProof(context.Context, *GetEntryAndProofRequest) (*GetEntryAndProofResponse, error) { return nil, status1.Errorf(codes.Unimplemented, "method GetEntryAndProof not implemented") } @@ -3176,24 +2993,6 @@ func _TrillianLog_GetLatestSignedLogRoot_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } -func _TrillianLog_GetSequencedLeafCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSequencedLeafCountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TrillianLogServer).GetSequencedLeafCount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/trillian.TrillianLog/GetSequencedLeafCount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TrillianLogServer).GetSequencedLeafCount(ctx, req.(*GetSequencedLeafCountRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _TrillianLog_GetEntryAndProof_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetEntryAndProofRequest) if err := dec(in); err != nil { @@ -3330,10 +3129,6 @@ var _TrillianLog_serviceDesc = grpc.ServiceDesc{ MethodName: "GetLatestSignedLogRoot", Handler: _TrillianLog_GetLatestSignedLogRoot_Handler, }, - { - MethodName: "GetSequencedLeafCount", - Handler: _TrillianLog_GetSequencedLeafCount_Handler, - }, { MethodName: "GetEntryAndProof", Handler: _TrillianLog_GetEntryAndProof_Handler, diff --git a/trillian_log_api.proto b/trillian_log_api.proto index 5657750c9d..1dcb3e9f9f 100644 --- a/trillian_log_api.proto +++ b/trillian_log_api.proto @@ -124,20 +124,6 @@ service TrillianLog { }; } - // GetSequencedLeafCount returns the total number of leaves that have been - // integrated into the given tree. - // - // DO NOT USE - FOR DEBUGGING/TEST ONLY - // - // (Use GetLatestSignedLogRoot then de-serialize the Log Root and use - // use the tree size field within.) - rpc GetSequencedLeafCount(GetSequencedLeafCountRequest) - returns (GetSequencedLeafCountResponse) { - option (google.api.http) = { - get: "/v1beta1/logs/{log_id}/leaves:sequenced_count" - }; - } - // GetEntryAndProof returns a log leaf and the corresponding inclusion proof // to a specified tree size, for a given leaf index in a particular tree. // @@ -295,19 +281,6 @@ message GetLatestSignedLogRootResponse { Proof proof = 3; } -// DO NOT USE - FOR DEBUGGING/TEST ONLY -// -// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use -// use the tree size field within.) -message GetSequencedLeafCountRequest { - int64 log_id = 1; - ChargeTo charge_to = 2; -} - -message GetSequencedLeafCountResponse { - int64 leaf_count = 2; -} - message GetEntryAndProofRequest { int64 log_id = 1; int64 leaf_index = 2;