go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/resultdb/proto/v1/resultdb.pb.go (about)

     1  // Copyright 2019 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.31.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/resultdb/proto/v1/resultdb.proto
    20  
    21  package resultpb
    22  
    23  import prpc "go.chromium.org/luci/grpc/prpc"
    24  
    25  import (
    26  	context "context"
    27  	_ "google.golang.org/genproto/googleapis/api/annotations"
    28  	grpc "google.golang.org/grpc"
    29  	codes "google.golang.org/grpc/codes"
    30  	status "google.golang.org/grpc/status"
    31  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    32  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    33  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    34  	reflect "reflect"
    35  	sync "sync"
    36  )
    37  
    38  const (
    39  	// Verify that this generated code is sufficiently up-to-date.
    40  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    41  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    42  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    43  )
    44  
    45  // A request message for GetInvocation RPC.
    46  type GetInvocationRequest struct {
    47  	state         protoimpl.MessageState
    48  	sizeCache     protoimpl.SizeCache
    49  	unknownFields protoimpl.UnknownFields
    50  
    51  	// The name of the invocation to request, see Invocation.name.
    52  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
    53  }
    54  
    55  func (x *GetInvocationRequest) Reset() {
    56  	*x = GetInvocationRequest{}
    57  	if protoimpl.UnsafeEnabled {
    58  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[0]
    59  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    60  		ms.StoreMessageInfo(mi)
    61  	}
    62  }
    63  
    64  func (x *GetInvocationRequest) String() string {
    65  	return protoimpl.X.MessageStringOf(x)
    66  }
    67  
    68  func (*GetInvocationRequest) ProtoMessage() {}
    69  
    70  func (x *GetInvocationRequest) ProtoReflect() protoreflect.Message {
    71  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[0]
    72  	if protoimpl.UnsafeEnabled && x != nil {
    73  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    74  		if ms.LoadMessageInfo() == nil {
    75  			ms.StoreMessageInfo(mi)
    76  		}
    77  		return ms
    78  	}
    79  	return mi.MessageOf(x)
    80  }
    81  
    82  // Deprecated: Use GetInvocationRequest.ProtoReflect.Descriptor instead.
    83  func (*GetInvocationRequest) Descriptor() ([]byte, []int) {
    84  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{0}
    85  }
    86  
    87  func (x *GetInvocationRequest) GetName() string {
    88  	if x != nil {
    89  		return x.Name
    90  	}
    91  	return ""
    92  }
    93  
    94  // A request message for GetTestResult RPC.
    95  type GetTestResultRequest struct {
    96  	state         protoimpl.MessageState
    97  	sizeCache     protoimpl.SizeCache
    98  	unknownFields protoimpl.UnknownFields
    99  
   100  	// The name of the test result to request, see TestResult.name.
   101  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   102  }
   103  
   104  func (x *GetTestResultRequest) Reset() {
   105  	*x = GetTestResultRequest{}
   106  	if protoimpl.UnsafeEnabled {
   107  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[1]
   108  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   109  		ms.StoreMessageInfo(mi)
   110  	}
   111  }
   112  
   113  func (x *GetTestResultRequest) String() string {
   114  	return protoimpl.X.MessageStringOf(x)
   115  }
   116  
   117  func (*GetTestResultRequest) ProtoMessage() {}
   118  
   119  func (x *GetTestResultRequest) ProtoReflect() protoreflect.Message {
   120  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[1]
   121  	if protoimpl.UnsafeEnabled && x != nil {
   122  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   123  		if ms.LoadMessageInfo() == nil {
   124  			ms.StoreMessageInfo(mi)
   125  		}
   126  		return ms
   127  	}
   128  	return mi.MessageOf(x)
   129  }
   130  
   131  // Deprecated: Use GetTestResultRequest.ProtoReflect.Descriptor instead.
   132  func (*GetTestResultRequest) Descriptor() ([]byte, []int) {
   133  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{1}
   134  }
   135  
   136  func (x *GetTestResultRequest) GetName() string {
   137  	if x != nil {
   138  		return x.Name
   139  	}
   140  	return ""
   141  }
   142  
   143  // A request message for ListTestResults RPC.
   144  type ListTestResultsRequest struct {
   145  	state         protoimpl.MessageState
   146  	sizeCache     protoimpl.SizeCache
   147  	unknownFields protoimpl.UnknownFields
   148  
   149  	// Name of the invocation, e.g. "invocations/{id}".
   150  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   151  	// The maximum number of test results to return.
   152  	//
   153  	// The service may return fewer than this value.
   154  	// If unspecified, at most 100 test results will be returned.
   155  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
   156  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   157  	// A page token, received from a previous `ListTestResults` call.
   158  	// Provide this to retrieve the subsequent page.
   159  	//
   160  	// When paginating, all other parameters provided to `ListTestResults` MUST
   161  	// match the call that provided the page token.
   162  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   163  	// Fields to include in the response.
   164  	// If not set, the default mask is used where summary_html and tags are
   165  	// excluded.
   166  	// Test result names will always be included even if "name" is not a part of
   167  	// the mask.
   168  	ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
   169  }
   170  
   171  func (x *ListTestResultsRequest) Reset() {
   172  	*x = ListTestResultsRequest{}
   173  	if protoimpl.UnsafeEnabled {
   174  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[2]
   175  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   176  		ms.StoreMessageInfo(mi)
   177  	}
   178  }
   179  
   180  func (x *ListTestResultsRequest) String() string {
   181  	return protoimpl.X.MessageStringOf(x)
   182  }
   183  
   184  func (*ListTestResultsRequest) ProtoMessage() {}
   185  
   186  func (x *ListTestResultsRequest) ProtoReflect() protoreflect.Message {
   187  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[2]
   188  	if protoimpl.UnsafeEnabled && x != nil {
   189  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   190  		if ms.LoadMessageInfo() == nil {
   191  			ms.StoreMessageInfo(mi)
   192  		}
   193  		return ms
   194  	}
   195  	return mi.MessageOf(x)
   196  }
   197  
   198  // Deprecated: Use ListTestResultsRequest.ProtoReflect.Descriptor instead.
   199  func (*ListTestResultsRequest) Descriptor() ([]byte, []int) {
   200  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{2}
   201  }
   202  
   203  func (x *ListTestResultsRequest) GetInvocation() string {
   204  	if x != nil {
   205  		return x.Invocation
   206  	}
   207  	return ""
   208  }
   209  
   210  func (x *ListTestResultsRequest) GetPageSize() int32 {
   211  	if x != nil {
   212  		return x.PageSize
   213  	}
   214  	return 0
   215  }
   216  
   217  func (x *ListTestResultsRequest) GetPageToken() string {
   218  	if x != nil {
   219  		return x.PageToken
   220  	}
   221  	return ""
   222  }
   223  
   224  func (x *ListTestResultsRequest) GetReadMask() *fieldmaskpb.FieldMask {
   225  	if x != nil {
   226  		return x.ReadMask
   227  	}
   228  	return nil
   229  }
   230  
   231  // A response message for ListTestResults RPC.
   232  type ListTestResultsResponse struct {
   233  	state         protoimpl.MessageState
   234  	sizeCache     protoimpl.SizeCache
   235  	unknownFields protoimpl.UnknownFields
   236  
   237  	// The test results from the specified invocation.
   238  	TestResults []*TestResult `protobuf:"bytes,1,rep,name=test_results,json=testResults,proto3" json:"test_results,omitempty"`
   239  	// A token, which can be sent as `page_token` to retrieve the next page.
   240  	// If this field is omitted, there were no subsequent pages at the time of
   241  	// request.
   242  	// If the invocation is not finalized, more results may appear later.
   243  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   244  }
   245  
   246  func (x *ListTestResultsResponse) Reset() {
   247  	*x = ListTestResultsResponse{}
   248  	if protoimpl.UnsafeEnabled {
   249  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[3]
   250  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   251  		ms.StoreMessageInfo(mi)
   252  	}
   253  }
   254  
   255  func (x *ListTestResultsResponse) String() string {
   256  	return protoimpl.X.MessageStringOf(x)
   257  }
   258  
   259  func (*ListTestResultsResponse) ProtoMessage() {}
   260  
   261  func (x *ListTestResultsResponse) ProtoReflect() protoreflect.Message {
   262  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[3]
   263  	if protoimpl.UnsafeEnabled && x != nil {
   264  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   265  		if ms.LoadMessageInfo() == nil {
   266  			ms.StoreMessageInfo(mi)
   267  		}
   268  		return ms
   269  	}
   270  	return mi.MessageOf(x)
   271  }
   272  
   273  // Deprecated: Use ListTestResultsResponse.ProtoReflect.Descriptor instead.
   274  func (*ListTestResultsResponse) Descriptor() ([]byte, []int) {
   275  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{3}
   276  }
   277  
   278  func (x *ListTestResultsResponse) GetTestResults() []*TestResult {
   279  	if x != nil {
   280  		return x.TestResults
   281  	}
   282  	return nil
   283  }
   284  
   285  func (x *ListTestResultsResponse) GetNextPageToken() string {
   286  	if x != nil {
   287  		return x.NextPageToken
   288  	}
   289  	return ""
   290  }
   291  
   292  // A request message for GetTestExoneration RPC.
   293  type GetTestExonerationRequest struct {
   294  	state         protoimpl.MessageState
   295  	sizeCache     protoimpl.SizeCache
   296  	unknownFields protoimpl.UnknownFields
   297  
   298  	// The name of the test exoneration to request, see TestExoneration.name.
   299  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   300  }
   301  
   302  func (x *GetTestExonerationRequest) Reset() {
   303  	*x = GetTestExonerationRequest{}
   304  	if protoimpl.UnsafeEnabled {
   305  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[4]
   306  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   307  		ms.StoreMessageInfo(mi)
   308  	}
   309  }
   310  
   311  func (x *GetTestExonerationRequest) String() string {
   312  	return protoimpl.X.MessageStringOf(x)
   313  }
   314  
   315  func (*GetTestExonerationRequest) ProtoMessage() {}
   316  
   317  func (x *GetTestExonerationRequest) ProtoReflect() protoreflect.Message {
   318  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[4]
   319  	if protoimpl.UnsafeEnabled && x != nil {
   320  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   321  		if ms.LoadMessageInfo() == nil {
   322  			ms.StoreMessageInfo(mi)
   323  		}
   324  		return ms
   325  	}
   326  	return mi.MessageOf(x)
   327  }
   328  
   329  // Deprecated: Use GetTestExonerationRequest.ProtoReflect.Descriptor instead.
   330  func (*GetTestExonerationRequest) Descriptor() ([]byte, []int) {
   331  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{4}
   332  }
   333  
   334  func (x *GetTestExonerationRequest) GetName() string {
   335  	if x != nil {
   336  		return x.Name
   337  	}
   338  	return ""
   339  }
   340  
   341  // A request message for ListTestExonerations RPC.
   342  type ListTestExonerationsRequest struct {
   343  	state         protoimpl.MessageState
   344  	sizeCache     protoimpl.SizeCache
   345  	unknownFields protoimpl.UnknownFields
   346  
   347  	// Name of the invocation, e.g. "invocations/{id}".
   348  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
   349  	// The maximum number of test exonerations to return.
   350  	//
   351  	// The service may return fewer than this value.
   352  	// If unspecified, at most 100 test exonerations will be returned.
   353  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
   354  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   355  	// A page token, received from a previous `ListTestExonerations` call.
   356  	// Provide this to retrieve the subsequent page.
   357  	//
   358  	// When paginating, all other parameters provided to `ListTestExonerations`
   359  	// MUST match the call that provided the page token.
   360  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   361  }
   362  
   363  func (x *ListTestExonerationsRequest) Reset() {
   364  	*x = ListTestExonerationsRequest{}
   365  	if protoimpl.UnsafeEnabled {
   366  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[5]
   367  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   368  		ms.StoreMessageInfo(mi)
   369  	}
   370  }
   371  
   372  func (x *ListTestExonerationsRequest) String() string {
   373  	return protoimpl.X.MessageStringOf(x)
   374  }
   375  
   376  func (*ListTestExonerationsRequest) ProtoMessage() {}
   377  
   378  func (x *ListTestExonerationsRequest) ProtoReflect() protoreflect.Message {
   379  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[5]
   380  	if protoimpl.UnsafeEnabled && x != nil {
   381  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   382  		if ms.LoadMessageInfo() == nil {
   383  			ms.StoreMessageInfo(mi)
   384  		}
   385  		return ms
   386  	}
   387  	return mi.MessageOf(x)
   388  }
   389  
   390  // Deprecated: Use ListTestExonerationsRequest.ProtoReflect.Descriptor instead.
   391  func (*ListTestExonerationsRequest) Descriptor() ([]byte, []int) {
   392  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{5}
   393  }
   394  
   395  func (x *ListTestExonerationsRequest) GetInvocation() string {
   396  	if x != nil {
   397  		return x.Invocation
   398  	}
   399  	return ""
   400  }
   401  
   402  func (x *ListTestExonerationsRequest) GetPageSize() int32 {
   403  	if x != nil {
   404  		return x.PageSize
   405  	}
   406  	return 0
   407  }
   408  
   409  func (x *ListTestExonerationsRequest) GetPageToken() string {
   410  	if x != nil {
   411  		return x.PageToken
   412  	}
   413  	return ""
   414  }
   415  
   416  // A response message for ListTestExonerations RPC.
   417  type ListTestExonerationsResponse struct {
   418  	state         protoimpl.MessageState
   419  	sizeCache     protoimpl.SizeCache
   420  	unknownFields protoimpl.UnknownFields
   421  
   422  	// The test exonerations from the specified invocation.
   423  	TestExonerations []*TestExoneration `protobuf:"bytes,1,rep,name=test_exonerations,json=testExonerations,proto3" json:"test_exonerations,omitempty"`
   424  	// A token, which can be sent as `page_token` to retrieve the next page.
   425  	// If this field is omitted, there were no subsequent pages at the time of
   426  	// request.
   427  	// If the invocation is not finalized, more results may appear later.
   428  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   429  }
   430  
   431  func (x *ListTestExonerationsResponse) Reset() {
   432  	*x = ListTestExonerationsResponse{}
   433  	if protoimpl.UnsafeEnabled {
   434  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[6]
   435  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   436  		ms.StoreMessageInfo(mi)
   437  	}
   438  }
   439  
   440  func (x *ListTestExonerationsResponse) String() string {
   441  	return protoimpl.X.MessageStringOf(x)
   442  }
   443  
   444  func (*ListTestExonerationsResponse) ProtoMessage() {}
   445  
   446  func (x *ListTestExonerationsResponse) ProtoReflect() protoreflect.Message {
   447  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[6]
   448  	if protoimpl.UnsafeEnabled && x != nil {
   449  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   450  		if ms.LoadMessageInfo() == nil {
   451  			ms.StoreMessageInfo(mi)
   452  		}
   453  		return ms
   454  	}
   455  	return mi.MessageOf(x)
   456  }
   457  
   458  // Deprecated: Use ListTestExonerationsResponse.ProtoReflect.Descriptor instead.
   459  func (*ListTestExonerationsResponse) Descriptor() ([]byte, []int) {
   460  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{6}
   461  }
   462  
   463  func (x *ListTestExonerationsResponse) GetTestExonerations() []*TestExoneration {
   464  	if x != nil {
   465  		return x.TestExonerations
   466  	}
   467  	return nil
   468  }
   469  
   470  func (x *ListTestExonerationsResponse) GetNextPageToken() string {
   471  	if x != nil {
   472  		return x.NextPageToken
   473  	}
   474  	return ""
   475  }
   476  
   477  // A request message for QueryTestResults RPC.
   478  type QueryTestResultsRequest struct {
   479  	state         protoimpl.MessageState
   480  	sizeCache     protoimpl.SizeCache
   481  	unknownFields protoimpl.UnknownFields
   482  
   483  	// Retrieve test results included in these invocations, directly or indirectly
   484  	// (via Invocation.included_invocations).
   485  	//
   486  	// Specifying multiple invocations is equivalent to querying one invocation
   487  	// that includes these.
   488  	Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
   489  	// A test result in the response must satisfy this predicate.
   490  	Predicate *TestResultPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
   491  	// The maximum number of test results to return.
   492  	//
   493  	// The service may return fewer than this value.
   494  	// If unspecified, at most 100 test results will be returned.
   495  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
   496  	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   497  	// A page token, received from a previous `QueryTestResults` call.
   498  	// Provide this to retrieve the subsequent page.
   499  	//
   500  	// When paginating, all other parameters provided to `QueryTestResults` MUST
   501  	// match the call that provided the page token.
   502  	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   503  	// Fields to include in the response.
   504  	// If not set, the default mask is used where summary_html and tags are
   505  	// excluded.
   506  	// Test result names will always be included even if "name" is not a part of
   507  	// the mask.
   508  	ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
   509  }
   510  
   511  func (x *QueryTestResultsRequest) Reset() {
   512  	*x = QueryTestResultsRequest{}
   513  	if protoimpl.UnsafeEnabled {
   514  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7]
   515  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   516  		ms.StoreMessageInfo(mi)
   517  	}
   518  }
   519  
   520  func (x *QueryTestResultsRequest) String() string {
   521  	return protoimpl.X.MessageStringOf(x)
   522  }
   523  
   524  func (*QueryTestResultsRequest) ProtoMessage() {}
   525  
   526  func (x *QueryTestResultsRequest) ProtoReflect() protoreflect.Message {
   527  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7]
   528  	if protoimpl.UnsafeEnabled && x != nil {
   529  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   530  		if ms.LoadMessageInfo() == nil {
   531  			ms.StoreMessageInfo(mi)
   532  		}
   533  		return ms
   534  	}
   535  	return mi.MessageOf(x)
   536  }
   537  
   538  // Deprecated: Use QueryTestResultsRequest.ProtoReflect.Descriptor instead.
   539  func (*QueryTestResultsRequest) Descriptor() ([]byte, []int) {
   540  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{7}
   541  }
   542  
   543  func (x *QueryTestResultsRequest) GetInvocations() []string {
   544  	if x != nil {
   545  		return x.Invocations
   546  	}
   547  	return nil
   548  }
   549  
   550  func (x *QueryTestResultsRequest) GetPredicate() *TestResultPredicate {
   551  	if x != nil {
   552  		return x.Predicate
   553  	}
   554  	return nil
   555  }
   556  
   557  func (x *QueryTestResultsRequest) GetPageSize() int32 {
   558  	if x != nil {
   559  		return x.PageSize
   560  	}
   561  	return 0
   562  }
   563  
   564  func (x *QueryTestResultsRequest) GetPageToken() string {
   565  	if x != nil {
   566  		return x.PageToken
   567  	}
   568  	return ""
   569  }
   570  
   571  func (x *QueryTestResultsRequest) GetReadMask() *fieldmaskpb.FieldMask {
   572  	if x != nil {
   573  		return x.ReadMask
   574  	}
   575  	return nil
   576  }
   577  
   578  // A response message for QueryTestResults RPC.
   579  type QueryTestResultsResponse struct {
   580  	state         protoimpl.MessageState
   581  	sizeCache     protoimpl.SizeCache
   582  	unknownFields protoimpl.UnknownFields
   583  
   584  	// Matched test results.
   585  	// Ordered by parent invocation ID, test ID and result ID.
   586  	TestResults []*TestResult `protobuf:"bytes,1,rep,name=test_results,json=testResults,proto3" json:"test_results,omitempty"`
   587  	// A token, which can be sent as `page_token` to retrieve the next page.
   588  	// If this field is omitted, there were no subsequent pages at the time of
   589  	// request.
   590  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   591  }
   592  
   593  func (x *QueryTestResultsResponse) Reset() {
   594  	*x = QueryTestResultsResponse{}
   595  	if protoimpl.UnsafeEnabled {
   596  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8]
   597  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   598  		ms.StoreMessageInfo(mi)
   599  	}
   600  }
   601  
   602  func (x *QueryTestResultsResponse) String() string {
   603  	return protoimpl.X.MessageStringOf(x)
   604  }
   605  
   606  func (*QueryTestResultsResponse) ProtoMessage() {}
   607  
   608  func (x *QueryTestResultsResponse) ProtoReflect() protoreflect.Message {
   609  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8]
   610  	if protoimpl.UnsafeEnabled && x != nil {
   611  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   612  		if ms.LoadMessageInfo() == nil {
   613  			ms.StoreMessageInfo(mi)
   614  		}
   615  		return ms
   616  	}
   617  	return mi.MessageOf(x)
   618  }
   619  
   620  // Deprecated: Use QueryTestResultsResponse.ProtoReflect.Descriptor instead.
   621  func (*QueryTestResultsResponse) Descriptor() ([]byte, []int) {
   622  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{8}
   623  }
   624  
   625  func (x *QueryTestResultsResponse) GetTestResults() []*TestResult {
   626  	if x != nil {
   627  		return x.TestResults
   628  	}
   629  	return nil
   630  }
   631  
   632  func (x *QueryTestResultsResponse) GetNextPageToken() string {
   633  	if x != nil {
   634  		return x.NextPageToken
   635  	}
   636  	return ""
   637  }
   638  
   639  // A request message for QueryTestExonerations RPC.
   640  type QueryTestExonerationsRequest struct {
   641  	state         protoimpl.MessageState
   642  	sizeCache     protoimpl.SizeCache
   643  	unknownFields protoimpl.UnknownFields
   644  
   645  	// Retrieve test exonerations included in these invocations, directly or
   646  	// indirectly (via Invocation.included_invocations).
   647  	//
   648  	// Specifying multiple invocations is equivalent to querying one invocation
   649  	// that includes these.
   650  	Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
   651  	// A test exoneration in the response must satisfy this predicate.
   652  	Predicate *TestExonerationPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
   653  	// The maximum number of test exonerations to return.
   654  	//
   655  	// The service may return fewer than this value.
   656  	// If unspecified, at most 100 test exonerations will be returned.
   657  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
   658  	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   659  	// A page token, received from a previous `QueryTestExonerations` call.
   660  	// Provide this to retrieve the subsequent page.
   661  	//
   662  	// When paginating, all other parameters provided to `QueryTestExonerations`
   663  	// MUST match the call that provided the page token.
   664  	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   665  }
   666  
   667  func (x *QueryTestExonerationsRequest) Reset() {
   668  	*x = QueryTestExonerationsRequest{}
   669  	if protoimpl.UnsafeEnabled {
   670  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9]
   671  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   672  		ms.StoreMessageInfo(mi)
   673  	}
   674  }
   675  
   676  func (x *QueryTestExonerationsRequest) String() string {
   677  	return protoimpl.X.MessageStringOf(x)
   678  }
   679  
   680  func (*QueryTestExonerationsRequest) ProtoMessage() {}
   681  
   682  func (x *QueryTestExonerationsRequest) ProtoReflect() protoreflect.Message {
   683  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9]
   684  	if protoimpl.UnsafeEnabled && x != nil {
   685  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   686  		if ms.LoadMessageInfo() == nil {
   687  			ms.StoreMessageInfo(mi)
   688  		}
   689  		return ms
   690  	}
   691  	return mi.MessageOf(x)
   692  }
   693  
   694  // Deprecated: Use QueryTestExonerationsRequest.ProtoReflect.Descriptor instead.
   695  func (*QueryTestExonerationsRequest) Descriptor() ([]byte, []int) {
   696  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{9}
   697  }
   698  
   699  func (x *QueryTestExonerationsRequest) GetInvocations() []string {
   700  	if x != nil {
   701  		return x.Invocations
   702  	}
   703  	return nil
   704  }
   705  
   706  func (x *QueryTestExonerationsRequest) GetPredicate() *TestExonerationPredicate {
   707  	if x != nil {
   708  		return x.Predicate
   709  	}
   710  	return nil
   711  }
   712  
   713  func (x *QueryTestExonerationsRequest) GetPageSize() int32 {
   714  	if x != nil {
   715  		return x.PageSize
   716  	}
   717  	return 0
   718  }
   719  
   720  func (x *QueryTestExonerationsRequest) GetPageToken() string {
   721  	if x != nil {
   722  		return x.PageToken
   723  	}
   724  	return ""
   725  }
   726  
   727  // A response message for QueryTestExonerations RPC.
   728  type QueryTestExonerationsResponse struct {
   729  	state         protoimpl.MessageState
   730  	sizeCache     protoimpl.SizeCache
   731  	unknownFields protoimpl.UnknownFields
   732  
   733  	// The test exonerations matching the predicate.
   734  	// Ordered by parent invocation ID, test ID and exoneration ID.
   735  	TestExonerations []*TestExoneration `protobuf:"bytes,1,rep,name=test_exonerations,json=testExonerations,proto3" json:"test_exonerations,omitempty"`
   736  	// A token, which can be sent as `page_token` to retrieve the next page.
   737  	// If this field is omitted, there were no subsequent pages at the time of
   738  	// request.
   739  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   740  }
   741  
   742  func (x *QueryTestExonerationsResponse) Reset() {
   743  	*x = QueryTestExonerationsResponse{}
   744  	if protoimpl.UnsafeEnabled {
   745  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10]
   746  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   747  		ms.StoreMessageInfo(mi)
   748  	}
   749  }
   750  
   751  func (x *QueryTestExonerationsResponse) String() string {
   752  	return protoimpl.X.MessageStringOf(x)
   753  }
   754  
   755  func (*QueryTestExonerationsResponse) ProtoMessage() {}
   756  
   757  func (x *QueryTestExonerationsResponse) ProtoReflect() protoreflect.Message {
   758  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10]
   759  	if protoimpl.UnsafeEnabled && x != nil {
   760  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   761  		if ms.LoadMessageInfo() == nil {
   762  			ms.StoreMessageInfo(mi)
   763  		}
   764  		return ms
   765  	}
   766  	return mi.MessageOf(x)
   767  }
   768  
   769  // Deprecated: Use QueryTestExonerationsResponse.ProtoReflect.Descriptor instead.
   770  func (*QueryTestExonerationsResponse) Descriptor() ([]byte, []int) {
   771  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{10}
   772  }
   773  
   774  func (x *QueryTestExonerationsResponse) GetTestExonerations() []*TestExoneration {
   775  	if x != nil {
   776  		return x.TestExonerations
   777  	}
   778  	return nil
   779  }
   780  
   781  func (x *QueryTestExonerationsResponse) GetNextPageToken() string {
   782  	if x != nil {
   783  		return x.NextPageToken
   784  	}
   785  	return ""
   786  }
   787  
   788  // A request message for QueryTestResultStatistics RPC.
   789  type QueryTestResultStatisticsRequest struct {
   790  	state         protoimpl.MessageState
   791  	sizeCache     protoimpl.SizeCache
   792  	unknownFields protoimpl.UnknownFields
   793  
   794  	// Retrieve statistics of test result belong to these invocations,
   795  	// directly or indirectly (via Invocation.included_invocations).
   796  	//
   797  	// Specifying multiple invocations is equivalent to requesting one invocation
   798  	// that includes these.
   799  	Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
   800  }
   801  
   802  func (x *QueryTestResultStatisticsRequest) Reset() {
   803  	*x = QueryTestResultStatisticsRequest{}
   804  	if protoimpl.UnsafeEnabled {
   805  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11]
   806  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   807  		ms.StoreMessageInfo(mi)
   808  	}
   809  }
   810  
   811  func (x *QueryTestResultStatisticsRequest) String() string {
   812  	return protoimpl.X.MessageStringOf(x)
   813  }
   814  
   815  func (*QueryTestResultStatisticsRequest) ProtoMessage() {}
   816  
   817  func (x *QueryTestResultStatisticsRequest) ProtoReflect() protoreflect.Message {
   818  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11]
   819  	if protoimpl.UnsafeEnabled && x != nil {
   820  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   821  		if ms.LoadMessageInfo() == nil {
   822  			ms.StoreMessageInfo(mi)
   823  		}
   824  		return ms
   825  	}
   826  	return mi.MessageOf(x)
   827  }
   828  
   829  // Deprecated: Use QueryTestResultStatisticsRequest.ProtoReflect.Descriptor instead.
   830  func (*QueryTestResultStatisticsRequest) Descriptor() ([]byte, []int) {
   831  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{11}
   832  }
   833  
   834  func (x *QueryTestResultStatisticsRequest) GetInvocations() []string {
   835  	if x != nil {
   836  		return x.Invocations
   837  	}
   838  	return nil
   839  }
   840  
   841  // A response message for QueryTestResultStatistics RPC.
   842  type QueryTestResultStatisticsResponse struct {
   843  	state         protoimpl.MessageState
   844  	sizeCache     protoimpl.SizeCache
   845  	unknownFields protoimpl.UnknownFields
   846  
   847  	// Total number of test results.
   848  	TotalTestResults int64 `protobuf:"varint,1,opt,name=total_test_results,json=totalTestResults,proto3" json:"total_test_results,omitempty"`
   849  }
   850  
   851  func (x *QueryTestResultStatisticsResponse) Reset() {
   852  	*x = QueryTestResultStatisticsResponse{}
   853  	if protoimpl.UnsafeEnabled {
   854  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12]
   855  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   856  		ms.StoreMessageInfo(mi)
   857  	}
   858  }
   859  
   860  func (x *QueryTestResultStatisticsResponse) String() string {
   861  	return protoimpl.X.MessageStringOf(x)
   862  }
   863  
   864  func (*QueryTestResultStatisticsResponse) ProtoMessage() {}
   865  
   866  func (x *QueryTestResultStatisticsResponse) ProtoReflect() protoreflect.Message {
   867  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12]
   868  	if protoimpl.UnsafeEnabled && x != nil {
   869  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   870  		if ms.LoadMessageInfo() == nil {
   871  			ms.StoreMessageInfo(mi)
   872  		}
   873  		return ms
   874  	}
   875  	return mi.MessageOf(x)
   876  }
   877  
   878  // Deprecated: Use QueryTestResultStatisticsResponse.ProtoReflect.Descriptor instead.
   879  func (*QueryTestResultStatisticsResponse) Descriptor() ([]byte, []int) {
   880  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{12}
   881  }
   882  
   883  func (x *QueryTestResultStatisticsResponse) GetTotalTestResults() int64 {
   884  	if x != nil {
   885  		return x.TotalTestResults
   886  	}
   887  	return 0
   888  }
   889  
   890  // A request message for GetArtifact RPC.
   891  type GetArtifactRequest struct {
   892  	state         protoimpl.MessageState
   893  	sizeCache     protoimpl.SizeCache
   894  	unknownFields protoimpl.UnknownFields
   895  
   896  	// The name of the artifact to request, see Artifact.name.
   897  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   898  }
   899  
   900  func (x *GetArtifactRequest) Reset() {
   901  	*x = GetArtifactRequest{}
   902  	if protoimpl.UnsafeEnabled {
   903  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13]
   904  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   905  		ms.StoreMessageInfo(mi)
   906  	}
   907  }
   908  
   909  func (x *GetArtifactRequest) String() string {
   910  	return protoimpl.X.MessageStringOf(x)
   911  }
   912  
   913  func (*GetArtifactRequest) ProtoMessage() {}
   914  
   915  func (x *GetArtifactRequest) ProtoReflect() protoreflect.Message {
   916  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13]
   917  	if protoimpl.UnsafeEnabled && x != nil {
   918  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   919  		if ms.LoadMessageInfo() == nil {
   920  			ms.StoreMessageInfo(mi)
   921  		}
   922  		return ms
   923  	}
   924  	return mi.MessageOf(x)
   925  }
   926  
   927  // Deprecated: Use GetArtifactRequest.ProtoReflect.Descriptor instead.
   928  func (*GetArtifactRequest) Descriptor() ([]byte, []int) {
   929  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{13}
   930  }
   931  
   932  func (x *GetArtifactRequest) GetName() string {
   933  	if x != nil {
   934  		return x.Name
   935  	}
   936  	return ""
   937  }
   938  
   939  // A request message for ListArtifacts RPC.
   940  type ListArtifactsRequest struct {
   941  	state         protoimpl.MessageState
   942  	sizeCache     protoimpl.SizeCache
   943  	unknownFields protoimpl.UnknownFields
   944  
   945  	// Name of the parent, e.g. an invocation (see Invocation.name) or
   946  	// a test result (see TestResult.name).
   947  	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   948  	// The maximum number of artifacts to return.
   949  	//
   950  	// The service may return fewer than this value.
   951  	// If unspecified, at most 100 artifacts will be returned.
   952  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
   953  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   954  	// A page token, received from a previous `ListArtifacts` call.
   955  	// Provide this to retrieve the subsequent page.
   956  	//
   957  	// When paginating, all other parameters provided to `ListArtifacts` MUST
   958  	// match the call that provided the page token.
   959  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   960  }
   961  
   962  func (x *ListArtifactsRequest) Reset() {
   963  	*x = ListArtifactsRequest{}
   964  	if protoimpl.UnsafeEnabled {
   965  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14]
   966  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   967  		ms.StoreMessageInfo(mi)
   968  	}
   969  }
   970  
   971  func (x *ListArtifactsRequest) String() string {
   972  	return protoimpl.X.MessageStringOf(x)
   973  }
   974  
   975  func (*ListArtifactsRequest) ProtoMessage() {}
   976  
   977  func (x *ListArtifactsRequest) ProtoReflect() protoreflect.Message {
   978  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14]
   979  	if protoimpl.UnsafeEnabled && x != nil {
   980  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   981  		if ms.LoadMessageInfo() == nil {
   982  			ms.StoreMessageInfo(mi)
   983  		}
   984  		return ms
   985  	}
   986  	return mi.MessageOf(x)
   987  }
   988  
   989  // Deprecated: Use ListArtifactsRequest.ProtoReflect.Descriptor instead.
   990  func (*ListArtifactsRequest) Descriptor() ([]byte, []int) {
   991  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{14}
   992  }
   993  
   994  func (x *ListArtifactsRequest) GetParent() string {
   995  	if x != nil {
   996  		return x.Parent
   997  	}
   998  	return ""
   999  }
  1000  
  1001  func (x *ListArtifactsRequest) GetPageSize() int32 {
  1002  	if x != nil {
  1003  		return x.PageSize
  1004  	}
  1005  	return 0
  1006  }
  1007  
  1008  func (x *ListArtifactsRequest) GetPageToken() string {
  1009  	if x != nil {
  1010  		return x.PageToken
  1011  	}
  1012  	return ""
  1013  }
  1014  
  1015  // A response message for ListArtifacts RPC.
  1016  type ListArtifactsResponse struct {
  1017  	state         protoimpl.MessageState
  1018  	sizeCache     protoimpl.SizeCache
  1019  	unknownFields protoimpl.UnknownFields
  1020  
  1021  	// The artifacts from the specified parent.
  1022  	Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
  1023  	// A token, which can be sent as `page_token` to retrieve the next page.
  1024  	// If this field is omitted, there were no subsequent pages at the time of
  1025  	// request.
  1026  	// If the invocation is not finalized, more results may appear later.
  1027  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1028  }
  1029  
  1030  func (x *ListArtifactsResponse) Reset() {
  1031  	*x = ListArtifactsResponse{}
  1032  	if protoimpl.UnsafeEnabled {
  1033  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15]
  1034  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1035  		ms.StoreMessageInfo(mi)
  1036  	}
  1037  }
  1038  
  1039  func (x *ListArtifactsResponse) String() string {
  1040  	return protoimpl.X.MessageStringOf(x)
  1041  }
  1042  
  1043  func (*ListArtifactsResponse) ProtoMessage() {}
  1044  
  1045  func (x *ListArtifactsResponse) ProtoReflect() protoreflect.Message {
  1046  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15]
  1047  	if protoimpl.UnsafeEnabled && x != nil {
  1048  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1049  		if ms.LoadMessageInfo() == nil {
  1050  			ms.StoreMessageInfo(mi)
  1051  		}
  1052  		return ms
  1053  	}
  1054  	return mi.MessageOf(x)
  1055  }
  1056  
  1057  // Deprecated: Use ListArtifactsResponse.ProtoReflect.Descriptor instead.
  1058  func (*ListArtifactsResponse) Descriptor() ([]byte, []int) {
  1059  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{15}
  1060  }
  1061  
  1062  func (x *ListArtifactsResponse) GetArtifacts() []*Artifact {
  1063  	if x != nil {
  1064  		return x.Artifacts
  1065  	}
  1066  	return nil
  1067  }
  1068  
  1069  func (x *ListArtifactsResponse) GetNextPageToken() string {
  1070  	if x != nil {
  1071  		return x.NextPageToken
  1072  	}
  1073  	return ""
  1074  }
  1075  
  1076  // A request message for QueryArtifacts RPC.
  1077  type QueryArtifactsRequest struct {
  1078  	state         protoimpl.MessageState
  1079  	sizeCache     protoimpl.SizeCache
  1080  	unknownFields protoimpl.UnknownFields
  1081  
  1082  	// Retrieve artifacts included in these invocations, directly or indirectly
  1083  	// (via Invocation.included_invocations and via contained test results).
  1084  	//
  1085  	// Specifying multiple invocations is equivalent to querying one invocation
  1086  	// that includes these.
  1087  	Invocations []string `protobuf:"bytes,1,rep,name=invocations,proto3" json:"invocations,omitempty"`
  1088  	// An artifact in the response must satisfy this predicate.
  1089  	Predicate *ArtifactPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
  1090  	// The maximum number of artifacts to return.
  1091  	//
  1092  	// The service may return fewer than this value.
  1093  	// If unspecified, at most 100 artifacts will be returned.
  1094  	// The maximum value is 1000; values above 1000 will be coerced to 1000.
  1095  	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1096  	// A page token, received from a previous `QueryArtifacts` call.
  1097  	// Provide this to retrieve the subsequent page.
  1098  	//
  1099  	// When paginating, all other parameters provided to `QueryArtifacts` MUST
  1100  	// match the call that provided the page token.
  1101  	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1102  }
  1103  
  1104  func (x *QueryArtifactsRequest) Reset() {
  1105  	*x = QueryArtifactsRequest{}
  1106  	if protoimpl.UnsafeEnabled {
  1107  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16]
  1108  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1109  		ms.StoreMessageInfo(mi)
  1110  	}
  1111  }
  1112  
  1113  func (x *QueryArtifactsRequest) String() string {
  1114  	return protoimpl.X.MessageStringOf(x)
  1115  }
  1116  
  1117  func (*QueryArtifactsRequest) ProtoMessage() {}
  1118  
  1119  func (x *QueryArtifactsRequest) ProtoReflect() protoreflect.Message {
  1120  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16]
  1121  	if protoimpl.UnsafeEnabled && x != nil {
  1122  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1123  		if ms.LoadMessageInfo() == nil {
  1124  			ms.StoreMessageInfo(mi)
  1125  		}
  1126  		return ms
  1127  	}
  1128  	return mi.MessageOf(x)
  1129  }
  1130  
  1131  // Deprecated: Use QueryArtifactsRequest.ProtoReflect.Descriptor instead.
  1132  func (*QueryArtifactsRequest) Descriptor() ([]byte, []int) {
  1133  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{16}
  1134  }
  1135  
  1136  func (x *QueryArtifactsRequest) GetInvocations() []string {
  1137  	if x != nil {
  1138  		return x.Invocations
  1139  	}
  1140  	return nil
  1141  }
  1142  
  1143  func (x *QueryArtifactsRequest) GetPredicate() *ArtifactPredicate {
  1144  	if x != nil {
  1145  		return x.Predicate
  1146  	}
  1147  	return nil
  1148  }
  1149  
  1150  func (x *QueryArtifactsRequest) GetPageSize() int32 {
  1151  	if x != nil {
  1152  		return x.PageSize
  1153  	}
  1154  	return 0
  1155  }
  1156  
  1157  func (x *QueryArtifactsRequest) GetPageToken() string {
  1158  	if x != nil {
  1159  		return x.PageToken
  1160  	}
  1161  	return ""
  1162  }
  1163  
  1164  // A response message for QueryArtifacts RPC.
  1165  type QueryArtifactsResponse struct {
  1166  	state         protoimpl.MessageState
  1167  	sizeCache     protoimpl.SizeCache
  1168  	unknownFields protoimpl.UnknownFields
  1169  
  1170  	// Matched artifacts.
  1171  	// First invocation-level artifacts, then test-result-level artifacts
  1172  	// ordered by parent invocation ID, test ID and artifact ID.
  1173  	Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
  1174  	// A token, which can be sent as `page_token` to retrieve the next page.
  1175  	// If this field is omitted, there were no subsequent pages at the time of
  1176  	// request.
  1177  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1178  }
  1179  
  1180  func (x *QueryArtifactsResponse) Reset() {
  1181  	*x = QueryArtifactsResponse{}
  1182  	if protoimpl.UnsafeEnabled {
  1183  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17]
  1184  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1185  		ms.StoreMessageInfo(mi)
  1186  	}
  1187  }
  1188  
  1189  func (x *QueryArtifactsResponse) String() string {
  1190  	return protoimpl.X.MessageStringOf(x)
  1191  }
  1192  
  1193  func (*QueryArtifactsResponse) ProtoMessage() {}
  1194  
  1195  func (x *QueryArtifactsResponse) ProtoReflect() protoreflect.Message {
  1196  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17]
  1197  	if protoimpl.UnsafeEnabled && x != nil {
  1198  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1199  		if ms.LoadMessageInfo() == nil {
  1200  			ms.StoreMessageInfo(mi)
  1201  		}
  1202  		return ms
  1203  	}
  1204  	return mi.MessageOf(x)
  1205  }
  1206  
  1207  // Deprecated: Use QueryArtifactsResponse.ProtoReflect.Descriptor instead.
  1208  func (*QueryArtifactsResponse) Descriptor() ([]byte, []int) {
  1209  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{17}
  1210  }
  1211  
  1212  func (x *QueryArtifactsResponse) GetArtifacts() []*Artifact {
  1213  	if x != nil {
  1214  		return x.Artifacts
  1215  	}
  1216  	return nil
  1217  }
  1218  
  1219  func (x *QueryArtifactsResponse) GetNextPageToken() string {
  1220  	if x != nil {
  1221  		return x.NextPageToken
  1222  	}
  1223  	return ""
  1224  }
  1225  
  1226  // A request message for QueryTestVariants RPC.
  1227  // Next id: 9.
  1228  type QueryTestVariantsRequest struct {
  1229  	state         protoimpl.MessageState
  1230  	sizeCache     protoimpl.SizeCache
  1231  	unknownFields protoimpl.UnknownFields
  1232  
  1233  	// Retrieve test variants included in these invocations, directly or indirectly
  1234  	// (via Invocation.included_invocations).
  1235  	//
  1236  	// Specifying multiple invocations is equivalent to querying one invocation
  1237  	// that includes these.
  1238  	Invocations []string `protobuf:"bytes,2,rep,name=invocations,proto3" json:"invocations,omitempty"`
  1239  	// A test variant must satisfy this predicate.
  1240  	Predicate *TestVariantPredicate `protobuf:"bytes,6,opt,name=predicate,proto3" json:"predicate,omitempty"`
  1241  	// The maximum number of test results to be included in a test variant.
  1242  	//
  1243  	// If a test variant has more results than the limit, the remaining results
  1244  	// will not be returned.
  1245  	// If unspecified, at most 10 results will be included in a test variant.
  1246  	// The maximum value is 100; values above 100 will be coerced to 100.
  1247  	ResultLimit int32 `protobuf:"varint,8,opt,name=result_limit,json=resultLimit,proto3" json:"result_limit,omitempty"`
  1248  	// The maximum number of test variants to return.
  1249  	//
  1250  	// The service may return fewer than this value.
  1251  	// If unspecified, at most 100 test variants will be returned.
  1252  	// The maximum value is 10,000; values above 10,000 will be coerced to 10,000.
  1253  	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1254  	// A page token, received from a previous `QueryTestVariants` call.
  1255  	// Provide this to retrieve the subsequent page.
  1256  	//
  1257  	// When paginating, all other parameters provided to `QueryTestVariants` MUST
  1258  	// match the call that provided the page token.
  1259  	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1260  	// Fields to include in the response.
  1261  	// If not set, the default mask is used where all fields are included.
  1262  	//
  1263  	// The following fields in results.*.result will NEVER be included even when
  1264  	// specified:
  1265  	// * test_id
  1266  	// * variant_hash
  1267  	// * variant
  1268  	// * test_metadata
  1269  	// Those values can be found in the parent test variant objects.
  1270  	//
  1271  	// The following fields will ALWAYS be included even when NOT specified:
  1272  	// * test_id
  1273  	// * variant_hash
  1274  	// * status
  1275  	ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,7,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"`
  1276  }
  1277  
  1278  func (x *QueryTestVariantsRequest) Reset() {
  1279  	*x = QueryTestVariantsRequest{}
  1280  	if protoimpl.UnsafeEnabled {
  1281  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18]
  1282  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1283  		ms.StoreMessageInfo(mi)
  1284  	}
  1285  }
  1286  
  1287  func (x *QueryTestVariantsRequest) String() string {
  1288  	return protoimpl.X.MessageStringOf(x)
  1289  }
  1290  
  1291  func (*QueryTestVariantsRequest) ProtoMessage() {}
  1292  
  1293  func (x *QueryTestVariantsRequest) ProtoReflect() protoreflect.Message {
  1294  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18]
  1295  	if protoimpl.UnsafeEnabled && x != nil {
  1296  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1297  		if ms.LoadMessageInfo() == nil {
  1298  			ms.StoreMessageInfo(mi)
  1299  		}
  1300  		return ms
  1301  	}
  1302  	return mi.MessageOf(x)
  1303  }
  1304  
  1305  // Deprecated: Use QueryTestVariantsRequest.ProtoReflect.Descriptor instead.
  1306  func (*QueryTestVariantsRequest) Descriptor() ([]byte, []int) {
  1307  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{18}
  1308  }
  1309  
  1310  func (x *QueryTestVariantsRequest) GetInvocations() []string {
  1311  	if x != nil {
  1312  		return x.Invocations
  1313  	}
  1314  	return nil
  1315  }
  1316  
  1317  func (x *QueryTestVariantsRequest) GetPredicate() *TestVariantPredicate {
  1318  	if x != nil {
  1319  		return x.Predicate
  1320  	}
  1321  	return nil
  1322  }
  1323  
  1324  func (x *QueryTestVariantsRequest) GetResultLimit() int32 {
  1325  	if x != nil {
  1326  		return x.ResultLimit
  1327  	}
  1328  	return 0
  1329  }
  1330  
  1331  func (x *QueryTestVariantsRequest) GetPageSize() int32 {
  1332  	if x != nil {
  1333  		return x.PageSize
  1334  	}
  1335  	return 0
  1336  }
  1337  
  1338  func (x *QueryTestVariantsRequest) GetPageToken() string {
  1339  	if x != nil {
  1340  		return x.PageToken
  1341  	}
  1342  	return ""
  1343  }
  1344  
  1345  func (x *QueryTestVariantsRequest) GetReadMask() *fieldmaskpb.FieldMask {
  1346  	if x != nil {
  1347  		return x.ReadMask
  1348  	}
  1349  	return nil
  1350  }
  1351  
  1352  // A response message for QueryTestVariants RPC.
  1353  type QueryTestVariantsResponse struct {
  1354  	state         protoimpl.MessageState
  1355  	sizeCache     protoimpl.SizeCache
  1356  	unknownFields protoimpl.UnknownFields
  1357  
  1358  	// Matched test variants.
  1359  	// Ordered by TestVariantStatus, test_id, then variant_hash
  1360  	TestVariants []*TestVariant `protobuf:"bytes,1,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
  1361  	// A token, which can be sent as `page_token` to retrieve the next page.
  1362  	// If this field is omitted, there were no subsequent pages at the time of
  1363  	// request.
  1364  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1365  	// The code sources tested by the returned test variants. The sources are keyed
  1366  	// by an ID which allows them to be cross-referenced from TestVariant.sources_id.
  1367  	//
  1368  	// The sources are returned via this map instead of directly on the TestVariant
  1369  	// to avoid excessive response size. Each source message could be up to a few
  1370  	// kilobytes and there are usually no more than a handful of different sources
  1371  	// tested in an invocation, so deduplicating them here reduces response size.
  1372  	Sources map[string]*Sources `protobuf:"bytes,3,rep,name=sources,proto3" json:"sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  1373  }
  1374  
  1375  func (x *QueryTestVariantsResponse) Reset() {
  1376  	*x = QueryTestVariantsResponse{}
  1377  	if protoimpl.UnsafeEnabled {
  1378  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19]
  1379  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1380  		ms.StoreMessageInfo(mi)
  1381  	}
  1382  }
  1383  
  1384  func (x *QueryTestVariantsResponse) String() string {
  1385  	return protoimpl.X.MessageStringOf(x)
  1386  }
  1387  
  1388  func (*QueryTestVariantsResponse) ProtoMessage() {}
  1389  
  1390  func (x *QueryTestVariantsResponse) ProtoReflect() protoreflect.Message {
  1391  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19]
  1392  	if protoimpl.UnsafeEnabled && x != nil {
  1393  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1394  		if ms.LoadMessageInfo() == nil {
  1395  			ms.StoreMessageInfo(mi)
  1396  		}
  1397  		return ms
  1398  	}
  1399  	return mi.MessageOf(x)
  1400  }
  1401  
  1402  // Deprecated: Use QueryTestVariantsResponse.ProtoReflect.Descriptor instead.
  1403  func (*QueryTestVariantsResponse) Descriptor() ([]byte, []int) {
  1404  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{19}
  1405  }
  1406  
  1407  func (x *QueryTestVariantsResponse) GetTestVariants() []*TestVariant {
  1408  	if x != nil {
  1409  		return x.TestVariants
  1410  	}
  1411  	return nil
  1412  }
  1413  
  1414  func (x *QueryTestVariantsResponse) GetNextPageToken() string {
  1415  	if x != nil {
  1416  		return x.NextPageToken
  1417  	}
  1418  	return ""
  1419  }
  1420  
  1421  func (x *QueryTestVariantsResponse) GetSources() map[string]*Sources {
  1422  	if x != nil {
  1423  		return x.Sources
  1424  	}
  1425  	return nil
  1426  }
  1427  
  1428  // A request message for BatchGetTestVariants RPC.
  1429  type BatchGetTestVariantsRequest struct {
  1430  	state         protoimpl.MessageState
  1431  	sizeCache     protoimpl.SizeCache
  1432  	unknownFields protoimpl.UnknownFields
  1433  
  1434  	// Name of the invocation that the test variants are in.
  1435  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
  1436  	// A list of test IDs and variant hashes, identifying the requested test
  1437  	// variants. Size is limited to 500. Any request for more than 500 variants
  1438  	// will return an error.
  1439  	TestVariants []*BatchGetTestVariantsRequest_TestVariantIdentifier `protobuf:"bytes,2,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
  1440  	// The maximum number of test results to be included in a test variant.
  1441  	//
  1442  	// If a test variant has more results than the limit, the remaining results
  1443  	// will not be returned.
  1444  	// If unspecified, at most 10 results will be included in a test variant.
  1445  	// The maximum value is 100; values above 100 will be coerced to 100.
  1446  	ResultLimit int32 `protobuf:"varint,3,opt,name=result_limit,json=resultLimit,proto3" json:"result_limit,omitempty"`
  1447  }
  1448  
  1449  func (x *BatchGetTestVariantsRequest) Reset() {
  1450  	*x = BatchGetTestVariantsRequest{}
  1451  	if protoimpl.UnsafeEnabled {
  1452  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20]
  1453  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1454  		ms.StoreMessageInfo(mi)
  1455  	}
  1456  }
  1457  
  1458  func (x *BatchGetTestVariantsRequest) String() string {
  1459  	return protoimpl.X.MessageStringOf(x)
  1460  }
  1461  
  1462  func (*BatchGetTestVariantsRequest) ProtoMessage() {}
  1463  
  1464  func (x *BatchGetTestVariantsRequest) ProtoReflect() protoreflect.Message {
  1465  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20]
  1466  	if protoimpl.UnsafeEnabled && x != nil {
  1467  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1468  		if ms.LoadMessageInfo() == nil {
  1469  			ms.StoreMessageInfo(mi)
  1470  		}
  1471  		return ms
  1472  	}
  1473  	return mi.MessageOf(x)
  1474  }
  1475  
  1476  // Deprecated: Use BatchGetTestVariantsRequest.ProtoReflect.Descriptor instead.
  1477  func (*BatchGetTestVariantsRequest) Descriptor() ([]byte, []int) {
  1478  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{20}
  1479  }
  1480  
  1481  func (x *BatchGetTestVariantsRequest) GetInvocation() string {
  1482  	if x != nil {
  1483  		return x.Invocation
  1484  	}
  1485  	return ""
  1486  }
  1487  
  1488  func (x *BatchGetTestVariantsRequest) GetTestVariants() []*BatchGetTestVariantsRequest_TestVariantIdentifier {
  1489  	if x != nil {
  1490  		return x.TestVariants
  1491  	}
  1492  	return nil
  1493  }
  1494  
  1495  func (x *BatchGetTestVariantsRequest) GetResultLimit() int32 {
  1496  	if x != nil {
  1497  		return x.ResultLimit
  1498  	}
  1499  	return 0
  1500  }
  1501  
  1502  // A response message for BatchGetTestVariants RPC.
  1503  type BatchGetTestVariantsResponse struct {
  1504  	state         protoimpl.MessageState
  1505  	sizeCache     protoimpl.SizeCache
  1506  	unknownFields protoimpl.UnknownFields
  1507  
  1508  	// Test variants matching the requests. Any variants that weren't found are
  1509  	// omitted from the response. Clients shouldn't rely on the ordering of this
  1510  	// field, as no particular order is guaranteed.
  1511  	TestVariants []*TestVariant `protobuf:"bytes,1,rep,name=test_variants,json=testVariants,proto3" json:"test_variants,omitempty"`
  1512  	// The code sources tested by the returned test variants. The sources are keyed
  1513  	// by an ID which allows them to be cross-referenced from TestVariant.sources_id.
  1514  	//
  1515  	// The sources are returned via this map instead of directly on the TestVariant
  1516  	// to avoid excessive response size. Each source message could be up to a few
  1517  	// kilobytes and there are usually no more than a handful of different sources
  1518  	// tested in an invocation, so deduplicating them here reduces response size.
  1519  	Sources map[string]*Sources `protobuf:"bytes,2,rep,name=sources,proto3" json:"sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  1520  }
  1521  
  1522  func (x *BatchGetTestVariantsResponse) Reset() {
  1523  	*x = BatchGetTestVariantsResponse{}
  1524  	if protoimpl.UnsafeEnabled {
  1525  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21]
  1526  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1527  		ms.StoreMessageInfo(mi)
  1528  	}
  1529  }
  1530  
  1531  func (x *BatchGetTestVariantsResponse) String() string {
  1532  	return protoimpl.X.MessageStringOf(x)
  1533  }
  1534  
  1535  func (*BatchGetTestVariantsResponse) ProtoMessage() {}
  1536  
  1537  func (x *BatchGetTestVariantsResponse) ProtoReflect() protoreflect.Message {
  1538  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21]
  1539  	if protoimpl.UnsafeEnabled && x != nil {
  1540  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1541  		if ms.LoadMessageInfo() == nil {
  1542  			ms.StoreMessageInfo(mi)
  1543  		}
  1544  		return ms
  1545  	}
  1546  	return mi.MessageOf(x)
  1547  }
  1548  
  1549  // Deprecated: Use BatchGetTestVariantsResponse.ProtoReflect.Descriptor instead.
  1550  func (*BatchGetTestVariantsResponse) Descriptor() ([]byte, []int) {
  1551  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{21}
  1552  }
  1553  
  1554  func (x *BatchGetTestVariantsResponse) GetTestVariants() []*TestVariant {
  1555  	if x != nil {
  1556  		return x.TestVariants
  1557  	}
  1558  	return nil
  1559  }
  1560  
  1561  func (x *BatchGetTestVariantsResponse) GetSources() map[string]*Sources {
  1562  	if x != nil {
  1563  		return x.Sources
  1564  	}
  1565  	return nil
  1566  }
  1567  
  1568  // A request message for QueryTestMetadata RPC.
  1569  type QueryTestMetadataRequest struct {
  1570  	state         protoimpl.MessageState
  1571  	sizeCache     protoimpl.SizeCache
  1572  	unknownFields protoimpl.UnknownFields
  1573  
  1574  	// The LUCI Project to query.
  1575  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
  1576  	// Filters to apply to the returned test metadata.
  1577  	Predicate *TestMetadataPredicate `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
  1578  	// The maximum number of test metadata entries to return.
  1579  	//
  1580  	// The service may return fewer than this value.
  1581  	// If unspecified, at most 1000 test metadata entries will be returned.
  1582  	// The maximum value is 100K; values above 100K will be coerced to 100K.
  1583  	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
  1584  	// A page token, received from a previous `QueryTestMetadata` call.
  1585  	// Provide this to retrieve the subsequent page.
  1586  	//
  1587  	// When paginating, all other parameters provided to `QueryTestMetadata` MUST
  1588  	// match the call that provided the page token.
  1589  	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
  1590  }
  1591  
  1592  func (x *QueryTestMetadataRequest) Reset() {
  1593  	*x = QueryTestMetadataRequest{}
  1594  	if protoimpl.UnsafeEnabled {
  1595  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22]
  1596  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1597  		ms.StoreMessageInfo(mi)
  1598  	}
  1599  }
  1600  
  1601  func (x *QueryTestMetadataRequest) String() string {
  1602  	return protoimpl.X.MessageStringOf(x)
  1603  }
  1604  
  1605  func (*QueryTestMetadataRequest) ProtoMessage() {}
  1606  
  1607  func (x *QueryTestMetadataRequest) ProtoReflect() protoreflect.Message {
  1608  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22]
  1609  	if protoimpl.UnsafeEnabled && x != nil {
  1610  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1611  		if ms.LoadMessageInfo() == nil {
  1612  			ms.StoreMessageInfo(mi)
  1613  		}
  1614  		return ms
  1615  	}
  1616  	return mi.MessageOf(x)
  1617  }
  1618  
  1619  // Deprecated: Use QueryTestMetadataRequest.ProtoReflect.Descriptor instead.
  1620  func (*QueryTestMetadataRequest) Descriptor() ([]byte, []int) {
  1621  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{22}
  1622  }
  1623  
  1624  func (x *QueryTestMetadataRequest) GetProject() string {
  1625  	if x != nil {
  1626  		return x.Project
  1627  	}
  1628  	return ""
  1629  }
  1630  
  1631  func (x *QueryTestMetadataRequest) GetPredicate() *TestMetadataPredicate {
  1632  	if x != nil {
  1633  		return x.Predicate
  1634  	}
  1635  	return nil
  1636  }
  1637  
  1638  func (x *QueryTestMetadataRequest) GetPageSize() int32 {
  1639  	if x != nil {
  1640  		return x.PageSize
  1641  	}
  1642  	return 0
  1643  }
  1644  
  1645  func (x *QueryTestMetadataRequest) GetPageToken() string {
  1646  	if x != nil {
  1647  		return x.PageToken
  1648  	}
  1649  	return ""
  1650  }
  1651  
  1652  // A response message for QueryTestMetadata RPC.
  1653  type QueryTestMetadataResponse struct {
  1654  	state         protoimpl.MessageState
  1655  	sizeCache     protoimpl.SizeCache
  1656  	unknownFields protoimpl.UnknownFields
  1657  
  1658  	// The matched testMetadata.
  1659  	TestMetadata []*TestMetadataDetail `protobuf:"bytes,1,rep,name=testMetadata,proto3" json:"testMetadata,omitempty"`
  1660  	// A token, which can be sent as `page_token` to retrieve the next page.
  1661  	// If this field is omitted, there were no subsequent pages at the time of
  1662  	// request.
  1663  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
  1664  }
  1665  
  1666  func (x *QueryTestMetadataResponse) Reset() {
  1667  	*x = QueryTestMetadataResponse{}
  1668  	if protoimpl.UnsafeEnabled {
  1669  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23]
  1670  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1671  		ms.StoreMessageInfo(mi)
  1672  	}
  1673  }
  1674  
  1675  func (x *QueryTestMetadataResponse) String() string {
  1676  	return protoimpl.X.MessageStringOf(x)
  1677  }
  1678  
  1679  func (*QueryTestMetadataResponse) ProtoMessage() {}
  1680  
  1681  func (x *QueryTestMetadataResponse) ProtoReflect() protoreflect.Message {
  1682  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23]
  1683  	if protoimpl.UnsafeEnabled && x != nil {
  1684  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1685  		if ms.LoadMessageInfo() == nil {
  1686  			ms.StoreMessageInfo(mi)
  1687  		}
  1688  		return ms
  1689  	}
  1690  	return mi.MessageOf(x)
  1691  }
  1692  
  1693  // Deprecated: Use QueryTestMetadataResponse.ProtoReflect.Descriptor instead.
  1694  func (*QueryTestMetadataResponse) Descriptor() ([]byte, []int) {
  1695  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{23}
  1696  }
  1697  
  1698  func (x *QueryTestMetadataResponse) GetTestMetadata() []*TestMetadataDetail {
  1699  	if x != nil {
  1700  		return x.TestMetadata
  1701  	}
  1702  	return nil
  1703  }
  1704  
  1705  func (x *QueryTestMetadataResponse) GetNextPageToken() string {
  1706  	if x != nil {
  1707  		return x.NextPageToken
  1708  	}
  1709  	return ""
  1710  }
  1711  
  1712  // A request message for QueryNewTestVariants RPC.
  1713  // To use this RPC, callers need:
  1714  //   - resultdb.baselines.get in the realm the <baseline_project>:@project, where
  1715  //     baseline_project is the LUCI project that contains the baseline.
  1716  //   - resultdb.testResults.list in the realm of the invocation which is being
  1717  //     queried.
  1718  type QueryNewTestVariantsRequest struct {
  1719  	state         protoimpl.MessageState
  1720  	sizeCache     protoimpl.SizeCache
  1721  	unknownFields protoimpl.UnknownFields
  1722  
  1723  	// Name of the invocation, e.g. "invocations/{id}".
  1724  	Invocation string `protobuf:"bytes,1,opt,name=invocation,proto3" json:"invocation,omitempty"`
  1725  	// The baseline to compare test variants against, to determine if they are new.
  1726  	// e.g. “projects/{project}/baselines/{baseline_id}”.
  1727  	// For example, in the project "chromium", the baseline_id may be
  1728  	// "try:linux-rel".
  1729  	Baseline string `protobuf:"bytes,2,opt,name=baseline,proto3" json:"baseline,omitempty"`
  1730  }
  1731  
  1732  func (x *QueryNewTestVariantsRequest) Reset() {
  1733  	*x = QueryNewTestVariantsRequest{}
  1734  	if protoimpl.UnsafeEnabled {
  1735  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24]
  1736  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1737  		ms.StoreMessageInfo(mi)
  1738  	}
  1739  }
  1740  
  1741  func (x *QueryNewTestVariantsRequest) String() string {
  1742  	return protoimpl.X.MessageStringOf(x)
  1743  }
  1744  
  1745  func (*QueryNewTestVariantsRequest) ProtoMessage() {}
  1746  
  1747  func (x *QueryNewTestVariantsRequest) ProtoReflect() protoreflect.Message {
  1748  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24]
  1749  	if protoimpl.UnsafeEnabled && x != nil {
  1750  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1751  		if ms.LoadMessageInfo() == nil {
  1752  			ms.StoreMessageInfo(mi)
  1753  		}
  1754  		return ms
  1755  	}
  1756  	return mi.MessageOf(x)
  1757  }
  1758  
  1759  // Deprecated: Use QueryNewTestVariantsRequest.ProtoReflect.Descriptor instead.
  1760  func (*QueryNewTestVariantsRequest) Descriptor() ([]byte, []int) {
  1761  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{24}
  1762  }
  1763  
  1764  func (x *QueryNewTestVariantsRequest) GetInvocation() string {
  1765  	if x != nil {
  1766  		return x.Invocation
  1767  	}
  1768  	return ""
  1769  }
  1770  
  1771  func (x *QueryNewTestVariantsRequest) GetBaseline() string {
  1772  	if x != nil {
  1773  		return x.Baseline
  1774  	}
  1775  	return ""
  1776  }
  1777  
  1778  // A response message for QueryNewTestVariants RPC.
  1779  type QueryNewTestVariantsResponse struct {
  1780  	state         protoimpl.MessageState
  1781  	sizeCache     protoimpl.SizeCache
  1782  	unknownFields protoimpl.UnknownFields
  1783  
  1784  	// Indicates whether the baseline has been populated with at least 72 hours
  1785  	// of data and the results can be relied upon.
  1786  	IsBaselineReady bool `protobuf:"varint,1,opt,name=is_baseline_ready,json=isBaselineReady,proto3" json:"is_baseline_ready,omitempty"`
  1787  	// Test variants that are new, meaning that they have not been part of
  1788  	// a submitted run prior.
  1789  	NewTestVariants []*QueryNewTestVariantsResponse_NewTestVariant `protobuf:"bytes,2,rep,name=new_test_variants,json=newTestVariants,proto3" json:"new_test_variants,omitempty"`
  1790  }
  1791  
  1792  func (x *QueryNewTestVariantsResponse) Reset() {
  1793  	*x = QueryNewTestVariantsResponse{}
  1794  	if protoimpl.UnsafeEnabled {
  1795  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25]
  1796  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1797  		ms.StoreMessageInfo(mi)
  1798  	}
  1799  }
  1800  
  1801  func (x *QueryNewTestVariantsResponse) String() string {
  1802  	return protoimpl.X.MessageStringOf(x)
  1803  }
  1804  
  1805  func (*QueryNewTestVariantsResponse) ProtoMessage() {}
  1806  
  1807  func (x *QueryNewTestVariantsResponse) ProtoReflect() protoreflect.Message {
  1808  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25]
  1809  	if protoimpl.UnsafeEnabled && x != nil {
  1810  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1811  		if ms.LoadMessageInfo() == nil {
  1812  			ms.StoreMessageInfo(mi)
  1813  		}
  1814  		return ms
  1815  	}
  1816  	return mi.MessageOf(x)
  1817  }
  1818  
  1819  // Deprecated: Use QueryNewTestVariantsResponse.ProtoReflect.Descriptor instead.
  1820  func (*QueryNewTestVariantsResponse) Descriptor() ([]byte, []int) {
  1821  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{25}
  1822  }
  1823  
  1824  func (x *QueryNewTestVariantsResponse) GetIsBaselineReady() bool {
  1825  	if x != nil {
  1826  		return x.IsBaselineReady
  1827  	}
  1828  	return false
  1829  }
  1830  
  1831  func (x *QueryNewTestVariantsResponse) GetNewTestVariants() []*QueryNewTestVariantsResponse_NewTestVariant {
  1832  	if x != nil {
  1833  		return x.NewTestVariants
  1834  	}
  1835  	return nil
  1836  }
  1837  
  1838  type BatchGetTestVariantsRequest_TestVariantIdentifier struct {
  1839  	state         protoimpl.MessageState
  1840  	sizeCache     protoimpl.SizeCache
  1841  	unknownFields protoimpl.UnknownFields
  1842  
  1843  	// The unique identifier of the test in a LUCI project. See the comment on
  1844  	// TestResult.test_id for full documentation.
  1845  	TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
  1846  	// Hash of the variant. See the comment on TestResult.variant_hash for full
  1847  	// documentation.
  1848  	VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
  1849  }
  1850  
  1851  func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) Reset() {
  1852  	*x = BatchGetTestVariantsRequest_TestVariantIdentifier{}
  1853  	if protoimpl.UnsafeEnabled {
  1854  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27]
  1855  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1856  		ms.StoreMessageInfo(mi)
  1857  	}
  1858  }
  1859  
  1860  func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) String() string {
  1861  	return protoimpl.X.MessageStringOf(x)
  1862  }
  1863  
  1864  func (*BatchGetTestVariantsRequest_TestVariantIdentifier) ProtoMessage() {}
  1865  
  1866  func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) ProtoReflect() protoreflect.Message {
  1867  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27]
  1868  	if protoimpl.UnsafeEnabled && x != nil {
  1869  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1870  		if ms.LoadMessageInfo() == nil {
  1871  			ms.StoreMessageInfo(mi)
  1872  		}
  1873  		return ms
  1874  	}
  1875  	return mi.MessageOf(x)
  1876  }
  1877  
  1878  // Deprecated: Use BatchGetTestVariantsRequest_TestVariantIdentifier.ProtoReflect.Descriptor instead.
  1879  func (*BatchGetTestVariantsRequest_TestVariantIdentifier) Descriptor() ([]byte, []int) {
  1880  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{20, 0}
  1881  }
  1882  
  1883  func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) GetTestId() string {
  1884  	if x != nil {
  1885  		return x.TestId
  1886  	}
  1887  	return ""
  1888  }
  1889  
  1890  func (x *BatchGetTestVariantsRequest_TestVariantIdentifier) GetVariantHash() string {
  1891  	if x != nil {
  1892  		return x.VariantHash
  1893  	}
  1894  	return ""
  1895  }
  1896  
  1897  // Represents a new test, which contains minimal information to uniquely identify a TestVariant.
  1898  type QueryNewTestVariantsResponse_NewTestVariant struct {
  1899  	state         protoimpl.MessageState
  1900  	sizeCache     protoimpl.SizeCache
  1901  	unknownFields protoimpl.UnknownFields
  1902  
  1903  	// A unique identifier of the test in a LUCI project.
  1904  	// Regex: ^[[::print::]]{1,256}$
  1905  	//
  1906  	// Refer to TestResult.test_id for details.
  1907  	TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
  1908  	// Hash of the variant.
  1909  	// hex(sha256(sorted(”.join('%s:%s\n' for k, v in variant.items())))).
  1910  	VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
  1911  }
  1912  
  1913  func (x *QueryNewTestVariantsResponse_NewTestVariant) Reset() {
  1914  	*x = QueryNewTestVariantsResponse_NewTestVariant{}
  1915  	if protoimpl.UnsafeEnabled {
  1916  		mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29]
  1917  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1918  		ms.StoreMessageInfo(mi)
  1919  	}
  1920  }
  1921  
  1922  func (x *QueryNewTestVariantsResponse_NewTestVariant) String() string {
  1923  	return protoimpl.X.MessageStringOf(x)
  1924  }
  1925  
  1926  func (*QueryNewTestVariantsResponse_NewTestVariant) ProtoMessage() {}
  1927  
  1928  func (x *QueryNewTestVariantsResponse_NewTestVariant) ProtoReflect() protoreflect.Message {
  1929  	mi := &file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29]
  1930  	if protoimpl.UnsafeEnabled && x != nil {
  1931  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1932  		if ms.LoadMessageInfo() == nil {
  1933  			ms.StoreMessageInfo(mi)
  1934  		}
  1935  		return ms
  1936  	}
  1937  	return mi.MessageOf(x)
  1938  }
  1939  
  1940  // Deprecated: Use QueryNewTestVariantsResponse_NewTestVariant.ProtoReflect.Descriptor instead.
  1941  func (*QueryNewTestVariantsResponse_NewTestVariant) Descriptor() ([]byte, []int) {
  1942  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP(), []int{25, 0}
  1943  }
  1944  
  1945  func (x *QueryNewTestVariantsResponse_NewTestVariant) GetTestId() string {
  1946  	if x != nil {
  1947  		return x.TestId
  1948  	}
  1949  	return ""
  1950  }
  1951  
  1952  func (x *QueryNewTestVariantsResponse_NewTestVariant) GetVariantHash() string {
  1953  	if x != nil {
  1954  		return x.VariantHash
  1955  	}
  1956  	return ""
  1957  }
  1958  
  1959  var File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto protoreflect.FileDescriptor
  1960  
  1961  var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc = []byte{
  1962  	0x0a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1963  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
  1964  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
  1965  	0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  1966  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1967  	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
  1968  	0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
  1969  	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c,
  1970  	0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f,
  1971  	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
  1972  	0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  1973  	0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72,
  1974  	0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
  1975  	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  1976  	0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x6f,
  1977  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f,
  1978  	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75,
  1979  	0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  1980  	0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x70,
  1981  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
  1982  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c,
  1983  	0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73,
  1984  	0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39,
  1985  	0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
  1986  	0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72,
  1987  	0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69,
  1988  	0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  1989  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  1990  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76,
  1991  	0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
  1992  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f,
  1993  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
  1994  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
  1995  	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
  1996  	0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17,
  1997  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
  1998  	0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
  1999  	0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
  2000  	0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2001  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76,
  2002  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
  2003  	0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
  2004  	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
  2005  	0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
  2006  	0x6b, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
  2007  	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2008  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61,
  2009  	0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x82, 0x01, 0x0a,
  2010  	0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
  2011  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74,
  2012  	0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
  2013  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2014  	0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x74, 0x65,
  2015  	0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
  2016  	0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
  2017  	0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
  2018  	0x6e, 0x22, 0x2f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
  2019  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
  2020  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
  2021  	0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78,
  2022  	0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2023  	0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
  2024  	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f,
  2025  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
  2026  	0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
  2027  	0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
  2028  	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
  2029  	0x65, 0x6e, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45,
  2030  	0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  2031  	0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e,
  2032  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
  2033  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2034  	0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
  2035  	0x6e, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  2036  	0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
  2037  	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
  2038  	0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xf5, 0x01, 0x0a, 0x17,
  2039  	0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
  2040  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  2041  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e,
  2042  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x70, 0x72, 0x65,
  2043  	0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c,
  2044  	0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
  2045  	0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63,
  2046  	0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b,
  2047  	0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
  2048  	0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
  2049  	0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
  2050  	0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65,
  2051  	0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  2052  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  2053  	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d,
  2054  	0x61, 0x73, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
  2055  	0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  2056  	0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
  2057  	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  2058  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
  2059  	0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2060  	0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
  2061  	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74,
  2062  	0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x1c, 0x51, 0x75,
  2063  	0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  2064  	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e,
  2065  	0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
  2066  	0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x09,
  2067  	0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2068  	0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
  2069  	0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69,
  2070  	0x6f, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
  2071  	0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70,
  2072  	0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
  2073  	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
  2074  	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61,
  2075  	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72,
  2076  	0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2077  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x74, 0x65, 0x73,
  2078  	0x74, 0x5f, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
  2079  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
  2080  	0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
  2081  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f,
  2082  	0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
  2083  	0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
  2084  	0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
  2085  	0x6e, 0x22, 0x44, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
  2086  	0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65,
  2087  	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
  2088  	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x6f,
  2089  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x51, 0x0a, 0x21, 0x51, 0x75, 0x65, 0x72, 0x79,
  2090  	0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
  2091  	0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12,
  2092  	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
  2093  	0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54,
  2094  	0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x12, 0x47, 0x65,
  2095  	0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2096  	0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
  2097  	0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x4c, 0x69, 0x73,
  2098  	0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2099  	0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2100  	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b,
  2101  	0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
  2102  	0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
  2103  	0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
  2104  	0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x15, 0x4c, 0x69,
  2105  	0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  2106  	0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
  2107  	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  2108  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
  2109  	0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a,
  2110  	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
  2111  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
  2112  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,
  2113  	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2114  	0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
  2115  	0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2116  	0x73, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02,
  2117  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
  2118  	0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
  2119  	0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69,
  2120  	0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
  2121  	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
  2122  	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
  2123  	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
  2124  	0x22, 0x7a, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
  2125  	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x61, 0x72,
  2126  	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  2127  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
  2128  	0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66,
  2129  	0x61, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
  2130  	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
  2131  	0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, 0x02, 0x0a,
  2132  	0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
  2133  	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x76,
  2134  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b,
  2135  	0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x70,
  2136  	0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
  2137  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2138  	0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x65,
  2139  	0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74,
  2140  	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
  2141  	0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c,
  2142  	0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
  2143  	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
  2144  	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
  2145  	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
  2146  	0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20,
  2147  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  2148  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52,
  2149  	0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb2, 0x02, 0x0a, 0x19, 0x51, 0x75,
  2150  	0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52,
  2151  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f,
  2152  	0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
  2153  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2154  	0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x0c, 0x74,
  2155  	0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
  2156  	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
  2157  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
  2158  	0x6b, 0x65, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03,
  2159  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
  2160  	0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
  2161  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2162  	0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
  2163  	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63,
  2164  	0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
  2165  	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c,
  2166  	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2167  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72,
  2168  	0x63, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa9,
  2169  	0x02, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56,
  2170  	0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e,
  2171  	0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
  2172  	0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68,
  2173  	0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18,
  2174  	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  2175  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65,
  2176  	0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
  2177  	0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
  2178  	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74,
  2179  	0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75,
  2180  	0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
  2181  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x5d, 0x0a, 0x15, 0x54,
  2182  	0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
  2183  	0x66, 0x69, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18,
  2184  	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74,
  2185  	0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61,
  2186  	0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x76,
  2187  	0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x90, 0x02, 0x0a, 0x1c, 0x42,
  2188  	0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
  2189  	0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x74,
  2190  	0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
  2191  	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2192  	0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
  2193  	0x74, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12,
  2194  	0x55, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
  2195  	0x32, 0x3b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  2196  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
  2197  	0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  2198  	0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73,
  2199  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
  2200  	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
  2201  	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
  2202  	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
  2203  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
  2204  	0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbc, 0x01,
  2205  	0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
  2206  	0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72,
  2207  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
  2208  	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x70, 0x72, 0x65,
  2209  	0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c,
  2210  	0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
  2211  	0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x65, 0x64,
  2212  	0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
  2213  	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
  2214  	0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
  2215  	0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
  2216  	0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8d, 0x01, 0x0a,
  2217  	0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
  2218  	0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x65,
  2219  	0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  2220  	0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  2221  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
  2222  	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
  2223  	0x64, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
  2224  	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
  2225  	0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x63, 0x0a, 0x1b,
  2226  	0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
  2227  	0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0a, 0x69,
  2228  	0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
  2229  	0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2230  	0x12, 0x1f, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01,
  2231  	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e,
  2232  	0x65, 0x22, 0x83, 0x02, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65,
  2233  	0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  2234  	0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e,
  2235  	0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69,
  2236  	0x73, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x69,
  2237  	0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61,
  2238  	0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2239  	0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65,
  2240  	0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74,
  2241  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73,
  2242  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x54, 0x65, 0x73,
  2243  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x1a, 0x4c, 0x0a, 0x0e, 0x4e, 0x65, 0x77,
  2244  	0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74,
  2245  	0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
  2246  	0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f,
  2247  	0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69,
  2248  	0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x32, 0xe9, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x75,
  2249  	0x6c, 0x74, 0x44, 0x42, 0x12, 0x57, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  2250  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  2251  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x6f,
  2252  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
  2253  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31,
  2254  	0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x57, 0x0a,
  2255  	0x0d, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26,
  2256  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2257  	0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,
  2258  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  2259  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
  2260  	0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65,
  2261  	0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2262  	0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
  2263  	0x74, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
  2264  	0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c,
  2265  	0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x52,
  2266  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
  2267  	0x12, 0x66, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
  2268  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65,
  2269  	0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
  2270  	0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
  2271  	0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c,
  2272  	0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
  2273  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
  2274  	0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2275  	0x12, 0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  2276  	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e,
  2277  	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
  2278  	0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
  2279  	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
  2280  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
  2281  	0x00, 0x12, 0x6b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
  2282  	0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  2283  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65,
  2284  	0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2285  	0x1a, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  2286  	0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73,
  2287  	0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a,
  2288  	0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65,
  2289  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
  2290  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
  2291  	0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2292  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72,
  2293  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
  2294  	0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2295  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x19, 0x51,
  2296  	0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74,
  2297  	0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x32, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2298  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72,
  2299  	0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69,
  2300  	0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c,
  2301  	0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e,
  2302  	0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53,
  2303  	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2304  	0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54,
  2305  	0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x75,
  2306  	0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51,
  2307  	0x75, 0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
  2308  	0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x75, 0x63,
  2309  	0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75,
  2310  	0x65, 0x72, 0x79, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
  2311  	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0b,
  2312  	0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x6c, 0x75,
  2313  	0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47,
  2314  	0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2315  	0x74, 0x1a, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
  2316  	0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x22, 0x00, 0x12,
  2317  	0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
  2318  	0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62,
  2319  	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74,
  2320  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2321  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
  2322  	0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2323  	0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69,
  2324  	0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73,
  2325  	0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72,
  2326  	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28,
  2327  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
  2328  	0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
  2329  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x11, 0x51, 0x75,
  2330  	0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x12,
  2331  	0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e,
  2332  	0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69,
  2333  	0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x75,
  2334  	0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51,
  2335  	0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73,
  2336  	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x14, 0x42, 0x61,
  2337  	0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e,
  2338  	0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2339  	0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65,
  2340  	0x73, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2341  	0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64,
  2342  	0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73,
  2343  	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2344  	0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73, 0x74,
  2345  	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2346  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72,
  2347  	0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
  2348  	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
  2349  	0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, 0x73,
  2350  	0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2351  	0x65, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
  2352  	0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75,
  2353  	0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65,
  2354  	0x73, 0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2355  }
  2356  
  2357  var (
  2358  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescOnce sync.Once
  2359  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData = file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc
  2360  )
  2361  
  2362  func file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescGZIP() []byte {
  2363  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescOnce.Do(func() {
  2364  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData)
  2365  	})
  2366  	return file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDescData
  2367  }
  2368  
  2369  var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
  2370  var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes = []interface{}{
  2371  	(*GetInvocationRequest)(nil),                              // 0: luci.resultdb.v1.GetInvocationRequest
  2372  	(*GetTestResultRequest)(nil),                              // 1: luci.resultdb.v1.GetTestResultRequest
  2373  	(*ListTestResultsRequest)(nil),                            // 2: luci.resultdb.v1.ListTestResultsRequest
  2374  	(*ListTestResultsResponse)(nil),                           // 3: luci.resultdb.v1.ListTestResultsResponse
  2375  	(*GetTestExonerationRequest)(nil),                         // 4: luci.resultdb.v1.GetTestExonerationRequest
  2376  	(*ListTestExonerationsRequest)(nil),                       // 5: luci.resultdb.v1.ListTestExonerationsRequest
  2377  	(*ListTestExonerationsResponse)(nil),                      // 6: luci.resultdb.v1.ListTestExonerationsResponse
  2378  	(*QueryTestResultsRequest)(nil),                           // 7: luci.resultdb.v1.QueryTestResultsRequest
  2379  	(*QueryTestResultsResponse)(nil),                          // 8: luci.resultdb.v1.QueryTestResultsResponse
  2380  	(*QueryTestExonerationsRequest)(nil),                      // 9: luci.resultdb.v1.QueryTestExonerationsRequest
  2381  	(*QueryTestExonerationsResponse)(nil),                     // 10: luci.resultdb.v1.QueryTestExonerationsResponse
  2382  	(*QueryTestResultStatisticsRequest)(nil),                  // 11: luci.resultdb.v1.QueryTestResultStatisticsRequest
  2383  	(*QueryTestResultStatisticsResponse)(nil),                 // 12: luci.resultdb.v1.QueryTestResultStatisticsResponse
  2384  	(*GetArtifactRequest)(nil),                                // 13: luci.resultdb.v1.GetArtifactRequest
  2385  	(*ListArtifactsRequest)(nil),                              // 14: luci.resultdb.v1.ListArtifactsRequest
  2386  	(*ListArtifactsResponse)(nil),                             // 15: luci.resultdb.v1.ListArtifactsResponse
  2387  	(*QueryArtifactsRequest)(nil),                             // 16: luci.resultdb.v1.QueryArtifactsRequest
  2388  	(*QueryArtifactsResponse)(nil),                            // 17: luci.resultdb.v1.QueryArtifactsResponse
  2389  	(*QueryTestVariantsRequest)(nil),                          // 18: luci.resultdb.v1.QueryTestVariantsRequest
  2390  	(*QueryTestVariantsResponse)(nil),                         // 19: luci.resultdb.v1.QueryTestVariantsResponse
  2391  	(*BatchGetTestVariantsRequest)(nil),                       // 20: luci.resultdb.v1.BatchGetTestVariantsRequest
  2392  	(*BatchGetTestVariantsResponse)(nil),                      // 21: luci.resultdb.v1.BatchGetTestVariantsResponse
  2393  	(*QueryTestMetadataRequest)(nil),                          // 22: luci.resultdb.v1.QueryTestMetadataRequest
  2394  	(*QueryTestMetadataResponse)(nil),                         // 23: luci.resultdb.v1.QueryTestMetadataResponse
  2395  	(*QueryNewTestVariantsRequest)(nil),                       // 24: luci.resultdb.v1.QueryNewTestVariantsRequest
  2396  	(*QueryNewTestVariantsResponse)(nil),                      // 25: luci.resultdb.v1.QueryNewTestVariantsResponse
  2397  	nil,                                                       // 26: luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry
  2398  	(*BatchGetTestVariantsRequest_TestVariantIdentifier)(nil), // 27: luci.resultdb.v1.BatchGetTestVariantsRequest.TestVariantIdentifier
  2399  	nil, // 28: luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry
  2400  	(*QueryNewTestVariantsResponse_NewTestVariant)(nil), // 29: luci.resultdb.v1.QueryNewTestVariantsResponse.NewTestVariant
  2401  	(*fieldmaskpb.FieldMask)(nil),                       // 30: google.protobuf.FieldMask
  2402  	(*TestResult)(nil),                                  // 31: luci.resultdb.v1.TestResult
  2403  	(*TestExoneration)(nil),                             // 32: luci.resultdb.v1.TestExoneration
  2404  	(*TestResultPredicate)(nil),                         // 33: luci.resultdb.v1.TestResultPredicate
  2405  	(*TestExonerationPredicate)(nil),                    // 34: luci.resultdb.v1.TestExonerationPredicate
  2406  	(*Artifact)(nil),                                    // 35: luci.resultdb.v1.Artifact
  2407  	(*ArtifactPredicate)(nil),                           // 36: luci.resultdb.v1.ArtifactPredicate
  2408  	(*TestVariantPredicate)(nil),                        // 37: luci.resultdb.v1.TestVariantPredicate
  2409  	(*TestVariant)(nil),                                 // 38: luci.resultdb.v1.TestVariant
  2410  	(*TestMetadataPredicate)(nil),                       // 39: luci.resultdb.v1.TestMetadataPredicate
  2411  	(*TestMetadataDetail)(nil),                          // 40: luci.resultdb.v1.TestMetadataDetail
  2412  	(*Sources)(nil),                                     // 41: luci.resultdb.v1.Sources
  2413  	(*Invocation)(nil),                                  // 42: luci.resultdb.v1.Invocation
  2414  }
  2415  var file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs = []int32{
  2416  	30, // 0: luci.resultdb.v1.ListTestResultsRequest.read_mask:type_name -> google.protobuf.FieldMask
  2417  	31, // 1: luci.resultdb.v1.ListTestResultsResponse.test_results:type_name -> luci.resultdb.v1.TestResult
  2418  	32, // 2: luci.resultdb.v1.ListTestExonerationsResponse.test_exonerations:type_name -> luci.resultdb.v1.TestExoneration
  2419  	33, // 3: luci.resultdb.v1.QueryTestResultsRequest.predicate:type_name -> luci.resultdb.v1.TestResultPredicate
  2420  	30, // 4: luci.resultdb.v1.QueryTestResultsRequest.read_mask:type_name -> google.protobuf.FieldMask
  2421  	31, // 5: luci.resultdb.v1.QueryTestResultsResponse.test_results:type_name -> luci.resultdb.v1.TestResult
  2422  	34, // 6: luci.resultdb.v1.QueryTestExonerationsRequest.predicate:type_name -> luci.resultdb.v1.TestExonerationPredicate
  2423  	32, // 7: luci.resultdb.v1.QueryTestExonerationsResponse.test_exonerations:type_name -> luci.resultdb.v1.TestExoneration
  2424  	35, // 8: luci.resultdb.v1.ListArtifactsResponse.artifacts:type_name -> luci.resultdb.v1.Artifact
  2425  	36, // 9: luci.resultdb.v1.QueryArtifactsRequest.predicate:type_name -> luci.resultdb.v1.ArtifactPredicate
  2426  	35, // 10: luci.resultdb.v1.QueryArtifactsResponse.artifacts:type_name -> luci.resultdb.v1.Artifact
  2427  	37, // 11: luci.resultdb.v1.QueryTestVariantsRequest.predicate:type_name -> luci.resultdb.v1.TestVariantPredicate
  2428  	30, // 12: luci.resultdb.v1.QueryTestVariantsRequest.read_mask:type_name -> google.protobuf.FieldMask
  2429  	38, // 13: luci.resultdb.v1.QueryTestVariantsResponse.test_variants:type_name -> luci.resultdb.v1.TestVariant
  2430  	26, // 14: luci.resultdb.v1.QueryTestVariantsResponse.sources:type_name -> luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry
  2431  	27, // 15: luci.resultdb.v1.BatchGetTestVariantsRequest.test_variants:type_name -> luci.resultdb.v1.BatchGetTestVariantsRequest.TestVariantIdentifier
  2432  	38, // 16: luci.resultdb.v1.BatchGetTestVariantsResponse.test_variants:type_name -> luci.resultdb.v1.TestVariant
  2433  	28, // 17: luci.resultdb.v1.BatchGetTestVariantsResponse.sources:type_name -> luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry
  2434  	39, // 18: luci.resultdb.v1.QueryTestMetadataRequest.predicate:type_name -> luci.resultdb.v1.TestMetadataPredicate
  2435  	40, // 19: luci.resultdb.v1.QueryTestMetadataResponse.testMetadata:type_name -> luci.resultdb.v1.TestMetadataDetail
  2436  	29, // 20: luci.resultdb.v1.QueryNewTestVariantsResponse.new_test_variants:type_name -> luci.resultdb.v1.QueryNewTestVariantsResponse.NewTestVariant
  2437  	41, // 21: luci.resultdb.v1.QueryTestVariantsResponse.SourcesEntry.value:type_name -> luci.resultdb.v1.Sources
  2438  	41, // 22: luci.resultdb.v1.BatchGetTestVariantsResponse.SourcesEntry.value:type_name -> luci.resultdb.v1.Sources
  2439  	0,  // 23: luci.resultdb.v1.ResultDB.GetInvocation:input_type -> luci.resultdb.v1.GetInvocationRequest
  2440  	1,  // 24: luci.resultdb.v1.ResultDB.GetTestResult:input_type -> luci.resultdb.v1.GetTestResultRequest
  2441  	2,  // 25: luci.resultdb.v1.ResultDB.ListTestResults:input_type -> luci.resultdb.v1.ListTestResultsRequest
  2442  	4,  // 26: luci.resultdb.v1.ResultDB.GetTestExoneration:input_type -> luci.resultdb.v1.GetTestExonerationRequest
  2443  	5,  // 27: luci.resultdb.v1.ResultDB.ListTestExonerations:input_type -> luci.resultdb.v1.ListTestExonerationsRequest
  2444  	7,  // 28: luci.resultdb.v1.ResultDB.QueryTestResults:input_type -> luci.resultdb.v1.QueryTestResultsRequest
  2445  	9,  // 29: luci.resultdb.v1.ResultDB.QueryTestExonerations:input_type -> luci.resultdb.v1.QueryTestExonerationsRequest
  2446  	11, // 30: luci.resultdb.v1.ResultDB.QueryTestResultStatistics:input_type -> luci.resultdb.v1.QueryTestResultStatisticsRequest
  2447  	24, // 31: luci.resultdb.v1.ResultDB.QueryNewTestVariants:input_type -> luci.resultdb.v1.QueryNewTestVariantsRequest
  2448  	13, // 32: luci.resultdb.v1.ResultDB.GetArtifact:input_type -> luci.resultdb.v1.GetArtifactRequest
  2449  	14, // 33: luci.resultdb.v1.ResultDB.ListArtifacts:input_type -> luci.resultdb.v1.ListArtifactsRequest
  2450  	16, // 34: luci.resultdb.v1.ResultDB.QueryArtifacts:input_type -> luci.resultdb.v1.QueryArtifactsRequest
  2451  	18, // 35: luci.resultdb.v1.ResultDB.QueryTestVariants:input_type -> luci.resultdb.v1.QueryTestVariantsRequest
  2452  	20, // 36: luci.resultdb.v1.ResultDB.BatchGetTestVariants:input_type -> luci.resultdb.v1.BatchGetTestVariantsRequest
  2453  	22, // 37: luci.resultdb.v1.ResultDB.QueryTestMetadata:input_type -> luci.resultdb.v1.QueryTestMetadataRequest
  2454  	42, // 38: luci.resultdb.v1.ResultDB.GetInvocation:output_type -> luci.resultdb.v1.Invocation
  2455  	31, // 39: luci.resultdb.v1.ResultDB.GetTestResult:output_type -> luci.resultdb.v1.TestResult
  2456  	3,  // 40: luci.resultdb.v1.ResultDB.ListTestResults:output_type -> luci.resultdb.v1.ListTestResultsResponse
  2457  	32, // 41: luci.resultdb.v1.ResultDB.GetTestExoneration:output_type -> luci.resultdb.v1.TestExoneration
  2458  	6,  // 42: luci.resultdb.v1.ResultDB.ListTestExonerations:output_type -> luci.resultdb.v1.ListTestExonerationsResponse
  2459  	8,  // 43: luci.resultdb.v1.ResultDB.QueryTestResults:output_type -> luci.resultdb.v1.QueryTestResultsResponse
  2460  	10, // 44: luci.resultdb.v1.ResultDB.QueryTestExonerations:output_type -> luci.resultdb.v1.QueryTestExonerationsResponse
  2461  	12, // 45: luci.resultdb.v1.ResultDB.QueryTestResultStatistics:output_type -> luci.resultdb.v1.QueryTestResultStatisticsResponse
  2462  	25, // 46: luci.resultdb.v1.ResultDB.QueryNewTestVariants:output_type -> luci.resultdb.v1.QueryNewTestVariantsResponse
  2463  	35, // 47: luci.resultdb.v1.ResultDB.GetArtifact:output_type -> luci.resultdb.v1.Artifact
  2464  	15, // 48: luci.resultdb.v1.ResultDB.ListArtifacts:output_type -> luci.resultdb.v1.ListArtifactsResponse
  2465  	17, // 49: luci.resultdb.v1.ResultDB.QueryArtifacts:output_type -> luci.resultdb.v1.QueryArtifactsResponse
  2466  	19, // 50: luci.resultdb.v1.ResultDB.QueryTestVariants:output_type -> luci.resultdb.v1.QueryTestVariantsResponse
  2467  	21, // 51: luci.resultdb.v1.ResultDB.BatchGetTestVariants:output_type -> luci.resultdb.v1.BatchGetTestVariantsResponse
  2468  	23, // 52: luci.resultdb.v1.ResultDB.QueryTestMetadata:output_type -> luci.resultdb.v1.QueryTestMetadataResponse
  2469  	38, // [38:53] is the sub-list for method output_type
  2470  	23, // [23:38] is the sub-list for method input_type
  2471  	23, // [23:23] is the sub-list for extension type_name
  2472  	23, // [23:23] is the sub-list for extension extendee
  2473  	0,  // [0:23] is the sub-list for field type_name
  2474  }
  2475  
  2476  func init() { file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_init() }
  2477  func file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_init() {
  2478  	if File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto != nil {
  2479  		return
  2480  	}
  2481  	file_go_chromium_org_luci_resultdb_proto_v1_artifact_proto_init()
  2482  	file_go_chromium_org_luci_resultdb_proto_v1_invocation_proto_init()
  2483  	file_go_chromium_org_luci_resultdb_proto_v1_predicate_proto_init()
  2484  	file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init()
  2485  	file_go_chromium_org_luci_resultdb_proto_v1_test_variant_proto_init()
  2486  	file_go_chromium_org_luci_resultdb_proto_v1_test_metadata_proto_init()
  2487  	if !protoimpl.UnsafeEnabled {
  2488  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2489  			switch v := v.(*GetInvocationRequest); i {
  2490  			case 0:
  2491  				return &v.state
  2492  			case 1:
  2493  				return &v.sizeCache
  2494  			case 2:
  2495  				return &v.unknownFields
  2496  			default:
  2497  				return nil
  2498  			}
  2499  		}
  2500  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2501  			switch v := v.(*GetTestResultRequest); i {
  2502  			case 0:
  2503  				return &v.state
  2504  			case 1:
  2505  				return &v.sizeCache
  2506  			case 2:
  2507  				return &v.unknownFields
  2508  			default:
  2509  				return nil
  2510  			}
  2511  		}
  2512  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2513  			switch v := v.(*ListTestResultsRequest); i {
  2514  			case 0:
  2515  				return &v.state
  2516  			case 1:
  2517  				return &v.sizeCache
  2518  			case 2:
  2519  				return &v.unknownFields
  2520  			default:
  2521  				return nil
  2522  			}
  2523  		}
  2524  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2525  			switch v := v.(*ListTestResultsResponse); i {
  2526  			case 0:
  2527  				return &v.state
  2528  			case 1:
  2529  				return &v.sizeCache
  2530  			case 2:
  2531  				return &v.unknownFields
  2532  			default:
  2533  				return nil
  2534  			}
  2535  		}
  2536  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2537  			switch v := v.(*GetTestExonerationRequest); i {
  2538  			case 0:
  2539  				return &v.state
  2540  			case 1:
  2541  				return &v.sizeCache
  2542  			case 2:
  2543  				return &v.unknownFields
  2544  			default:
  2545  				return nil
  2546  			}
  2547  		}
  2548  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2549  			switch v := v.(*ListTestExonerationsRequest); i {
  2550  			case 0:
  2551  				return &v.state
  2552  			case 1:
  2553  				return &v.sizeCache
  2554  			case 2:
  2555  				return &v.unknownFields
  2556  			default:
  2557  				return nil
  2558  			}
  2559  		}
  2560  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2561  			switch v := v.(*ListTestExonerationsResponse); i {
  2562  			case 0:
  2563  				return &v.state
  2564  			case 1:
  2565  				return &v.sizeCache
  2566  			case 2:
  2567  				return &v.unknownFields
  2568  			default:
  2569  				return nil
  2570  			}
  2571  		}
  2572  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2573  			switch v := v.(*QueryTestResultsRequest); i {
  2574  			case 0:
  2575  				return &v.state
  2576  			case 1:
  2577  				return &v.sizeCache
  2578  			case 2:
  2579  				return &v.unknownFields
  2580  			default:
  2581  				return nil
  2582  			}
  2583  		}
  2584  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2585  			switch v := v.(*QueryTestResultsResponse); i {
  2586  			case 0:
  2587  				return &v.state
  2588  			case 1:
  2589  				return &v.sizeCache
  2590  			case 2:
  2591  				return &v.unknownFields
  2592  			default:
  2593  				return nil
  2594  			}
  2595  		}
  2596  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2597  			switch v := v.(*QueryTestExonerationsRequest); i {
  2598  			case 0:
  2599  				return &v.state
  2600  			case 1:
  2601  				return &v.sizeCache
  2602  			case 2:
  2603  				return &v.unknownFields
  2604  			default:
  2605  				return nil
  2606  			}
  2607  		}
  2608  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2609  			switch v := v.(*QueryTestExonerationsResponse); i {
  2610  			case 0:
  2611  				return &v.state
  2612  			case 1:
  2613  				return &v.sizeCache
  2614  			case 2:
  2615  				return &v.unknownFields
  2616  			default:
  2617  				return nil
  2618  			}
  2619  		}
  2620  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2621  			switch v := v.(*QueryTestResultStatisticsRequest); i {
  2622  			case 0:
  2623  				return &v.state
  2624  			case 1:
  2625  				return &v.sizeCache
  2626  			case 2:
  2627  				return &v.unknownFields
  2628  			default:
  2629  				return nil
  2630  			}
  2631  		}
  2632  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2633  			switch v := v.(*QueryTestResultStatisticsResponse); i {
  2634  			case 0:
  2635  				return &v.state
  2636  			case 1:
  2637  				return &v.sizeCache
  2638  			case 2:
  2639  				return &v.unknownFields
  2640  			default:
  2641  				return nil
  2642  			}
  2643  		}
  2644  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2645  			switch v := v.(*GetArtifactRequest); i {
  2646  			case 0:
  2647  				return &v.state
  2648  			case 1:
  2649  				return &v.sizeCache
  2650  			case 2:
  2651  				return &v.unknownFields
  2652  			default:
  2653  				return nil
  2654  			}
  2655  		}
  2656  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2657  			switch v := v.(*ListArtifactsRequest); i {
  2658  			case 0:
  2659  				return &v.state
  2660  			case 1:
  2661  				return &v.sizeCache
  2662  			case 2:
  2663  				return &v.unknownFields
  2664  			default:
  2665  				return nil
  2666  			}
  2667  		}
  2668  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2669  			switch v := v.(*ListArtifactsResponse); i {
  2670  			case 0:
  2671  				return &v.state
  2672  			case 1:
  2673  				return &v.sizeCache
  2674  			case 2:
  2675  				return &v.unknownFields
  2676  			default:
  2677  				return nil
  2678  			}
  2679  		}
  2680  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2681  			switch v := v.(*QueryArtifactsRequest); i {
  2682  			case 0:
  2683  				return &v.state
  2684  			case 1:
  2685  				return &v.sizeCache
  2686  			case 2:
  2687  				return &v.unknownFields
  2688  			default:
  2689  				return nil
  2690  			}
  2691  		}
  2692  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2693  			switch v := v.(*QueryArtifactsResponse); i {
  2694  			case 0:
  2695  				return &v.state
  2696  			case 1:
  2697  				return &v.sizeCache
  2698  			case 2:
  2699  				return &v.unknownFields
  2700  			default:
  2701  				return nil
  2702  			}
  2703  		}
  2704  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2705  			switch v := v.(*QueryTestVariantsRequest); i {
  2706  			case 0:
  2707  				return &v.state
  2708  			case 1:
  2709  				return &v.sizeCache
  2710  			case 2:
  2711  				return &v.unknownFields
  2712  			default:
  2713  				return nil
  2714  			}
  2715  		}
  2716  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2717  			switch v := v.(*QueryTestVariantsResponse); i {
  2718  			case 0:
  2719  				return &v.state
  2720  			case 1:
  2721  				return &v.sizeCache
  2722  			case 2:
  2723  				return &v.unknownFields
  2724  			default:
  2725  				return nil
  2726  			}
  2727  		}
  2728  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2729  			switch v := v.(*BatchGetTestVariantsRequest); i {
  2730  			case 0:
  2731  				return &v.state
  2732  			case 1:
  2733  				return &v.sizeCache
  2734  			case 2:
  2735  				return &v.unknownFields
  2736  			default:
  2737  				return nil
  2738  			}
  2739  		}
  2740  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2741  			switch v := v.(*BatchGetTestVariantsResponse); i {
  2742  			case 0:
  2743  				return &v.state
  2744  			case 1:
  2745  				return &v.sizeCache
  2746  			case 2:
  2747  				return &v.unknownFields
  2748  			default:
  2749  				return nil
  2750  			}
  2751  		}
  2752  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  2753  			switch v := v.(*QueryTestMetadataRequest); i {
  2754  			case 0:
  2755  				return &v.state
  2756  			case 1:
  2757  				return &v.sizeCache
  2758  			case 2:
  2759  				return &v.unknownFields
  2760  			default:
  2761  				return nil
  2762  			}
  2763  		}
  2764  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  2765  			switch v := v.(*QueryTestMetadataResponse); i {
  2766  			case 0:
  2767  				return &v.state
  2768  			case 1:
  2769  				return &v.sizeCache
  2770  			case 2:
  2771  				return &v.unknownFields
  2772  			default:
  2773  				return nil
  2774  			}
  2775  		}
  2776  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  2777  			switch v := v.(*QueryNewTestVariantsRequest); i {
  2778  			case 0:
  2779  				return &v.state
  2780  			case 1:
  2781  				return &v.sizeCache
  2782  			case 2:
  2783  				return &v.unknownFields
  2784  			default:
  2785  				return nil
  2786  			}
  2787  		}
  2788  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  2789  			switch v := v.(*QueryNewTestVariantsResponse); i {
  2790  			case 0:
  2791  				return &v.state
  2792  			case 1:
  2793  				return &v.sizeCache
  2794  			case 2:
  2795  				return &v.unknownFields
  2796  			default:
  2797  				return nil
  2798  			}
  2799  		}
  2800  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  2801  			switch v := v.(*BatchGetTestVariantsRequest_TestVariantIdentifier); i {
  2802  			case 0:
  2803  				return &v.state
  2804  			case 1:
  2805  				return &v.sizeCache
  2806  			case 2:
  2807  				return &v.unknownFields
  2808  			default:
  2809  				return nil
  2810  			}
  2811  		}
  2812  		file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  2813  			switch v := v.(*QueryNewTestVariantsResponse_NewTestVariant); i {
  2814  			case 0:
  2815  				return &v.state
  2816  			case 1:
  2817  				return &v.sizeCache
  2818  			case 2:
  2819  				return &v.unknownFields
  2820  			default:
  2821  				return nil
  2822  			}
  2823  		}
  2824  	}
  2825  	type x struct{}
  2826  	out := protoimpl.TypeBuilder{
  2827  		File: protoimpl.DescBuilder{
  2828  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2829  			RawDescriptor: file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc,
  2830  			NumEnums:      0,
  2831  			NumMessages:   30,
  2832  			NumExtensions: 0,
  2833  			NumServices:   1,
  2834  		},
  2835  		GoTypes:           file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes,
  2836  		DependencyIndexes: file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs,
  2837  		MessageInfos:      file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_msgTypes,
  2838  	}.Build()
  2839  	File_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto = out.File
  2840  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_rawDesc = nil
  2841  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_goTypes = nil
  2842  	file_go_chromium_org_luci_resultdb_proto_v1_resultdb_proto_depIdxs = nil
  2843  }
  2844  
  2845  // Reference imports to suppress errors if they are not otherwise used.
  2846  var _ context.Context
  2847  var _ grpc.ClientConnInterface
  2848  
  2849  // This is a compile-time assertion to ensure that this generated file
  2850  // is compatible with the grpc package it is being compiled against.
  2851  const _ = grpc.SupportPackageIsVersion6
  2852  
  2853  // ResultDBClient is the client API for ResultDB service.
  2854  //
  2855  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  2856  type ResultDBClient interface {
  2857  	// Retrieves an invocation.
  2858  	GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
  2859  	// Retrieves a test result.
  2860  	GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error)
  2861  	// Retrieves test results for a parent invocation.
  2862  	//
  2863  	// Note: response does not contain test results of included invocations.
  2864  	// Use QueryTestResults instead.
  2865  	ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error)
  2866  	// Retrieves a test exoneration.
  2867  	GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error)
  2868  	// Retrieves test exonerations for a parent invocation.
  2869  	//
  2870  	// Note: response does not contain test results of included invocations.
  2871  	// Use QueryTestExonerations instead.
  2872  	ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error)
  2873  	// Retrieves test results from an invocation, recursively.
  2874  	// Supports invocation inclusions.
  2875  	// Supports advanced filtering.
  2876  	// Examples: go/resultdb-rpc#querytestresults
  2877  	QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error)
  2878  	// Retrieves test exonerations from an invocation.
  2879  	// Supports invocation inclusions.
  2880  	// Supports advanced filtering.
  2881  	QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error)
  2882  	// Retrieves the test result statistics of an invocation.
  2883  	// Currently supports total number of test results belong to the invocation,
  2884  	// directly and indirectly.
  2885  	QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error)
  2886  	// Calculate new test variants by running the difference between the tests
  2887  	// run in the given invocation against the submitted test history for the
  2888  	// source.
  2889  	QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error)
  2890  	// Retrieves an artifact.
  2891  	GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error)
  2892  	// Retrieves artifacts for a parent invocation/testResult.
  2893  	//
  2894  	// Note: if the parent is an invocation, the response does not contain
  2895  	// artifacts of included invocations. Use QueryArtifacts instead.
  2896  	ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error)
  2897  	// Retrieves artifacts from an invocation, recursively.
  2898  	// Can retrieve artifacts of test results included in the invocation
  2899  	// directly or indirectly.
  2900  	// Supports invocation inclusions.
  2901  	QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error)
  2902  	// Retrieves test variants from an invocation, recursively.
  2903  	// Supports invocation inclusions.
  2904  	QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error)
  2905  	// Retrieves test variants from a single invocation, matching the specified
  2906  	// test IDs and hashes.
  2907  	BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error)
  2908  	// Retrieves test metadata from a LUCI project, matching the predicate.
  2909  	QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error)
  2910  }
  2911  type resultDBPRPCClient struct {
  2912  	client *prpc.Client
  2913  }
  2914  
  2915  func NewResultDBPRPCClient(client *prpc.Client) ResultDBClient {
  2916  	return &resultDBPRPCClient{client}
  2917  }
  2918  
  2919  func (c *resultDBPRPCClient) GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  2920  	out := new(Invocation)
  2921  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetInvocation", in, out, opts...)
  2922  	if err != nil {
  2923  		return nil, err
  2924  	}
  2925  	return out, nil
  2926  }
  2927  
  2928  func (c *resultDBPRPCClient) GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
  2929  	out := new(TestResult)
  2930  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetTestResult", in, out, opts...)
  2931  	if err != nil {
  2932  		return nil, err
  2933  	}
  2934  	return out, nil
  2935  }
  2936  
  2937  func (c *resultDBPRPCClient) ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error) {
  2938  	out := new(ListTestResultsResponse)
  2939  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListTestResults", in, out, opts...)
  2940  	if err != nil {
  2941  		return nil, err
  2942  	}
  2943  	return out, nil
  2944  }
  2945  
  2946  func (c *resultDBPRPCClient) GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
  2947  	out := new(TestExoneration)
  2948  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetTestExoneration", in, out, opts...)
  2949  	if err != nil {
  2950  		return nil, err
  2951  	}
  2952  	return out, nil
  2953  }
  2954  
  2955  func (c *resultDBPRPCClient) ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error) {
  2956  	out := new(ListTestExonerationsResponse)
  2957  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListTestExonerations", in, out, opts...)
  2958  	if err != nil {
  2959  		return nil, err
  2960  	}
  2961  	return out, nil
  2962  }
  2963  
  2964  func (c *resultDBPRPCClient) QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error) {
  2965  	out := new(QueryTestResultsResponse)
  2966  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestResults", in, out, opts...)
  2967  	if err != nil {
  2968  		return nil, err
  2969  	}
  2970  	return out, nil
  2971  }
  2972  
  2973  func (c *resultDBPRPCClient) QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error) {
  2974  	out := new(QueryTestExonerationsResponse)
  2975  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestExonerations", in, out, opts...)
  2976  	if err != nil {
  2977  		return nil, err
  2978  	}
  2979  	return out, nil
  2980  }
  2981  
  2982  func (c *resultDBPRPCClient) QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error) {
  2983  	out := new(QueryTestResultStatisticsResponse)
  2984  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestResultStatistics", in, out, opts...)
  2985  	if err != nil {
  2986  		return nil, err
  2987  	}
  2988  	return out, nil
  2989  }
  2990  
  2991  func (c *resultDBPRPCClient) QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error) {
  2992  	out := new(QueryNewTestVariantsResponse)
  2993  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryNewTestVariants", in, out, opts...)
  2994  	if err != nil {
  2995  		return nil, err
  2996  	}
  2997  	return out, nil
  2998  }
  2999  
  3000  func (c *resultDBPRPCClient) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error) {
  3001  	out := new(Artifact)
  3002  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "GetArtifact", in, out, opts...)
  3003  	if err != nil {
  3004  		return nil, err
  3005  	}
  3006  	return out, nil
  3007  }
  3008  
  3009  func (c *resultDBPRPCClient) ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) {
  3010  	out := new(ListArtifactsResponse)
  3011  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "ListArtifacts", in, out, opts...)
  3012  	if err != nil {
  3013  		return nil, err
  3014  	}
  3015  	return out, nil
  3016  }
  3017  
  3018  func (c *resultDBPRPCClient) QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error) {
  3019  	out := new(QueryArtifactsResponse)
  3020  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryArtifacts", in, out, opts...)
  3021  	if err != nil {
  3022  		return nil, err
  3023  	}
  3024  	return out, nil
  3025  }
  3026  
  3027  func (c *resultDBPRPCClient) QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error) {
  3028  	out := new(QueryTestVariantsResponse)
  3029  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestVariants", in, out, opts...)
  3030  	if err != nil {
  3031  		return nil, err
  3032  	}
  3033  	return out, nil
  3034  }
  3035  
  3036  func (c *resultDBPRPCClient) BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error) {
  3037  	out := new(BatchGetTestVariantsResponse)
  3038  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "BatchGetTestVariants", in, out, opts...)
  3039  	if err != nil {
  3040  		return nil, err
  3041  	}
  3042  	return out, nil
  3043  }
  3044  
  3045  func (c *resultDBPRPCClient) QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error) {
  3046  	out := new(QueryTestMetadataResponse)
  3047  	err := c.client.Call(ctx, "luci.resultdb.v1.ResultDB", "QueryTestMetadata", in, out, opts...)
  3048  	if err != nil {
  3049  		return nil, err
  3050  	}
  3051  	return out, nil
  3052  }
  3053  
  3054  type resultDBClient struct {
  3055  	cc grpc.ClientConnInterface
  3056  }
  3057  
  3058  func NewResultDBClient(cc grpc.ClientConnInterface) ResultDBClient {
  3059  	return &resultDBClient{cc}
  3060  }
  3061  
  3062  func (c *resultDBClient) GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
  3063  	out := new(Invocation)
  3064  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetInvocation", in, out, opts...)
  3065  	if err != nil {
  3066  		return nil, err
  3067  	}
  3068  	return out, nil
  3069  }
  3070  
  3071  func (c *resultDBClient) GetTestResult(ctx context.Context, in *GetTestResultRequest, opts ...grpc.CallOption) (*TestResult, error) {
  3072  	out := new(TestResult)
  3073  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetTestResult", in, out, opts...)
  3074  	if err != nil {
  3075  		return nil, err
  3076  	}
  3077  	return out, nil
  3078  }
  3079  
  3080  func (c *resultDBClient) ListTestResults(ctx context.Context, in *ListTestResultsRequest, opts ...grpc.CallOption) (*ListTestResultsResponse, error) {
  3081  	out := new(ListTestResultsResponse)
  3082  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListTestResults", in, out, opts...)
  3083  	if err != nil {
  3084  		return nil, err
  3085  	}
  3086  	return out, nil
  3087  }
  3088  
  3089  func (c *resultDBClient) GetTestExoneration(ctx context.Context, in *GetTestExonerationRequest, opts ...grpc.CallOption) (*TestExoneration, error) {
  3090  	out := new(TestExoneration)
  3091  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetTestExoneration", in, out, opts...)
  3092  	if err != nil {
  3093  		return nil, err
  3094  	}
  3095  	return out, nil
  3096  }
  3097  
  3098  func (c *resultDBClient) ListTestExonerations(ctx context.Context, in *ListTestExonerationsRequest, opts ...grpc.CallOption) (*ListTestExonerationsResponse, error) {
  3099  	out := new(ListTestExonerationsResponse)
  3100  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListTestExonerations", in, out, opts...)
  3101  	if err != nil {
  3102  		return nil, err
  3103  	}
  3104  	return out, nil
  3105  }
  3106  
  3107  func (c *resultDBClient) QueryTestResults(ctx context.Context, in *QueryTestResultsRequest, opts ...grpc.CallOption) (*QueryTestResultsResponse, error) {
  3108  	out := new(QueryTestResultsResponse)
  3109  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestResults", in, out, opts...)
  3110  	if err != nil {
  3111  		return nil, err
  3112  	}
  3113  	return out, nil
  3114  }
  3115  
  3116  func (c *resultDBClient) QueryTestExonerations(ctx context.Context, in *QueryTestExonerationsRequest, opts ...grpc.CallOption) (*QueryTestExonerationsResponse, error) {
  3117  	out := new(QueryTestExonerationsResponse)
  3118  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestExonerations", in, out, opts...)
  3119  	if err != nil {
  3120  		return nil, err
  3121  	}
  3122  	return out, nil
  3123  }
  3124  
  3125  func (c *resultDBClient) QueryTestResultStatistics(ctx context.Context, in *QueryTestResultStatisticsRequest, opts ...grpc.CallOption) (*QueryTestResultStatisticsResponse, error) {
  3126  	out := new(QueryTestResultStatisticsResponse)
  3127  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestResultStatistics", in, out, opts...)
  3128  	if err != nil {
  3129  		return nil, err
  3130  	}
  3131  	return out, nil
  3132  }
  3133  
  3134  func (c *resultDBClient) QueryNewTestVariants(ctx context.Context, in *QueryNewTestVariantsRequest, opts ...grpc.CallOption) (*QueryNewTestVariantsResponse, error) {
  3135  	out := new(QueryNewTestVariantsResponse)
  3136  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryNewTestVariants", in, out, opts...)
  3137  	if err != nil {
  3138  		return nil, err
  3139  	}
  3140  	return out, nil
  3141  }
  3142  
  3143  func (c *resultDBClient) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*Artifact, error) {
  3144  	out := new(Artifact)
  3145  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/GetArtifact", in, out, opts...)
  3146  	if err != nil {
  3147  		return nil, err
  3148  	}
  3149  	return out, nil
  3150  }
  3151  
  3152  func (c *resultDBClient) ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) {
  3153  	out := new(ListArtifactsResponse)
  3154  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/ListArtifacts", in, out, opts...)
  3155  	if err != nil {
  3156  		return nil, err
  3157  	}
  3158  	return out, nil
  3159  }
  3160  
  3161  func (c *resultDBClient) QueryArtifacts(ctx context.Context, in *QueryArtifactsRequest, opts ...grpc.CallOption) (*QueryArtifactsResponse, error) {
  3162  	out := new(QueryArtifactsResponse)
  3163  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryArtifacts", in, out, opts...)
  3164  	if err != nil {
  3165  		return nil, err
  3166  	}
  3167  	return out, nil
  3168  }
  3169  
  3170  func (c *resultDBClient) QueryTestVariants(ctx context.Context, in *QueryTestVariantsRequest, opts ...grpc.CallOption) (*QueryTestVariantsResponse, error) {
  3171  	out := new(QueryTestVariantsResponse)
  3172  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestVariants", in, out, opts...)
  3173  	if err != nil {
  3174  		return nil, err
  3175  	}
  3176  	return out, nil
  3177  }
  3178  
  3179  func (c *resultDBClient) BatchGetTestVariants(ctx context.Context, in *BatchGetTestVariantsRequest, opts ...grpc.CallOption) (*BatchGetTestVariantsResponse, error) {
  3180  	out := new(BatchGetTestVariantsResponse)
  3181  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/BatchGetTestVariants", in, out, opts...)
  3182  	if err != nil {
  3183  		return nil, err
  3184  	}
  3185  	return out, nil
  3186  }
  3187  
  3188  func (c *resultDBClient) QueryTestMetadata(ctx context.Context, in *QueryTestMetadataRequest, opts ...grpc.CallOption) (*QueryTestMetadataResponse, error) {
  3189  	out := new(QueryTestMetadataResponse)
  3190  	err := c.cc.Invoke(ctx, "/luci.resultdb.v1.ResultDB/QueryTestMetadata", in, out, opts...)
  3191  	if err != nil {
  3192  		return nil, err
  3193  	}
  3194  	return out, nil
  3195  }
  3196  
  3197  // ResultDBServer is the server API for ResultDB service.
  3198  type ResultDBServer interface {
  3199  	// Retrieves an invocation.
  3200  	GetInvocation(context.Context, *GetInvocationRequest) (*Invocation, error)
  3201  	// Retrieves a test result.
  3202  	GetTestResult(context.Context, *GetTestResultRequest) (*TestResult, error)
  3203  	// Retrieves test results for a parent invocation.
  3204  	//
  3205  	// Note: response does not contain test results of included invocations.
  3206  	// Use QueryTestResults instead.
  3207  	ListTestResults(context.Context, *ListTestResultsRequest) (*ListTestResultsResponse, error)
  3208  	// Retrieves a test exoneration.
  3209  	GetTestExoneration(context.Context, *GetTestExonerationRequest) (*TestExoneration, error)
  3210  	// Retrieves test exonerations for a parent invocation.
  3211  	//
  3212  	// Note: response does not contain test results of included invocations.
  3213  	// Use QueryTestExonerations instead.
  3214  	ListTestExonerations(context.Context, *ListTestExonerationsRequest) (*ListTestExonerationsResponse, error)
  3215  	// Retrieves test results from an invocation, recursively.
  3216  	// Supports invocation inclusions.
  3217  	// Supports advanced filtering.
  3218  	// Examples: go/resultdb-rpc#querytestresults
  3219  	QueryTestResults(context.Context, *QueryTestResultsRequest) (*QueryTestResultsResponse, error)
  3220  	// Retrieves test exonerations from an invocation.
  3221  	// Supports invocation inclusions.
  3222  	// Supports advanced filtering.
  3223  	QueryTestExonerations(context.Context, *QueryTestExonerationsRequest) (*QueryTestExonerationsResponse, error)
  3224  	// Retrieves the test result statistics of an invocation.
  3225  	// Currently supports total number of test results belong to the invocation,
  3226  	// directly and indirectly.
  3227  	QueryTestResultStatistics(context.Context, *QueryTestResultStatisticsRequest) (*QueryTestResultStatisticsResponse, error)
  3228  	// Calculate new test variants by running the difference between the tests
  3229  	// run in the given invocation against the submitted test history for the
  3230  	// source.
  3231  	QueryNewTestVariants(context.Context, *QueryNewTestVariantsRequest) (*QueryNewTestVariantsResponse, error)
  3232  	// Retrieves an artifact.
  3233  	GetArtifact(context.Context, *GetArtifactRequest) (*Artifact, error)
  3234  	// Retrieves artifacts for a parent invocation/testResult.
  3235  	//
  3236  	// Note: if the parent is an invocation, the response does not contain
  3237  	// artifacts of included invocations. Use QueryArtifacts instead.
  3238  	ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error)
  3239  	// Retrieves artifacts from an invocation, recursively.
  3240  	// Can retrieve artifacts of test results included in the invocation
  3241  	// directly or indirectly.
  3242  	// Supports invocation inclusions.
  3243  	QueryArtifacts(context.Context, *QueryArtifactsRequest) (*QueryArtifactsResponse, error)
  3244  	// Retrieves test variants from an invocation, recursively.
  3245  	// Supports invocation inclusions.
  3246  	QueryTestVariants(context.Context, *QueryTestVariantsRequest) (*QueryTestVariantsResponse, error)
  3247  	// Retrieves test variants from a single invocation, matching the specified
  3248  	// test IDs and hashes.
  3249  	BatchGetTestVariants(context.Context, *BatchGetTestVariantsRequest) (*BatchGetTestVariantsResponse, error)
  3250  	// Retrieves test metadata from a LUCI project, matching the predicate.
  3251  	QueryTestMetadata(context.Context, *QueryTestMetadataRequest) (*QueryTestMetadataResponse, error)
  3252  }
  3253  
  3254  // UnimplementedResultDBServer can be embedded to have forward compatible implementations.
  3255  type UnimplementedResultDBServer struct {
  3256  }
  3257  
  3258  func (*UnimplementedResultDBServer) GetInvocation(context.Context, *GetInvocationRequest) (*Invocation, error) {
  3259  	return nil, status.Errorf(codes.Unimplemented, "method GetInvocation not implemented")
  3260  }
  3261  func (*UnimplementedResultDBServer) GetTestResult(context.Context, *GetTestResultRequest) (*TestResult, error) {
  3262  	return nil, status.Errorf(codes.Unimplemented, "method GetTestResult not implemented")
  3263  }
  3264  func (*UnimplementedResultDBServer) ListTestResults(context.Context, *ListTestResultsRequest) (*ListTestResultsResponse, error) {
  3265  	return nil, status.Errorf(codes.Unimplemented, "method ListTestResults not implemented")
  3266  }
  3267  func (*UnimplementedResultDBServer) GetTestExoneration(context.Context, *GetTestExonerationRequest) (*TestExoneration, error) {
  3268  	return nil, status.Errorf(codes.Unimplemented, "method GetTestExoneration not implemented")
  3269  }
  3270  func (*UnimplementedResultDBServer) ListTestExonerations(context.Context, *ListTestExonerationsRequest) (*ListTestExonerationsResponse, error) {
  3271  	return nil, status.Errorf(codes.Unimplemented, "method ListTestExonerations not implemented")
  3272  }
  3273  func (*UnimplementedResultDBServer) QueryTestResults(context.Context, *QueryTestResultsRequest) (*QueryTestResultsResponse, error) {
  3274  	return nil, status.Errorf(codes.Unimplemented, "method QueryTestResults not implemented")
  3275  }
  3276  func (*UnimplementedResultDBServer) QueryTestExonerations(context.Context, *QueryTestExonerationsRequest) (*QueryTestExonerationsResponse, error) {
  3277  	return nil, status.Errorf(codes.Unimplemented, "method QueryTestExonerations not implemented")
  3278  }
  3279  func (*UnimplementedResultDBServer) QueryTestResultStatistics(context.Context, *QueryTestResultStatisticsRequest) (*QueryTestResultStatisticsResponse, error) {
  3280  	return nil, status.Errorf(codes.Unimplemented, "method QueryTestResultStatistics not implemented")
  3281  }
  3282  func (*UnimplementedResultDBServer) QueryNewTestVariants(context.Context, *QueryNewTestVariantsRequest) (*QueryNewTestVariantsResponse, error) {
  3283  	return nil, status.Errorf(codes.Unimplemented, "method QueryNewTestVariants not implemented")
  3284  }
  3285  func (*UnimplementedResultDBServer) GetArtifact(context.Context, *GetArtifactRequest) (*Artifact, error) {
  3286  	return nil, status.Errorf(codes.Unimplemented, "method GetArtifact not implemented")
  3287  }
  3288  func (*UnimplementedResultDBServer) ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error) {
  3289  	return nil, status.Errorf(codes.Unimplemented, "method ListArtifacts not implemented")
  3290  }
  3291  func (*UnimplementedResultDBServer) QueryArtifacts(context.Context, *QueryArtifactsRequest) (*QueryArtifactsResponse, error) {
  3292  	return nil, status.Errorf(codes.Unimplemented, "method QueryArtifacts not implemented")
  3293  }
  3294  func (*UnimplementedResultDBServer) QueryTestVariants(context.Context, *QueryTestVariantsRequest) (*QueryTestVariantsResponse, error) {
  3295  	return nil, status.Errorf(codes.Unimplemented, "method QueryTestVariants not implemented")
  3296  }
  3297  func (*UnimplementedResultDBServer) BatchGetTestVariants(context.Context, *BatchGetTestVariantsRequest) (*BatchGetTestVariantsResponse, error) {
  3298  	return nil, status.Errorf(codes.Unimplemented, "method BatchGetTestVariants not implemented")
  3299  }
  3300  func (*UnimplementedResultDBServer) QueryTestMetadata(context.Context, *QueryTestMetadataRequest) (*QueryTestMetadataResponse, error) {
  3301  	return nil, status.Errorf(codes.Unimplemented, "method QueryTestMetadata not implemented")
  3302  }
  3303  
  3304  func RegisterResultDBServer(s prpc.Registrar, srv ResultDBServer) {
  3305  	s.RegisterService(&_ResultDB_serviceDesc, srv)
  3306  }
  3307  
  3308  func _ResultDB_GetInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3309  	in := new(GetInvocationRequest)
  3310  	if err := dec(in); err != nil {
  3311  		return nil, err
  3312  	}
  3313  	if interceptor == nil {
  3314  		return srv.(ResultDBServer).GetInvocation(ctx, in)
  3315  	}
  3316  	info := &grpc.UnaryServerInfo{
  3317  		Server:     srv,
  3318  		FullMethod: "/luci.resultdb.v1.ResultDB/GetInvocation",
  3319  	}
  3320  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3321  		return srv.(ResultDBServer).GetInvocation(ctx, req.(*GetInvocationRequest))
  3322  	}
  3323  	return interceptor(ctx, in, info, handler)
  3324  }
  3325  
  3326  func _ResultDB_GetTestResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3327  	in := new(GetTestResultRequest)
  3328  	if err := dec(in); err != nil {
  3329  		return nil, err
  3330  	}
  3331  	if interceptor == nil {
  3332  		return srv.(ResultDBServer).GetTestResult(ctx, in)
  3333  	}
  3334  	info := &grpc.UnaryServerInfo{
  3335  		Server:     srv,
  3336  		FullMethod: "/luci.resultdb.v1.ResultDB/GetTestResult",
  3337  	}
  3338  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3339  		return srv.(ResultDBServer).GetTestResult(ctx, req.(*GetTestResultRequest))
  3340  	}
  3341  	return interceptor(ctx, in, info, handler)
  3342  }
  3343  
  3344  func _ResultDB_ListTestResults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3345  	in := new(ListTestResultsRequest)
  3346  	if err := dec(in); err != nil {
  3347  		return nil, err
  3348  	}
  3349  	if interceptor == nil {
  3350  		return srv.(ResultDBServer).ListTestResults(ctx, in)
  3351  	}
  3352  	info := &grpc.UnaryServerInfo{
  3353  		Server:     srv,
  3354  		FullMethod: "/luci.resultdb.v1.ResultDB/ListTestResults",
  3355  	}
  3356  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3357  		return srv.(ResultDBServer).ListTestResults(ctx, req.(*ListTestResultsRequest))
  3358  	}
  3359  	return interceptor(ctx, in, info, handler)
  3360  }
  3361  
  3362  func _ResultDB_GetTestExoneration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3363  	in := new(GetTestExonerationRequest)
  3364  	if err := dec(in); err != nil {
  3365  		return nil, err
  3366  	}
  3367  	if interceptor == nil {
  3368  		return srv.(ResultDBServer).GetTestExoneration(ctx, in)
  3369  	}
  3370  	info := &grpc.UnaryServerInfo{
  3371  		Server:     srv,
  3372  		FullMethod: "/luci.resultdb.v1.ResultDB/GetTestExoneration",
  3373  	}
  3374  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3375  		return srv.(ResultDBServer).GetTestExoneration(ctx, req.(*GetTestExonerationRequest))
  3376  	}
  3377  	return interceptor(ctx, in, info, handler)
  3378  }
  3379  
  3380  func _ResultDB_ListTestExonerations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3381  	in := new(ListTestExonerationsRequest)
  3382  	if err := dec(in); err != nil {
  3383  		return nil, err
  3384  	}
  3385  	if interceptor == nil {
  3386  		return srv.(ResultDBServer).ListTestExonerations(ctx, in)
  3387  	}
  3388  	info := &grpc.UnaryServerInfo{
  3389  		Server:     srv,
  3390  		FullMethod: "/luci.resultdb.v1.ResultDB/ListTestExonerations",
  3391  	}
  3392  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3393  		return srv.(ResultDBServer).ListTestExonerations(ctx, req.(*ListTestExonerationsRequest))
  3394  	}
  3395  	return interceptor(ctx, in, info, handler)
  3396  }
  3397  
  3398  func _ResultDB_QueryTestResults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3399  	in := new(QueryTestResultsRequest)
  3400  	if err := dec(in); err != nil {
  3401  		return nil, err
  3402  	}
  3403  	if interceptor == nil {
  3404  		return srv.(ResultDBServer).QueryTestResults(ctx, in)
  3405  	}
  3406  	info := &grpc.UnaryServerInfo{
  3407  		Server:     srv,
  3408  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestResults",
  3409  	}
  3410  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3411  		return srv.(ResultDBServer).QueryTestResults(ctx, req.(*QueryTestResultsRequest))
  3412  	}
  3413  	return interceptor(ctx, in, info, handler)
  3414  }
  3415  
  3416  func _ResultDB_QueryTestExonerations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3417  	in := new(QueryTestExonerationsRequest)
  3418  	if err := dec(in); err != nil {
  3419  		return nil, err
  3420  	}
  3421  	if interceptor == nil {
  3422  		return srv.(ResultDBServer).QueryTestExonerations(ctx, in)
  3423  	}
  3424  	info := &grpc.UnaryServerInfo{
  3425  		Server:     srv,
  3426  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestExonerations",
  3427  	}
  3428  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3429  		return srv.(ResultDBServer).QueryTestExonerations(ctx, req.(*QueryTestExonerationsRequest))
  3430  	}
  3431  	return interceptor(ctx, in, info, handler)
  3432  }
  3433  
  3434  func _ResultDB_QueryTestResultStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3435  	in := new(QueryTestResultStatisticsRequest)
  3436  	if err := dec(in); err != nil {
  3437  		return nil, err
  3438  	}
  3439  	if interceptor == nil {
  3440  		return srv.(ResultDBServer).QueryTestResultStatistics(ctx, in)
  3441  	}
  3442  	info := &grpc.UnaryServerInfo{
  3443  		Server:     srv,
  3444  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestResultStatistics",
  3445  	}
  3446  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3447  		return srv.(ResultDBServer).QueryTestResultStatistics(ctx, req.(*QueryTestResultStatisticsRequest))
  3448  	}
  3449  	return interceptor(ctx, in, info, handler)
  3450  }
  3451  
  3452  func _ResultDB_QueryNewTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3453  	in := new(QueryNewTestVariantsRequest)
  3454  	if err := dec(in); err != nil {
  3455  		return nil, err
  3456  	}
  3457  	if interceptor == nil {
  3458  		return srv.(ResultDBServer).QueryNewTestVariants(ctx, in)
  3459  	}
  3460  	info := &grpc.UnaryServerInfo{
  3461  		Server:     srv,
  3462  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryNewTestVariants",
  3463  	}
  3464  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3465  		return srv.(ResultDBServer).QueryNewTestVariants(ctx, req.(*QueryNewTestVariantsRequest))
  3466  	}
  3467  	return interceptor(ctx, in, info, handler)
  3468  }
  3469  
  3470  func _ResultDB_GetArtifact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3471  	in := new(GetArtifactRequest)
  3472  	if err := dec(in); err != nil {
  3473  		return nil, err
  3474  	}
  3475  	if interceptor == nil {
  3476  		return srv.(ResultDBServer).GetArtifact(ctx, in)
  3477  	}
  3478  	info := &grpc.UnaryServerInfo{
  3479  		Server:     srv,
  3480  		FullMethod: "/luci.resultdb.v1.ResultDB/GetArtifact",
  3481  	}
  3482  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3483  		return srv.(ResultDBServer).GetArtifact(ctx, req.(*GetArtifactRequest))
  3484  	}
  3485  	return interceptor(ctx, in, info, handler)
  3486  }
  3487  
  3488  func _ResultDB_ListArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3489  	in := new(ListArtifactsRequest)
  3490  	if err := dec(in); err != nil {
  3491  		return nil, err
  3492  	}
  3493  	if interceptor == nil {
  3494  		return srv.(ResultDBServer).ListArtifacts(ctx, in)
  3495  	}
  3496  	info := &grpc.UnaryServerInfo{
  3497  		Server:     srv,
  3498  		FullMethod: "/luci.resultdb.v1.ResultDB/ListArtifacts",
  3499  	}
  3500  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3501  		return srv.(ResultDBServer).ListArtifacts(ctx, req.(*ListArtifactsRequest))
  3502  	}
  3503  	return interceptor(ctx, in, info, handler)
  3504  }
  3505  
  3506  func _ResultDB_QueryArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3507  	in := new(QueryArtifactsRequest)
  3508  	if err := dec(in); err != nil {
  3509  		return nil, err
  3510  	}
  3511  	if interceptor == nil {
  3512  		return srv.(ResultDBServer).QueryArtifacts(ctx, in)
  3513  	}
  3514  	info := &grpc.UnaryServerInfo{
  3515  		Server:     srv,
  3516  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryArtifacts",
  3517  	}
  3518  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3519  		return srv.(ResultDBServer).QueryArtifacts(ctx, req.(*QueryArtifactsRequest))
  3520  	}
  3521  	return interceptor(ctx, in, info, handler)
  3522  }
  3523  
  3524  func _ResultDB_QueryTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3525  	in := new(QueryTestVariantsRequest)
  3526  	if err := dec(in); err != nil {
  3527  		return nil, err
  3528  	}
  3529  	if interceptor == nil {
  3530  		return srv.(ResultDBServer).QueryTestVariants(ctx, in)
  3531  	}
  3532  	info := &grpc.UnaryServerInfo{
  3533  		Server:     srv,
  3534  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestVariants",
  3535  	}
  3536  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3537  		return srv.(ResultDBServer).QueryTestVariants(ctx, req.(*QueryTestVariantsRequest))
  3538  	}
  3539  	return interceptor(ctx, in, info, handler)
  3540  }
  3541  
  3542  func _ResultDB_BatchGetTestVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3543  	in := new(BatchGetTestVariantsRequest)
  3544  	if err := dec(in); err != nil {
  3545  		return nil, err
  3546  	}
  3547  	if interceptor == nil {
  3548  		return srv.(ResultDBServer).BatchGetTestVariants(ctx, in)
  3549  	}
  3550  	info := &grpc.UnaryServerInfo{
  3551  		Server:     srv,
  3552  		FullMethod: "/luci.resultdb.v1.ResultDB/BatchGetTestVariants",
  3553  	}
  3554  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3555  		return srv.(ResultDBServer).BatchGetTestVariants(ctx, req.(*BatchGetTestVariantsRequest))
  3556  	}
  3557  	return interceptor(ctx, in, info, handler)
  3558  }
  3559  
  3560  func _ResultDB_QueryTestMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3561  	in := new(QueryTestMetadataRequest)
  3562  	if err := dec(in); err != nil {
  3563  		return nil, err
  3564  	}
  3565  	if interceptor == nil {
  3566  		return srv.(ResultDBServer).QueryTestMetadata(ctx, in)
  3567  	}
  3568  	info := &grpc.UnaryServerInfo{
  3569  		Server:     srv,
  3570  		FullMethod: "/luci.resultdb.v1.ResultDB/QueryTestMetadata",
  3571  	}
  3572  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3573  		return srv.(ResultDBServer).QueryTestMetadata(ctx, req.(*QueryTestMetadataRequest))
  3574  	}
  3575  	return interceptor(ctx, in, info, handler)
  3576  }
  3577  
  3578  var _ResultDB_serviceDesc = grpc.ServiceDesc{
  3579  	ServiceName: "luci.resultdb.v1.ResultDB",
  3580  	HandlerType: (*ResultDBServer)(nil),
  3581  	Methods: []grpc.MethodDesc{
  3582  		{
  3583  			MethodName: "GetInvocation",
  3584  			Handler:    _ResultDB_GetInvocation_Handler,
  3585  		},
  3586  		{
  3587  			MethodName: "GetTestResult",
  3588  			Handler:    _ResultDB_GetTestResult_Handler,
  3589  		},
  3590  		{
  3591  			MethodName: "ListTestResults",
  3592  			Handler:    _ResultDB_ListTestResults_Handler,
  3593  		},
  3594  		{
  3595  			MethodName: "GetTestExoneration",
  3596  			Handler:    _ResultDB_GetTestExoneration_Handler,
  3597  		},
  3598  		{
  3599  			MethodName: "ListTestExonerations",
  3600  			Handler:    _ResultDB_ListTestExonerations_Handler,
  3601  		},
  3602  		{
  3603  			MethodName: "QueryTestResults",
  3604  			Handler:    _ResultDB_QueryTestResults_Handler,
  3605  		},
  3606  		{
  3607  			MethodName: "QueryTestExonerations",
  3608  			Handler:    _ResultDB_QueryTestExonerations_Handler,
  3609  		},
  3610  		{
  3611  			MethodName: "QueryTestResultStatistics",
  3612  			Handler:    _ResultDB_QueryTestResultStatistics_Handler,
  3613  		},
  3614  		{
  3615  			MethodName: "QueryNewTestVariants",
  3616  			Handler:    _ResultDB_QueryNewTestVariants_Handler,
  3617  		},
  3618  		{
  3619  			MethodName: "GetArtifact",
  3620  			Handler:    _ResultDB_GetArtifact_Handler,
  3621  		},
  3622  		{
  3623  			MethodName: "ListArtifacts",
  3624  			Handler:    _ResultDB_ListArtifacts_Handler,
  3625  		},
  3626  		{
  3627  			MethodName: "QueryArtifacts",
  3628  			Handler:    _ResultDB_QueryArtifacts_Handler,
  3629  		},
  3630  		{
  3631  			MethodName: "QueryTestVariants",
  3632  			Handler:    _ResultDB_QueryTestVariants_Handler,
  3633  		},
  3634  		{
  3635  			MethodName: "BatchGetTestVariants",
  3636  			Handler:    _ResultDB_BatchGetTestVariants_Handler,
  3637  		},
  3638  		{
  3639  			MethodName: "QueryTestMetadata",
  3640  			Handler:    _ResultDB_QueryTestMetadata_Handler,
  3641  		},
  3642  	},
  3643  	Streams:  []grpc.StreamDesc{},
  3644  	Metadata: "go.chromium.org/luci/resultdb/proto/v1/resultdb.proto",
  3645  }