1// Copyright 2019 Google LLC.
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
16// Code generated by protoc-gen-go. DO NOT EDIT.
17// versions:
18// 	protoc-gen-go v1.25.0
19// 	protoc        v3.13.0
20// source: google/devtools/remoteworkers/v1test2/command.proto
21
22package remoteworkers
23
24import (
25	reflect "reflect"
26	sync "sync"
27
28	proto "github.com/golang/protobuf/proto"
29	status "google.golang.org/genproto/googleapis/rpc/status"
30	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
31	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
32	anypb "google.golang.org/protobuf/types/known/anypb"
33	durationpb "google.golang.org/protobuf/types/known/durationpb"
34)
35
36const (
37	// Verify that this generated code is sufficiently up-to-date.
38	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
39	// Verify that runtime/protoimpl is sufficiently up-to-date.
40	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
41)
42
43// This is a compile-time assertion that a sufficiently up-to-date version
44// of the legacy proto package is being used.
45const _ = proto.ProtoPackageIsVersion4
46
47// Describes a shell-style task to execute, suitable for providing as the Bots
48// interface's `Lease.payload` field.
49type CommandTask struct {
50	state         protoimpl.MessageState
51	sizeCache     protoimpl.SizeCache
52	unknownFields protoimpl.UnknownFields
53
54	// The inputs to the task.
55	Inputs *CommandTask_Inputs `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"`
56	// The expected outputs from the task.
57	ExpectedOutputs *CommandTask_Outputs `protobuf:"bytes,4,opt,name=expected_outputs,json=expectedOutputs,proto3" json:"expected_outputs,omitempty"`
58	// The timeouts of this task.
59	Timeouts *CommandTask_Timeouts `protobuf:"bytes,5,opt,name=timeouts,proto3" json:"timeouts,omitempty"`
60}
61
62func (x *CommandTask) Reset() {
63	*x = CommandTask{}
64	if protoimpl.UnsafeEnabled {
65		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[0]
66		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
67		ms.StoreMessageInfo(mi)
68	}
69}
70
71func (x *CommandTask) String() string {
72	return protoimpl.X.MessageStringOf(x)
73}
74
75func (*CommandTask) ProtoMessage() {}
76
77func (x *CommandTask) ProtoReflect() protoreflect.Message {
78	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[0]
79	if protoimpl.UnsafeEnabled && x != nil {
80		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
81		if ms.LoadMessageInfo() == nil {
82			ms.StoreMessageInfo(mi)
83		}
84		return ms
85	}
86	return mi.MessageOf(x)
87}
88
89// Deprecated: Use CommandTask.ProtoReflect.Descriptor instead.
90func (*CommandTask) Descriptor() ([]byte, []int) {
91	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{0}
92}
93
94func (x *CommandTask) GetInputs() *CommandTask_Inputs {
95	if x != nil {
96		return x.Inputs
97	}
98	return nil
99}
100
101func (x *CommandTask) GetExpectedOutputs() *CommandTask_Outputs {
102	if x != nil {
103		return x.ExpectedOutputs
104	}
105	return nil
106}
107
108func (x *CommandTask) GetTimeouts() *CommandTask_Timeouts {
109	if x != nil {
110		return x.Timeouts
111	}
112	return nil
113}
114
115// DEPRECATED - use CommandResult instead.
116// Describes the actual outputs from the task.
117type CommandOutputs struct {
118	state         protoimpl.MessageState
119	sizeCache     protoimpl.SizeCache
120	unknownFields protoimpl.UnknownFields
121
122	// exit_code is only fully reliable if the status' code is OK. If the task
123	// exceeded its deadline or was cancelled, the process may still produce an
124	// exit code as it is cancelled, and this will be populated, but a successful
125	// (zero) is unlikely to be correct unless the status code is OK.
126	ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
127	// The output files. The blob referenced by the digest should contain
128	// one of the following (implementation-dependent):
129	//    * A marshalled DirectoryMetadata of the returned filesystem
130	//    * A LUCI-style .isolated file
131	Outputs *Digest `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"`
132}
133
134func (x *CommandOutputs) Reset() {
135	*x = CommandOutputs{}
136	if protoimpl.UnsafeEnabled {
137		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[1]
138		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
139		ms.StoreMessageInfo(mi)
140	}
141}
142
143func (x *CommandOutputs) String() string {
144	return protoimpl.X.MessageStringOf(x)
145}
146
147func (*CommandOutputs) ProtoMessage() {}
148
149func (x *CommandOutputs) ProtoReflect() protoreflect.Message {
150	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[1]
151	if protoimpl.UnsafeEnabled && x != nil {
152		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
153		if ms.LoadMessageInfo() == nil {
154			ms.StoreMessageInfo(mi)
155		}
156		return ms
157	}
158	return mi.MessageOf(x)
159}
160
161// Deprecated: Use CommandOutputs.ProtoReflect.Descriptor instead.
162func (*CommandOutputs) Descriptor() ([]byte, []int) {
163	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{1}
164}
165
166func (x *CommandOutputs) GetExitCode() int32 {
167	if x != nil {
168		return x.ExitCode
169	}
170	return 0
171}
172
173func (x *CommandOutputs) GetOutputs() *Digest {
174	if x != nil {
175		return x.Outputs
176	}
177	return nil
178}
179
180// DEPRECATED - use CommandResult instead.
181// Can be used as part of CompleteRequest.metadata, or are part of a more
182// sophisticated message.
183type CommandOverhead struct {
184	state         protoimpl.MessageState
185	sizeCache     protoimpl.SizeCache
186	unknownFields protoimpl.UnknownFields
187
188	// The elapsed time between calling Accept and Complete. The server will also
189	// have its own idea of what this should be, but this excludes the overhead of
190	// the RPCs and the bot response time.
191	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
192	// The amount of time *not* spent executing the command (ie
193	// uploading/downloading files).
194	Overhead *durationpb.Duration `protobuf:"bytes,2,opt,name=overhead,proto3" json:"overhead,omitempty"`
195}
196
197func (x *CommandOverhead) Reset() {
198	*x = CommandOverhead{}
199	if protoimpl.UnsafeEnabled {
200		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[2]
201		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
202		ms.StoreMessageInfo(mi)
203	}
204}
205
206func (x *CommandOverhead) String() string {
207	return protoimpl.X.MessageStringOf(x)
208}
209
210func (*CommandOverhead) ProtoMessage() {}
211
212func (x *CommandOverhead) ProtoReflect() protoreflect.Message {
213	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[2]
214	if protoimpl.UnsafeEnabled && x != nil {
215		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
216		if ms.LoadMessageInfo() == nil {
217			ms.StoreMessageInfo(mi)
218		}
219		return ms
220	}
221	return mi.MessageOf(x)
222}
223
224// Deprecated: Use CommandOverhead.ProtoReflect.Descriptor instead.
225func (*CommandOverhead) Descriptor() ([]byte, []int) {
226	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{2}
227}
228
229func (x *CommandOverhead) GetDuration() *durationpb.Duration {
230	if x != nil {
231		return x.Duration
232	}
233	return nil
234}
235
236func (x *CommandOverhead) GetOverhead() *durationpb.Duration {
237	if x != nil {
238		return x.Overhead
239	}
240	return nil
241}
242
243// All information about the execution of a command, suitable for providing as
244// the Bots interface's `Lease.result` field.
245type CommandResult struct {
246	state         protoimpl.MessageState
247	sizeCache     protoimpl.SizeCache
248	unknownFields protoimpl.UnknownFields
249
250	// An overall status for the command. For example, if the command timed out,
251	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for
252	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
253	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
254	// The exit code of the process. An exit code of "0" should only be trusted if
255	// `status` has a code of OK (otherwise it may simply be unset).
256	ExitCode int32 `protobuf:"varint,2,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
257	// The output files. The blob referenced by the digest should contain
258	// one of the following (implementation-dependent):
259	//    * A marshalled DirectoryMetadata of the returned filesystem
260	//    * A LUCI-style .isolated file
261	Outputs *Digest `protobuf:"bytes,3,opt,name=outputs,proto3" json:"outputs,omitempty"`
262	// The elapsed time between calling Accept and Complete. The server will also
263	// have its own idea of what this should be, but this excludes the overhead of
264	// the RPCs and the bot response time.
265	//
266	// Deprecated: Do not use.
267	Duration *durationpb.Duration `protobuf:"bytes,4,opt,name=duration,proto3" json:"duration,omitempty"`
268	// The amount of time *not* spent executing the command (ie
269	// uploading/downloading files).
270	//
271	// Deprecated: Do not use.
272	Overhead *durationpb.Duration `protobuf:"bytes,5,opt,name=overhead,proto3" json:"overhead,omitempty"`
273	// Implementation-dependent metadata about the task. Both servers and bots
274	// may define messages which can be encoded here; bots are free to provide
275	// metadata in multiple formats, and servers are free to choose one or more
276	// of the values to process and ignore others. In particular, it is *not*
277	// considered an error for the bot to provide the server with a field that it
278	// doesn't know about.
279	Metadata []*anypb.Any `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty"`
280}
281
282func (x *CommandResult) Reset() {
283	*x = CommandResult{}
284	if protoimpl.UnsafeEnabled {
285		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[3]
286		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
287		ms.StoreMessageInfo(mi)
288	}
289}
290
291func (x *CommandResult) String() string {
292	return protoimpl.X.MessageStringOf(x)
293}
294
295func (*CommandResult) ProtoMessage() {}
296
297func (x *CommandResult) ProtoReflect() protoreflect.Message {
298	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[3]
299	if protoimpl.UnsafeEnabled && x != nil {
300		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
301		if ms.LoadMessageInfo() == nil {
302			ms.StoreMessageInfo(mi)
303		}
304		return ms
305	}
306	return mi.MessageOf(x)
307}
308
309// Deprecated: Use CommandResult.ProtoReflect.Descriptor instead.
310func (*CommandResult) Descriptor() ([]byte, []int) {
311	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{3}
312}
313
314func (x *CommandResult) GetStatus() *status.Status {
315	if x != nil {
316		return x.Status
317	}
318	return nil
319}
320
321func (x *CommandResult) GetExitCode() int32 {
322	if x != nil {
323		return x.ExitCode
324	}
325	return 0
326}
327
328func (x *CommandResult) GetOutputs() *Digest {
329	if x != nil {
330		return x.Outputs
331	}
332	return nil
333}
334
335// Deprecated: Do not use.
336func (x *CommandResult) GetDuration() *durationpb.Duration {
337	if x != nil {
338		return x.Duration
339	}
340	return nil
341}
342
343// Deprecated: Do not use.
344func (x *CommandResult) GetOverhead() *durationpb.Duration {
345	if x != nil {
346		return x.Overhead
347	}
348	return nil
349}
350
351func (x *CommandResult) GetMetadata() []*anypb.Any {
352	if x != nil {
353		return x.Metadata
354	}
355	return nil
356}
357
358// The metadata for a file. Similar to the equivalent message in the Remote
359// Execution API.
360type FileMetadata struct {
361	state         protoimpl.MessageState
362	sizeCache     protoimpl.SizeCache
363	unknownFields protoimpl.UnknownFields
364
365	// The path of this file. If this message is part of the
366	// CommandOutputs.outputs fields, the path is relative to the execution root
367	// and must correspond to an entry in CommandTask.outputs.files. If this
368	// message is part of a Directory message, then the path is relative to the
369	// root of that directory. All paths MUST be delimited by forward slashes.
370	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
371	// A pointer to the contents of the file. The method by which a client
372	// retrieves the contents from a CAS system is not defined here.
373	Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
374	// If the file is small enough, its contents may also or alternatively be
375	// listed here.
376	Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3" json:"contents,omitempty"`
377	// Properties of the file
378	IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"`
379}
380
381func (x *FileMetadata) Reset() {
382	*x = FileMetadata{}
383	if protoimpl.UnsafeEnabled {
384		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[4]
385		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
386		ms.StoreMessageInfo(mi)
387	}
388}
389
390func (x *FileMetadata) String() string {
391	return protoimpl.X.MessageStringOf(x)
392}
393
394func (*FileMetadata) ProtoMessage() {}
395
396func (x *FileMetadata) ProtoReflect() protoreflect.Message {
397	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[4]
398	if protoimpl.UnsafeEnabled && x != nil {
399		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
400		if ms.LoadMessageInfo() == nil {
401			ms.StoreMessageInfo(mi)
402		}
403		return ms
404	}
405	return mi.MessageOf(x)
406}
407
408// Deprecated: Use FileMetadata.ProtoReflect.Descriptor instead.
409func (*FileMetadata) Descriptor() ([]byte, []int) {
410	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{4}
411}
412
413func (x *FileMetadata) GetPath() string {
414	if x != nil {
415		return x.Path
416	}
417	return ""
418}
419
420func (x *FileMetadata) GetDigest() *Digest {
421	if x != nil {
422		return x.Digest
423	}
424	return nil
425}
426
427func (x *FileMetadata) GetContents() []byte {
428	if x != nil {
429		return x.Contents
430	}
431	return nil
432}
433
434func (x *FileMetadata) GetIsExecutable() bool {
435	if x != nil {
436		return x.IsExecutable
437	}
438	return false
439}
440
441// The metadata for a directory. Similar to the equivalent message in the Remote
442// Execution API.
443type DirectoryMetadata struct {
444	state         protoimpl.MessageState
445	sizeCache     protoimpl.SizeCache
446	unknownFields protoimpl.UnknownFields
447
448	// The path of the directory, as in [FileMetadata.path][google.devtools.remoteworkers.v1test2.FileMetadata.path].
449	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
450	// A pointer to the contents of the directory, in the form of a marshalled
451	// Directory message.
452	Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
453}
454
455func (x *DirectoryMetadata) Reset() {
456	*x = DirectoryMetadata{}
457	if protoimpl.UnsafeEnabled {
458		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[5]
459		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
460		ms.StoreMessageInfo(mi)
461	}
462}
463
464func (x *DirectoryMetadata) String() string {
465	return protoimpl.X.MessageStringOf(x)
466}
467
468func (*DirectoryMetadata) ProtoMessage() {}
469
470func (x *DirectoryMetadata) ProtoReflect() protoreflect.Message {
471	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[5]
472	if protoimpl.UnsafeEnabled && x != nil {
473		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
474		if ms.LoadMessageInfo() == nil {
475			ms.StoreMessageInfo(mi)
476		}
477		return ms
478	}
479	return mi.MessageOf(x)
480}
481
482// Deprecated: Use DirectoryMetadata.ProtoReflect.Descriptor instead.
483func (*DirectoryMetadata) Descriptor() ([]byte, []int) {
484	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{5}
485}
486
487func (x *DirectoryMetadata) GetPath() string {
488	if x != nil {
489		return x.Path
490	}
491	return ""
492}
493
494func (x *DirectoryMetadata) GetDigest() *Digest {
495	if x != nil {
496		return x.Digest
497	}
498	return nil
499}
500
501// The CommandTask and CommandResult messages assume the existence of a service
502// that can serve blobs of content, identified by a hash and size known as a
503// "digest." The method by which these blobs may be retrieved is not specified
504// here, but a model implementation is in the Remote Execution API's
505// "ContentAddressibleStorage" interface.
506//
507// In the context of the RWAPI, a Digest will virtually always refer to the
508// contents of a file or a directory. The latter is represented by the
509// byte-encoded Directory message.
510type Digest struct {
511	state         protoimpl.MessageState
512	sizeCache     protoimpl.SizeCache
513	unknownFields protoimpl.UnknownFields
514
515	// A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c])
516	// using an implementation-defined hash algorithm (eg SHA-256).
517	Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
518	// The size of the contents. While this is not strictly required as part of an
519	// identifier (after all, any given hash will have exactly one canonical
520	// size), it's useful in almost all cases when one might want to send or
521	// retrieve blobs of content and is included here for this reason.
522	SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
523}
524
525func (x *Digest) Reset() {
526	*x = Digest{}
527	if protoimpl.UnsafeEnabled {
528		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[6]
529		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
530		ms.StoreMessageInfo(mi)
531	}
532}
533
534func (x *Digest) String() string {
535	return protoimpl.X.MessageStringOf(x)
536}
537
538func (*Digest) ProtoMessage() {}
539
540func (x *Digest) ProtoReflect() protoreflect.Message {
541	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[6]
542	if protoimpl.UnsafeEnabled && x != nil {
543		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
544		if ms.LoadMessageInfo() == nil {
545			ms.StoreMessageInfo(mi)
546		}
547		return ms
548	}
549	return mi.MessageOf(x)
550}
551
552// Deprecated: Use Digest.ProtoReflect.Descriptor instead.
553func (*Digest) Descriptor() ([]byte, []int) {
554	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{6}
555}
556
557func (x *Digest) GetHash() string {
558	if x != nil {
559		return x.Hash
560	}
561	return ""
562}
563
564func (x *Digest) GetSizeBytes() int64 {
565	if x != nil {
566		return x.SizeBytes
567	}
568	return 0
569}
570
571// Describes a blob of binary content with its digest.
572type Blob struct {
573	state         protoimpl.MessageState
574	sizeCache     protoimpl.SizeCache
575	unknownFields protoimpl.UnknownFields
576
577	// The digest of the blob. This should be verified by the receiver.
578	Digest *Digest `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
579	// The contents of the blob.
580	Contents []byte `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"`
581}
582
583func (x *Blob) Reset() {
584	*x = Blob{}
585	if protoimpl.UnsafeEnabled {
586		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[7]
587		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
588		ms.StoreMessageInfo(mi)
589	}
590}
591
592func (x *Blob) String() string {
593	return protoimpl.X.MessageStringOf(x)
594}
595
596func (*Blob) ProtoMessage() {}
597
598func (x *Blob) ProtoReflect() protoreflect.Message {
599	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[7]
600	if protoimpl.UnsafeEnabled && x != nil {
601		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
602		if ms.LoadMessageInfo() == nil {
603			ms.StoreMessageInfo(mi)
604		}
605		return ms
606	}
607	return mi.MessageOf(x)
608}
609
610// Deprecated: Use Blob.ProtoReflect.Descriptor instead.
611func (*Blob) Descriptor() ([]byte, []int) {
612	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{7}
613}
614
615func (x *Blob) GetDigest() *Digest {
616	if x != nil {
617		return x.Digest
618	}
619	return nil
620}
621
622func (x *Blob) GetContents() []byte {
623	if x != nil {
624		return x.Contents
625	}
626	return nil
627}
628
629// The contents of a directory. Similar to the equivalent message in the Remote
630// Execution API.
631type Directory struct {
632	state         protoimpl.MessageState
633	sizeCache     protoimpl.SizeCache
634	unknownFields protoimpl.UnknownFields
635
636	// The files in this directory
637	Files []*FileMetadata `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
638	// Any subdirectories
639	Directories []*DirectoryMetadata `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"`
640}
641
642func (x *Directory) Reset() {
643	*x = Directory{}
644	if protoimpl.UnsafeEnabled {
645		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[8]
646		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
647		ms.StoreMessageInfo(mi)
648	}
649}
650
651func (x *Directory) String() string {
652	return protoimpl.X.MessageStringOf(x)
653}
654
655func (*Directory) ProtoMessage() {}
656
657func (x *Directory) ProtoReflect() protoreflect.Message {
658	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[8]
659	if protoimpl.UnsafeEnabled && x != nil {
660		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
661		if ms.LoadMessageInfo() == nil {
662			ms.StoreMessageInfo(mi)
663		}
664		return ms
665	}
666	return mi.MessageOf(x)
667}
668
669// Deprecated: Use Directory.ProtoReflect.Descriptor instead.
670func (*Directory) Descriptor() ([]byte, []int) {
671	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{8}
672}
673
674func (x *Directory) GetFiles() []*FileMetadata {
675	if x != nil {
676		return x.Files
677	}
678	return nil
679}
680
681func (x *Directory) GetDirectories() []*DirectoryMetadata {
682	if x != nil {
683		return x.Directories
684	}
685	return nil
686}
687
688// Describes the inputs to a shell-style task.
689type CommandTask_Inputs struct {
690	state         protoimpl.MessageState
691	sizeCache     protoimpl.SizeCache
692	unknownFields protoimpl.UnknownFields
693
694	// The command itself to run (e.g., argv).
695	//
696	// This field should be passed directly to the underlying operating system,
697	// and so it must be sensible to that operating system. For example, on
698	// Windows, the first argument might be "C:\Windows\System32\ping.exe" -
699	// that is, using drive letters and backslashes. A command for a *nix
700	// system, on the other hand, would use forward slashes.
701	//
702	// All other fields in the RWAPI must consistently use forward slashes,
703	// since those fields may be interpretted by both the service and the bot.
704	Arguments []string `protobuf:"bytes,1,rep,name=arguments,proto3" json:"arguments,omitempty"`
705	// The input filesystem to be set up prior to the task beginning. The
706	// contents should be a repeated set of FileMetadata messages though other
707	// formats are allowed if better for the implementation (eg, a LUCI-style
708	// .isolated file).
709	//
710	// This field is repeated since implementations might want to cache the
711	// metadata, in which case it may be useful to break up portions of the
712	// filesystem that change frequently (eg, specific input files) from those
713	// that don't (eg, standard header files).
714	Files []*Digest `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"`
715	// Inline contents for blobs expected to be needed by the bot to execute the
716	// task. For example, contents of entries in `files` or blobs that are
717	// indirectly referenced by an entry there.
718	//
719	// The bot should check against this list before downloading required task
720	// inputs to reduce the number of communications between itself and the
721	// remote CAS server.
722	InlineBlobs []*Blob `protobuf:"bytes,4,rep,name=inline_blobs,json=inlineBlobs,proto3" json:"inline_blobs,omitempty"`
723	// All environment variables required by the task.
724	EnvironmentVariables []*CommandTask_Inputs_EnvironmentVariable `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"`
725	// Directory from which a command is executed. It is a relative directory
726	// with respect to the bot's working directory (i.e., "./"). If it is
727	// non-empty, then it must exist under "./". Otherwise, "./" will be used.
728	WorkingDirectory string `protobuf:"bytes,5,opt,name=working_directory,json=workingDirectory,proto3" json:"working_directory,omitempty"`
729}
730
731func (x *CommandTask_Inputs) Reset() {
732	*x = CommandTask_Inputs{}
733	if protoimpl.UnsafeEnabled {
734		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[9]
735		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
736		ms.StoreMessageInfo(mi)
737	}
738}
739
740func (x *CommandTask_Inputs) String() string {
741	return protoimpl.X.MessageStringOf(x)
742}
743
744func (*CommandTask_Inputs) ProtoMessage() {}
745
746func (x *CommandTask_Inputs) ProtoReflect() protoreflect.Message {
747	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[9]
748	if protoimpl.UnsafeEnabled && x != nil {
749		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
750		if ms.LoadMessageInfo() == nil {
751			ms.StoreMessageInfo(mi)
752		}
753		return ms
754	}
755	return mi.MessageOf(x)
756}
757
758// Deprecated: Use CommandTask_Inputs.ProtoReflect.Descriptor instead.
759func (*CommandTask_Inputs) Descriptor() ([]byte, []int) {
760	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{0, 0}
761}
762
763func (x *CommandTask_Inputs) GetArguments() []string {
764	if x != nil {
765		return x.Arguments
766	}
767	return nil
768}
769
770func (x *CommandTask_Inputs) GetFiles() []*Digest {
771	if x != nil {
772		return x.Files
773	}
774	return nil
775}
776
777func (x *CommandTask_Inputs) GetInlineBlobs() []*Blob {
778	if x != nil {
779		return x.InlineBlobs
780	}
781	return nil
782}
783
784func (x *CommandTask_Inputs) GetEnvironmentVariables() []*CommandTask_Inputs_EnvironmentVariable {
785	if x != nil {
786		return x.EnvironmentVariables
787	}
788	return nil
789}
790
791func (x *CommandTask_Inputs) GetWorkingDirectory() string {
792	if x != nil {
793		return x.WorkingDirectory
794	}
795	return ""
796}
797
798// Describes the expected outputs of the command.
799type CommandTask_Outputs struct {
800	state         protoimpl.MessageState
801	sizeCache     protoimpl.SizeCache
802	unknownFields protoimpl.UnknownFields
803
804	// A list of expected files, relative to the execution root. All paths
805	// MUST be delimited by forward slashes.
806	Files []string `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
807	// A list of expected directories, relative to the execution root. All paths
808	// MUST be delimited by forward slashes.
809	Directories []string `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"`
810	// The destination to which any stdout should be sent. The method by which
811	// the bot should send the stream contents to that destination is not
812	// defined in this API. As examples, the destination could be a file
813	// referenced in the `files` field in this message, or it could be a URI
814	// that must be written via the ByteStream API.
815	StdoutDestination string `protobuf:"bytes,3,opt,name=stdout_destination,json=stdoutDestination,proto3" json:"stdout_destination,omitempty"`
816	// The destination to which any stderr should be sent. The method by which
817	// the bot should send the stream contents to that destination is not
818	// defined in this API. As examples, the destination could be a file
819	// referenced in the `files` field in this message, or it could be a URI
820	// that must be written via the ByteStream API.
821	StderrDestination string `protobuf:"bytes,4,opt,name=stderr_destination,json=stderrDestination,proto3" json:"stderr_destination,omitempty"`
822}
823
824func (x *CommandTask_Outputs) Reset() {
825	*x = CommandTask_Outputs{}
826	if protoimpl.UnsafeEnabled {
827		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[10]
828		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
829		ms.StoreMessageInfo(mi)
830	}
831}
832
833func (x *CommandTask_Outputs) String() string {
834	return protoimpl.X.MessageStringOf(x)
835}
836
837func (*CommandTask_Outputs) ProtoMessage() {}
838
839func (x *CommandTask_Outputs) ProtoReflect() protoreflect.Message {
840	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[10]
841	if protoimpl.UnsafeEnabled && x != nil {
842		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
843		if ms.LoadMessageInfo() == nil {
844			ms.StoreMessageInfo(mi)
845		}
846		return ms
847	}
848	return mi.MessageOf(x)
849}
850
851// Deprecated: Use CommandTask_Outputs.ProtoReflect.Descriptor instead.
852func (*CommandTask_Outputs) Descriptor() ([]byte, []int) {
853	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{0, 1}
854}
855
856func (x *CommandTask_Outputs) GetFiles() []string {
857	if x != nil {
858		return x.Files
859	}
860	return nil
861}
862
863func (x *CommandTask_Outputs) GetDirectories() []string {
864	if x != nil {
865		return x.Directories
866	}
867	return nil
868}
869
870func (x *CommandTask_Outputs) GetStdoutDestination() string {
871	if x != nil {
872		return x.StdoutDestination
873	}
874	return ""
875}
876
877func (x *CommandTask_Outputs) GetStderrDestination() string {
878	if x != nil {
879		return x.StderrDestination
880	}
881	return ""
882}
883
884// Describes the timeouts associated with this task.
885type CommandTask_Timeouts struct {
886	state         protoimpl.MessageState
887	sizeCache     protoimpl.SizeCache
888	unknownFields protoimpl.UnknownFields
889
890	// This specifies the maximum time that the task can run, excluding the
891	// time required to download inputs or upload outputs. That is, the worker
892	// will terminate the task if it runs longer than this.
893	Execution *durationpb.Duration `protobuf:"bytes,1,opt,name=execution,proto3" json:"execution,omitempty"`
894	// This specifies the maximum amount of time the task can be idle - that is,
895	// go without generating some output in either stdout or stderr. If the
896	// process is silent for more than the specified time, the worker will
897	// terminate the task.
898	Idle *durationpb.Duration `protobuf:"bytes,2,opt,name=idle,proto3" json:"idle,omitempty"`
899	// If the execution or IO timeouts are exceeded, the worker will try to
900	// gracefully terminate the task and return any existing logs. However,
901	// tasks may be hard-frozen in which case this process will fail. This
902	// timeout specifies how long to wait for a terminated task to shut down
903	// gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.
904	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
905	Shutdown *durationpb.Duration `protobuf:"bytes,3,opt,name=shutdown,proto3" json:"shutdown,omitempty"`
906}
907
908func (x *CommandTask_Timeouts) Reset() {
909	*x = CommandTask_Timeouts{}
910	if protoimpl.UnsafeEnabled {
911		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[11]
912		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
913		ms.StoreMessageInfo(mi)
914	}
915}
916
917func (x *CommandTask_Timeouts) String() string {
918	return protoimpl.X.MessageStringOf(x)
919}
920
921func (*CommandTask_Timeouts) ProtoMessage() {}
922
923func (x *CommandTask_Timeouts) ProtoReflect() protoreflect.Message {
924	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[11]
925	if protoimpl.UnsafeEnabled && x != nil {
926		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
927		if ms.LoadMessageInfo() == nil {
928			ms.StoreMessageInfo(mi)
929		}
930		return ms
931	}
932	return mi.MessageOf(x)
933}
934
935// Deprecated: Use CommandTask_Timeouts.ProtoReflect.Descriptor instead.
936func (*CommandTask_Timeouts) Descriptor() ([]byte, []int) {
937	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{0, 2}
938}
939
940func (x *CommandTask_Timeouts) GetExecution() *durationpb.Duration {
941	if x != nil {
942		return x.Execution
943	}
944	return nil
945}
946
947func (x *CommandTask_Timeouts) GetIdle() *durationpb.Duration {
948	if x != nil {
949		return x.Idle
950	}
951	return nil
952}
953
954func (x *CommandTask_Timeouts) GetShutdown() *durationpb.Duration {
955	if x != nil {
956		return x.Shutdown
957	}
958	return nil
959}
960
961// An environment variable required by this task.
962type CommandTask_Inputs_EnvironmentVariable struct {
963	state         protoimpl.MessageState
964	sizeCache     protoimpl.SizeCache
965	unknownFields protoimpl.UnknownFields
966
967	// The envvar name.
968	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
969	// The envvar value.
970	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
971}
972
973func (x *CommandTask_Inputs_EnvironmentVariable) Reset() {
974	*x = CommandTask_Inputs_EnvironmentVariable{}
975	if protoimpl.UnsafeEnabled {
976		mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[12]
977		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
978		ms.StoreMessageInfo(mi)
979	}
980}
981
982func (x *CommandTask_Inputs_EnvironmentVariable) String() string {
983	return protoimpl.X.MessageStringOf(x)
984}
985
986func (*CommandTask_Inputs_EnvironmentVariable) ProtoMessage() {}
987
988func (x *CommandTask_Inputs_EnvironmentVariable) ProtoReflect() protoreflect.Message {
989	mi := &file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[12]
990	if protoimpl.UnsafeEnabled && x != nil {
991		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
992		if ms.LoadMessageInfo() == nil {
993			ms.StoreMessageInfo(mi)
994		}
995		return ms
996	}
997	return mi.MessageOf(x)
998}
999
1000// Deprecated: Use CommandTask_Inputs_EnvironmentVariable.ProtoReflect.Descriptor instead.
1001func (*CommandTask_Inputs_EnvironmentVariable) Descriptor() ([]byte, []int) {
1002	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP(), []int{0, 0, 0}
1003}
1004
1005func (x *CommandTask_Inputs_EnvironmentVariable) GetName() string {
1006	if x != nil {
1007		return x.Name
1008	}
1009	return ""
1010}
1011
1012func (x *CommandTask_Inputs_EnvironmentVariable) GetValue() string {
1013	if x != nil {
1014		return x.Value
1015	}
1016	return ""
1017}
1018
1019var File_google_devtools_remoteworkers_v1test2_command_proto protoreflect.FileDescriptor
1020
1021var file_google_devtools_remoteworkers_v1test2_command_proto_rawDesc = []byte{
1022	0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
1023	0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f,
1024	0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e,
1025	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65,
1026	0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72,
1027	0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x1a, 0x19, 0x67, 0x6f,
1028	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e,
1029	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
1030	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
1031	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
1032	0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1033	0x22, 0x9f, 0x08, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b,
1034	0x12, 0x51, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
1035	0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f,
1036	0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73,
1037	0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
1038	0x54, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70,
1039	0x75, 0x74, 0x73, 0x12, 0x65, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f,
1040	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
1041	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e,
1042	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31,
1043	0x74, 0x65, 0x73, 0x74, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x73,
1044	0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63,
1045	0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x08, 0x74, 0x69,
1046	0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67,
1047	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72,
1048	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74,
1049	0x65, 0x73, 0x74, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b,
1050	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x6f,
1051	0x75, 0x74, 0x73, 0x1a, 0xae, 0x03, 0x0a, 0x06, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1c,
1052	0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
1053	0x09, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x05,
1054	0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f,
1055	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65,
1056	0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65,
1057	0x73, 0x74, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65,
1058	0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x62,
1059	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1060	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
1061	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2e,
1062	0x42, 0x6c, 0x6f, 0x62, 0x52, 0x0b, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x6c, 0x6f, 0x62,
1063	0x73, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
1064	0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
1065	0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f,
1066	0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72,
1067	0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
1068	0x64, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x2e, 0x45, 0x6e, 0x76,
1069	0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
1070	0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72,
1071	0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
1072	0x67, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
1073	0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
1074	0x6f, 0x72, 0x79, 0x1a, 0x3f, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
1075	0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
1076	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
1077	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
1078	0x61, 0x6c, 0x75, 0x65, 0x1a, 0x9f, 0x01, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73,
1079	0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
1080	0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
1081	0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x72,
1082	0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x74, 0x64, 0x6f,
1083	0x75, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
1084	0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x44, 0x65, 0x73, 0x74,
1085	0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x74, 0x64, 0x65, 0x72,
1086	0x72, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
1087	0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x44, 0x65, 0x73, 0x74, 0x69,
1088	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xa9, 0x01, 0x0a, 0x08, 0x54, 0x69, 0x6d, 0x65, 0x6f,
1089	0x75, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
1090	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1091	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
1092	0x6e, 0x52, 0x09, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x04,
1093	0x69, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
1094	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
1095	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x69, 0x64, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x73,
1096	0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
1097	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
1098	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f,
1099	0x77, 0x6e, 0x22, 0x76, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x75, 0x74,
1100	0x70, 0x75, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64,
1101	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64,
1102	0x65, 0x12, 0x47, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,
1103	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74,
1104	0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65,
1105	0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73,
1106	0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x7f, 0x0a, 0x0f, 0x43, 0x6f,
1107	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a,
1108	0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
1109	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
1110	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61,
1111	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
1112	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1113	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
1114	0x6e, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x22, 0xc9, 0x02, 0x0a, 0x0d,
1115	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a,
1116	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
1117	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
1118	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69,
1119	0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78,
1120	0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
1121	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1122	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
1123	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x2e,
1124	0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12,
1125	0x39, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
1126	0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1127	0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01,
1128	0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x08, 0x6f, 0x76,
1129	0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
1130	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
1131	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6f, 0x76, 0x65,
1132	0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
1133	0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1134	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d,
1135	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65,
1136	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
1137	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x06,
1138	0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
1139	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72,
1140	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74,
1141	0x65, 0x73, 0x74, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x64, 0x69, 0x67,
1142	0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18,
1143	0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12,
1144	0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65,
1145	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74,
1146	0x61, 0x62, 0x6c, 0x65, 0x22, 0x6e, 0x0a, 0x11, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72,
1147	0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
1148	0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a,
1149	0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
1150	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e,
1151	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31,
1152	0x74, 0x65, 0x73, 0x74, 0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x64, 0x69,
1153	0x67, 0x65, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12,
1154	0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61,
1155	0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
1156	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65,
1157	0x73, 0x22, 0x69, 0x0a, 0x04, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x45, 0x0a, 0x06, 0x64, 0x69, 0x67,
1158	0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
1159	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f,
1160	0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74,
1161	0x32, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
1162	0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,
1163	0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xb2, 0x01, 0x0a,
1164	0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x49, 0x0a, 0x05, 0x66, 0x69,
1165	0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
1166	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f,
1167	0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74,
1168	0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x05,
1169	0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
1170	0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f,
1171	0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d,
1172	0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73,
1173	0x74, 0x32, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61,
1174	0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65,
1175	0x73, 0x42, 0xc5, 0x01, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1176	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
1177	0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x42,
1178	0x15, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x6f,
1179	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x01, 0x5a, 0x52, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1180	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70,
1181	0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f,
1182	0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77,
1183	0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x76, 0x31, 0x74, 0x65, 0x73, 0x74, 0x32, 0x3b, 0x72,
1184	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0xa2, 0x02, 0x02, 0x52,
1185	0x57, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x54, 0x6f,
1186	0x6f, 0x6c, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72,
1187	0x73, 0x2e, 0x56, 0x31, 0x54, 0x65, 0x73, 0x74, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1188	0x33,
1189}
1190
1191var (
1192	file_google_devtools_remoteworkers_v1test2_command_proto_rawDescOnce sync.Once
1193	file_google_devtools_remoteworkers_v1test2_command_proto_rawDescData = file_google_devtools_remoteworkers_v1test2_command_proto_rawDesc
1194)
1195
1196func file_google_devtools_remoteworkers_v1test2_command_proto_rawDescGZIP() []byte {
1197	file_google_devtools_remoteworkers_v1test2_command_proto_rawDescOnce.Do(func() {
1198		file_google_devtools_remoteworkers_v1test2_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_devtools_remoteworkers_v1test2_command_proto_rawDescData)
1199	})
1200	return file_google_devtools_remoteworkers_v1test2_command_proto_rawDescData
1201}
1202
1203var file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
1204var file_google_devtools_remoteworkers_v1test2_command_proto_goTypes = []interface{}{
1205	(*CommandTask)(nil),                            // 0: google.devtools.remoteworkers.v1test2.CommandTask
1206	(*CommandOutputs)(nil),                         // 1: google.devtools.remoteworkers.v1test2.CommandOutputs
1207	(*CommandOverhead)(nil),                        // 2: google.devtools.remoteworkers.v1test2.CommandOverhead
1208	(*CommandResult)(nil),                          // 3: google.devtools.remoteworkers.v1test2.CommandResult
1209	(*FileMetadata)(nil),                           // 4: google.devtools.remoteworkers.v1test2.FileMetadata
1210	(*DirectoryMetadata)(nil),                      // 5: google.devtools.remoteworkers.v1test2.DirectoryMetadata
1211	(*Digest)(nil),                                 // 6: google.devtools.remoteworkers.v1test2.Digest
1212	(*Blob)(nil),                                   // 7: google.devtools.remoteworkers.v1test2.Blob
1213	(*Directory)(nil),                              // 8: google.devtools.remoteworkers.v1test2.Directory
1214	(*CommandTask_Inputs)(nil),                     // 9: google.devtools.remoteworkers.v1test2.CommandTask.Inputs
1215	(*CommandTask_Outputs)(nil),                    // 10: google.devtools.remoteworkers.v1test2.CommandTask.Outputs
1216	(*CommandTask_Timeouts)(nil),                   // 11: google.devtools.remoteworkers.v1test2.CommandTask.Timeouts
1217	(*CommandTask_Inputs_EnvironmentVariable)(nil), // 12: google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable
1218	(*durationpb.Duration)(nil),                    // 13: google.protobuf.Duration
1219	(*status.Status)(nil),                          // 14: google.rpc.Status
1220	(*anypb.Any)(nil),                              // 15: google.protobuf.Any
1221}
1222var file_google_devtools_remoteworkers_v1test2_command_proto_depIdxs = []int32{
1223	9,  // 0: google.devtools.remoteworkers.v1test2.CommandTask.inputs:type_name -> google.devtools.remoteworkers.v1test2.CommandTask.Inputs
1224	10, // 1: google.devtools.remoteworkers.v1test2.CommandTask.expected_outputs:type_name -> google.devtools.remoteworkers.v1test2.CommandTask.Outputs
1225	11, // 2: google.devtools.remoteworkers.v1test2.CommandTask.timeouts:type_name -> google.devtools.remoteworkers.v1test2.CommandTask.Timeouts
1226	6,  // 3: google.devtools.remoteworkers.v1test2.CommandOutputs.outputs:type_name -> google.devtools.remoteworkers.v1test2.Digest
1227	13, // 4: google.devtools.remoteworkers.v1test2.CommandOverhead.duration:type_name -> google.protobuf.Duration
1228	13, // 5: google.devtools.remoteworkers.v1test2.CommandOverhead.overhead:type_name -> google.protobuf.Duration
1229	14, // 6: google.devtools.remoteworkers.v1test2.CommandResult.status:type_name -> google.rpc.Status
1230	6,  // 7: google.devtools.remoteworkers.v1test2.CommandResult.outputs:type_name -> google.devtools.remoteworkers.v1test2.Digest
1231	13, // 8: google.devtools.remoteworkers.v1test2.CommandResult.duration:type_name -> google.protobuf.Duration
1232	13, // 9: google.devtools.remoteworkers.v1test2.CommandResult.overhead:type_name -> google.protobuf.Duration
1233	15, // 10: google.devtools.remoteworkers.v1test2.CommandResult.metadata:type_name -> google.protobuf.Any
1234	6,  // 11: google.devtools.remoteworkers.v1test2.FileMetadata.digest:type_name -> google.devtools.remoteworkers.v1test2.Digest
1235	6,  // 12: google.devtools.remoteworkers.v1test2.DirectoryMetadata.digest:type_name -> google.devtools.remoteworkers.v1test2.Digest
1236	6,  // 13: google.devtools.remoteworkers.v1test2.Blob.digest:type_name -> google.devtools.remoteworkers.v1test2.Digest
1237	4,  // 14: google.devtools.remoteworkers.v1test2.Directory.files:type_name -> google.devtools.remoteworkers.v1test2.FileMetadata
1238	5,  // 15: google.devtools.remoteworkers.v1test2.Directory.directories:type_name -> google.devtools.remoteworkers.v1test2.DirectoryMetadata
1239	6,  // 16: google.devtools.remoteworkers.v1test2.CommandTask.Inputs.files:type_name -> google.devtools.remoteworkers.v1test2.Digest
1240	7,  // 17: google.devtools.remoteworkers.v1test2.CommandTask.Inputs.inline_blobs:type_name -> google.devtools.remoteworkers.v1test2.Blob
1241	12, // 18: google.devtools.remoteworkers.v1test2.CommandTask.Inputs.environment_variables:type_name -> google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable
1242	13, // 19: google.devtools.remoteworkers.v1test2.CommandTask.Timeouts.execution:type_name -> google.protobuf.Duration
1243	13, // 20: google.devtools.remoteworkers.v1test2.CommandTask.Timeouts.idle:type_name -> google.protobuf.Duration
1244	13, // 21: google.devtools.remoteworkers.v1test2.CommandTask.Timeouts.shutdown:type_name -> google.protobuf.Duration
1245	22, // [22:22] is the sub-list for method output_type
1246	22, // [22:22] is the sub-list for method input_type
1247	22, // [22:22] is the sub-list for extension type_name
1248	22, // [22:22] is the sub-list for extension extendee
1249	0,  // [0:22] is the sub-list for field type_name
1250}
1251
1252func init() { file_google_devtools_remoteworkers_v1test2_command_proto_init() }
1253func file_google_devtools_remoteworkers_v1test2_command_proto_init() {
1254	if File_google_devtools_remoteworkers_v1test2_command_proto != nil {
1255		return
1256	}
1257	if !protoimpl.UnsafeEnabled {
1258		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
1259			switch v := v.(*CommandTask); i {
1260			case 0:
1261				return &v.state
1262			case 1:
1263				return &v.sizeCache
1264			case 2:
1265				return &v.unknownFields
1266			default:
1267				return nil
1268			}
1269		}
1270		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
1271			switch v := v.(*CommandOutputs); i {
1272			case 0:
1273				return &v.state
1274			case 1:
1275				return &v.sizeCache
1276			case 2:
1277				return &v.unknownFields
1278			default:
1279				return nil
1280			}
1281		}
1282		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
1283			switch v := v.(*CommandOverhead); i {
1284			case 0:
1285				return &v.state
1286			case 1:
1287				return &v.sizeCache
1288			case 2:
1289				return &v.unknownFields
1290			default:
1291				return nil
1292			}
1293		}
1294		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
1295			switch v := v.(*CommandResult); i {
1296			case 0:
1297				return &v.state
1298			case 1:
1299				return &v.sizeCache
1300			case 2:
1301				return &v.unknownFields
1302			default:
1303				return nil
1304			}
1305		}
1306		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
1307			switch v := v.(*FileMetadata); i {
1308			case 0:
1309				return &v.state
1310			case 1:
1311				return &v.sizeCache
1312			case 2:
1313				return &v.unknownFields
1314			default:
1315				return nil
1316			}
1317		}
1318		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
1319			switch v := v.(*DirectoryMetadata); i {
1320			case 0:
1321				return &v.state
1322			case 1:
1323				return &v.sizeCache
1324			case 2:
1325				return &v.unknownFields
1326			default:
1327				return nil
1328			}
1329		}
1330		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
1331			switch v := v.(*Digest); i {
1332			case 0:
1333				return &v.state
1334			case 1:
1335				return &v.sizeCache
1336			case 2:
1337				return &v.unknownFields
1338			default:
1339				return nil
1340			}
1341		}
1342		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
1343			switch v := v.(*Blob); i {
1344			case 0:
1345				return &v.state
1346			case 1:
1347				return &v.sizeCache
1348			case 2:
1349				return &v.unknownFields
1350			default:
1351				return nil
1352			}
1353		}
1354		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
1355			switch v := v.(*Directory); i {
1356			case 0:
1357				return &v.state
1358			case 1:
1359				return &v.sizeCache
1360			case 2:
1361				return &v.unknownFields
1362			default:
1363				return nil
1364			}
1365		}
1366		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
1367			switch v := v.(*CommandTask_Inputs); i {
1368			case 0:
1369				return &v.state
1370			case 1:
1371				return &v.sizeCache
1372			case 2:
1373				return &v.unknownFields
1374			default:
1375				return nil
1376			}
1377		}
1378		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
1379			switch v := v.(*CommandTask_Outputs); i {
1380			case 0:
1381				return &v.state
1382			case 1:
1383				return &v.sizeCache
1384			case 2:
1385				return &v.unknownFields
1386			default:
1387				return nil
1388			}
1389		}
1390		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
1391			switch v := v.(*CommandTask_Timeouts); i {
1392			case 0:
1393				return &v.state
1394			case 1:
1395				return &v.sizeCache
1396			case 2:
1397				return &v.unknownFields
1398			default:
1399				return nil
1400			}
1401		}
1402		file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
1403			switch v := v.(*CommandTask_Inputs_EnvironmentVariable); i {
1404			case 0:
1405				return &v.state
1406			case 1:
1407				return &v.sizeCache
1408			case 2:
1409				return &v.unknownFields
1410			default:
1411				return nil
1412			}
1413		}
1414	}
1415	type x struct{}
1416	out := protoimpl.TypeBuilder{
1417		File: protoimpl.DescBuilder{
1418			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1419			RawDescriptor: file_google_devtools_remoteworkers_v1test2_command_proto_rawDesc,
1420			NumEnums:      0,
1421			NumMessages:   13,
1422			NumExtensions: 0,
1423			NumServices:   0,
1424		},
1425		GoTypes:           file_google_devtools_remoteworkers_v1test2_command_proto_goTypes,
1426		DependencyIndexes: file_google_devtools_remoteworkers_v1test2_command_proto_depIdxs,
1427		MessageInfos:      file_google_devtools_remoteworkers_v1test2_command_proto_msgTypes,
1428	}.Build()
1429	File_google_devtools_remoteworkers_v1test2_command_proto = out.File
1430	file_google_devtools_remoteworkers_v1test2_command_proto_rawDesc = nil
1431	file_google_devtools_remoteworkers_v1test2_command_proto_goTypes = nil
1432	file_google_devtools_remoteworkers_v1test2_command_proto_depIdxs = nil
1433}
1434