1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google/devtools/remoteworkers/v1test2/command.proto
3
4package remoteworkers
5
6import (
7	fmt "fmt"
8	math "math"
9
10	proto "github.com/golang/protobuf/proto"
11	any "github.com/golang/protobuf/ptypes/any"
12	duration "github.com/golang/protobuf/ptypes/duration"
13	status "google.golang.org/genproto/googleapis/rpc/status"
14)
15
16// Reference imports to suppress errors if they are not otherwise used.
17var _ = proto.Marshal
18var _ = fmt.Errorf
19var _ = math.Inf
20
21// This is a compile-time assertion to ensure that this generated file
22// is compatible with the proto package it is being compiled against.
23// A compilation error at this line likely means your copy of the
24// proto package needs to be updated.
25const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
26
27// Describes a shell-style task to execute, suitable for providing as the Bots
28// interface's `Lease.payload` field.
29type CommandTask struct {
30	// The inputs to the task.
31	Inputs *CommandTask_Inputs `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"`
32	// The expected outputs from the task.
33	ExpectedOutputs *CommandTask_Outputs `protobuf:"bytes,4,opt,name=expected_outputs,json=expectedOutputs,proto3" json:"expected_outputs,omitempty"`
34	// The timeouts of this task.
35	Timeouts             *CommandTask_Timeouts `protobuf:"bytes,5,opt,name=timeouts,proto3" json:"timeouts,omitempty"`
36	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
37	XXX_unrecognized     []byte                `json:"-"`
38	XXX_sizecache        int32                 `json:"-"`
39}
40
41func (m *CommandTask) Reset()         { *m = CommandTask{} }
42func (m *CommandTask) String() string { return proto.CompactTextString(m) }
43func (*CommandTask) ProtoMessage()    {}
44func (*CommandTask) Descriptor() ([]byte, []int) {
45	return fileDescriptor_7b7f8597ab32e88e, []int{0}
46}
47
48func (m *CommandTask) XXX_Unmarshal(b []byte) error {
49	return xxx_messageInfo_CommandTask.Unmarshal(m, b)
50}
51func (m *CommandTask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
52	return xxx_messageInfo_CommandTask.Marshal(b, m, deterministic)
53}
54func (m *CommandTask) XXX_Merge(src proto.Message) {
55	xxx_messageInfo_CommandTask.Merge(m, src)
56}
57func (m *CommandTask) XXX_Size() int {
58	return xxx_messageInfo_CommandTask.Size(m)
59}
60func (m *CommandTask) XXX_DiscardUnknown() {
61	xxx_messageInfo_CommandTask.DiscardUnknown(m)
62}
63
64var xxx_messageInfo_CommandTask proto.InternalMessageInfo
65
66func (m *CommandTask) GetInputs() *CommandTask_Inputs {
67	if m != nil {
68		return m.Inputs
69	}
70	return nil
71}
72
73func (m *CommandTask) GetExpectedOutputs() *CommandTask_Outputs {
74	if m != nil {
75		return m.ExpectedOutputs
76	}
77	return nil
78}
79
80func (m *CommandTask) GetTimeouts() *CommandTask_Timeouts {
81	if m != nil {
82		return m.Timeouts
83	}
84	return nil
85}
86
87// Describes the inputs to a shell-style task.
88type CommandTask_Inputs struct {
89	// The command itself to run (e.g., argv).
90	//
91	// This field should be passed directly to the underlying operating system,
92	// and so it must be sensible to that operating system. For example, on
93	// Windows, the first argument might be "C:\Windows\System32\ping.exe" -
94	// that is, using drive letters and backslashes. A command for a *nix
95	// system, on the other hand, would use forward slashes.
96	//
97	// All other fields in the RWAPI must consistently use forward slashes,
98	// since those fields may be interpretted by both the service and the bot.
99	Arguments []string `protobuf:"bytes,1,rep,name=arguments,proto3" json:"arguments,omitempty"`
100	// The input filesystem to be set up prior to the task beginning. The
101	// contents should be a repeated set of FileMetadata messages though other
102	// formats are allowed if better for the implementation (eg, a LUCI-style
103	// .isolated file).
104	//
105	// This field is repeated since implementations might want to cache the
106	// metadata, in which case it may be useful to break up portions of the
107	// filesystem that change frequently (eg, specific input files) from those
108	// that don't (eg, standard header files).
109	Files []*Digest `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"`
110	// Inline contents for blobs expected to be needed by the bot to execute the
111	// task. For example, contents of entries in `files` or blobs that are
112	// indirectly referenced by an entry there.
113	//
114	// The bot should check against this list before downloading required task
115	// inputs to reduce the number of communications between itself and the
116	// remote CAS server.
117	InlineBlobs []*Blob `protobuf:"bytes,4,rep,name=inline_blobs,json=inlineBlobs,proto3" json:"inline_blobs,omitempty"`
118	// All environment variables required by the task.
119	EnvironmentVariables []*CommandTask_Inputs_EnvironmentVariable `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"`
120	// Directory from which a command is executed. It is a relative directory
121	// with respect to the bot's working directory (i.e., "./"). If it is
122	// non-empty, then it must exist under "./". Otherwise, "./" will be used.
123	WorkingDirectory     string   `protobuf:"bytes,5,opt,name=working_directory,json=workingDirectory,proto3" json:"working_directory,omitempty"`
124	XXX_NoUnkeyedLiteral struct{} `json:"-"`
125	XXX_unrecognized     []byte   `json:"-"`
126	XXX_sizecache        int32    `json:"-"`
127}
128
129func (m *CommandTask_Inputs) Reset()         { *m = CommandTask_Inputs{} }
130func (m *CommandTask_Inputs) String() string { return proto.CompactTextString(m) }
131func (*CommandTask_Inputs) ProtoMessage()    {}
132func (*CommandTask_Inputs) Descriptor() ([]byte, []int) {
133	return fileDescriptor_7b7f8597ab32e88e, []int{0, 0}
134}
135
136func (m *CommandTask_Inputs) XXX_Unmarshal(b []byte) error {
137	return xxx_messageInfo_CommandTask_Inputs.Unmarshal(m, b)
138}
139func (m *CommandTask_Inputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
140	return xxx_messageInfo_CommandTask_Inputs.Marshal(b, m, deterministic)
141}
142func (m *CommandTask_Inputs) XXX_Merge(src proto.Message) {
143	xxx_messageInfo_CommandTask_Inputs.Merge(m, src)
144}
145func (m *CommandTask_Inputs) XXX_Size() int {
146	return xxx_messageInfo_CommandTask_Inputs.Size(m)
147}
148func (m *CommandTask_Inputs) XXX_DiscardUnknown() {
149	xxx_messageInfo_CommandTask_Inputs.DiscardUnknown(m)
150}
151
152var xxx_messageInfo_CommandTask_Inputs proto.InternalMessageInfo
153
154func (m *CommandTask_Inputs) GetArguments() []string {
155	if m != nil {
156		return m.Arguments
157	}
158	return nil
159}
160
161func (m *CommandTask_Inputs) GetFiles() []*Digest {
162	if m != nil {
163		return m.Files
164	}
165	return nil
166}
167
168func (m *CommandTask_Inputs) GetInlineBlobs() []*Blob {
169	if m != nil {
170		return m.InlineBlobs
171	}
172	return nil
173}
174
175func (m *CommandTask_Inputs) GetEnvironmentVariables() []*CommandTask_Inputs_EnvironmentVariable {
176	if m != nil {
177		return m.EnvironmentVariables
178	}
179	return nil
180}
181
182func (m *CommandTask_Inputs) GetWorkingDirectory() string {
183	if m != nil {
184		return m.WorkingDirectory
185	}
186	return ""
187}
188
189// An environment variable required by this task.
190type CommandTask_Inputs_EnvironmentVariable struct {
191	// The envvar name.
192	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
193	// The envvar value.
194	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
195	XXX_NoUnkeyedLiteral struct{} `json:"-"`
196	XXX_unrecognized     []byte   `json:"-"`
197	XXX_sizecache        int32    `json:"-"`
198}
199
200func (m *CommandTask_Inputs_EnvironmentVariable) Reset() {
201	*m = CommandTask_Inputs_EnvironmentVariable{}
202}
203func (m *CommandTask_Inputs_EnvironmentVariable) String() string { return proto.CompactTextString(m) }
204func (*CommandTask_Inputs_EnvironmentVariable) ProtoMessage()    {}
205func (*CommandTask_Inputs_EnvironmentVariable) Descriptor() ([]byte, []int) {
206	return fileDescriptor_7b7f8597ab32e88e, []int{0, 0, 0}
207}
208
209func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Unmarshal(b []byte) error {
210	return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Unmarshal(m, b)
211}
212func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
213	return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Marshal(b, m, deterministic)
214}
215func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Merge(src proto.Message) {
216	xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Merge(m, src)
217}
218func (m *CommandTask_Inputs_EnvironmentVariable) XXX_Size() int {
219	return xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.Size(m)
220}
221func (m *CommandTask_Inputs_EnvironmentVariable) XXX_DiscardUnknown() {
222	xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable.DiscardUnknown(m)
223}
224
225var xxx_messageInfo_CommandTask_Inputs_EnvironmentVariable proto.InternalMessageInfo
226
227func (m *CommandTask_Inputs_EnvironmentVariable) GetName() string {
228	if m != nil {
229		return m.Name
230	}
231	return ""
232}
233
234func (m *CommandTask_Inputs_EnvironmentVariable) GetValue() string {
235	if m != nil {
236		return m.Value
237	}
238	return ""
239}
240
241// Describes the expected outputs of the command.
242type CommandTask_Outputs struct {
243	// A list of expected files, relative to the execution root. All paths
244	// MUST be delimited by forward slashes.
245	Files []string `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
246	// A list of expected directories, relative to the execution root. All paths
247	// MUST be delimited by forward slashes.
248	Directories []string `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"`
249	// The destination to which any stdout should be sent. The method by which
250	// the bot should send the stream contents to that destination is not
251	// defined in this API. As examples, the destination could be a file
252	// referenced in the `files` field in this message, or it could be a URI
253	// that must be written via the ByteStream API.
254	StdoutDestination string `protobuf:"bytes,3,opt,name=stdout_destination,json=stdoutDestination,proto3" json:"stdout_destination,omitempty"`
255	// The destination to which any stderr should be sent. The method by which
256	// the bot should send the stream contents to that destination is not
257	// defined in this API. As examples, the destination could be a file
258	// referenced in the `files` field in this message, or it could be a URI
259	// that must be written via the ByteStream API.
260	StderrDestination    string   `protobuf:"bytes,4,opt,name=stderr_destination,json=stderrDestination,proto3" json:"stderr_destination,omitempty"`
261	XXX_NoUnkeyedLiteral struct{} `json:"-"`
262	XXX_unrecognized     []byte   `json:"-"`
263	XXX_sizecache        int32    `json:"-"`
264}
265
266func (m *CommandTask_Outputs) Reset()         { *m = CommandTask_Outputs{} }
267func (m *CommandTask_Outputs) String() string { return proto.CompactTextString(m) }
268func (*CommandTask_Outputs) ProtoMessage()    {}
269func (*CommandTask_Outputs) Descriptor() ([]byte, []int) {
270	return fileDescriptor_7b7f8597ab32e88e, []int{0, 1}
271}
272
273func (m *CommandTask_Outputs) XXX_Unmarshal(b []byte) error {
274	return xxx_messageInfo_CommandTask_Outputs.Unmarshal(m, b)
275}
276func (m *CommandTask_Outputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
277	return xxx_messageInfo_CommandTask_Outputs.Marshal(b, m, deterministic)
278}
279func (m *CommandTask_Outputs) XXX_Merge(src proto.Message) {
280	xxx_messageInfo_CommandTask_Outputs.Merge(m, src)
281}
282func (m *CommandTask_Outputs) XXX_Size() int {
283	return xxx_messageInfo_CommandTask_Outputs.Size(m)
284}
285func (m *CommandTask_Outputs) XXX_DiscardUnknown() {
286	xxx_messageInfo_CommandTask_Outputs.DiscardUnknown(m)
287}
288
289var xxx_messageInfo_CommandTask_Outputs proto.InternalMessageInfo
290
291func (m *CommandTask_Outputs) GetFiles() []string {
292	if m != nil {
293		return m.Files
294	}
295	return nil
296}
297
298func (m *CommandTask_Outputs) GetDirectories() []string {
299	if m != nil {
300		return m.Directories
301	}
302	return nil
303}
304
305func (m *CommandTask_Outputs) GetStdoutDestination() string {
306	if m != nil {
307		return m.StdoutDestination
308	}
309	return ""
310}
311
312func (m *CommandTask_Outputs) GetStderrDestination() string {
313	if m != nil {
314		return m.StderrDestination
315	}
316	return ""
317}
318
319// Describes the timeouts associated with this task.
320type CommandTask_Timeouts struct {
321	// This specifies the maximum time that the task can run, excluding the
322	// time required to download inputs or upload outputs. That is, the worker
323	// will terminate the task if it runs longer than this.
324	Execution *duration.Duration `protobuf:"bytes,1,opt,name=execution,proto3" json:"execution,omitempty"`
325	// This specifies the maximum amount of time the task can be idle - that is,
326	// go without generating some output in either stdout or stderr. If the
327	// process is silent for more than the specified time, the worker will
328	// terminate the task.
329	Idle *duration.Duration `protobuf:"bytes,2,opt,name=idle,proto3" json:"idle,omitempty"`
330	// If the execution or IO timeouts are exceeded, the worker will try to
331	// gracefully terminate the task and return any existing logs. However,
332	// tasks may be hard-frozen in which case this process will fail. This
333	// timeout specifies how long to wait for a terminated task to shut down
334	// gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.
335	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
336	Shutdown             *duration.Duration `protobuf:"bytes,3,opt,name=shutdown,proto3" json:"shutdown,omitempty"`
337	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
338	XXX_unrecognized     []byte             `json:"-"`
339	XXX_sizecache        int32              `json:"-"`
340}
341
342func (m *CommandTask_Timeouts) Reset()         { *m = CommandTask_Timeouts{} }
343func (m *CommandTask_Timeouts) String() string { return proto.CompactTextString(m) }
344func (*CommandTask_Timeouts) ProtoMessage()    {}
345func (*CommandTask_Timeouts) Descriptor() ([]byte, []int) {
346	return fileDescriptor_7b7f8597ab32e88e, []int{0, 2}
347}
348
349func (m *CommandTask_Timeouts) XXX_Unmarshal(b []byte) error {
350	return xxx_messageInfo_CommandTask_Timeouts.Unmarshal(m, b)
351}
352func (m *CommandTask_Timeouts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
353	return xxx_messageInfo_CommandTask_Timeouts.Marshal(b, m, deterministic)
354}
355func (m *CommandTask_Timeouts) XXX_Merge(src proto.Message) {
356	xxx_messageInfo_CommandTask_Timeouts.Merge(m, src)
357}
358func (m *CommandTask_Timeouts) XXX_Size() int {
359	return xxx_messageInfo_CommandTask_Timeouts.Size(m)
360}
361func (m *CommandTask_Timeouts) XXX_DiscardUnknown() {
362	xxx_messageInfo_CommandTask_Timeouts.DiscardUnknown(m)
363}
364
365var xxx_messageInfo_CommandTask_Timeouts proto.InternalMessageInfo
366
367func (m *CommandTask_Timeouts) GetExecution() *duration.Duration {
368	if m != nil {
369		return m.Execution
370	}
371	return nil
372}
373
374func (m *CommandTask_Timeouts) GetIdle() *duration.Duration {
375	if m != nil {
376		return m.Idle
377	}
378	return nil
379}
380
381func (m *CommandTask_Timeouts) GetShutdown() *duration.Duration {
382	if m != nil {
383		return m.Shutdown
384	}
385	return nil
386}
387
388// DEPRECATED - use CommandResult instead.
389// Describes the actual outputs from the task.
390type CommandOutputs struct {
391	// exit_code is only fully reliable if the status' code is OK. If the task
392	// exceeded its deadline or was cancelled, the process may still produce an
393	// exit code as it is cancelled, and this will be populated, but a successful
394	// (zero) is unlikely to be correct unless the status code is OK.
395	ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
396	// The output files. The blob referenced by the digest should contain
397	// one of the following (implementation-dependent):
398	//    * A marshalled DirectoryMetadata of the returned filesystem
399	//    * A LUCI-style .isolated file
400	Outputs              *Digest  `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"`
401	XXX_NoUnkeyedLiteral struct{} `json:"-"`
402	XXX_unrecognized     []byte   `json:"-"`
403	XXX_sizecache        int32    `json:"-"`
404}
405
406func (m *CommandOutputs) Reset()         { *m = CommandOutputs{} }
407func (m *CommandOutputs) String() string { return proto.CompactTextString(m) }
408func (*CommandOutputs) ProtoMessage()    {}
409func (*CommandOutputs) Descriptor() ([]byte, []int) {
410	return fileDescriptor_7b7f8597ab32e88e, []int{1}
411}
412
413func (m *CommandOutputs) XXX_Unmarshal(b []byte) error {
414	return xxx_messageInfo_CommandOutputs.Unmarshal(m, b)
415}
416func (m *CommandOutputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
417	return xxx_messageInfo_CommandOutputs.Marshal(b, m, deterministic)
418}
419func (m *CommandOutputs) XXX_Merge(src proto.Message) {
420	xxx_messageInfo_CommandOutputs.Merge(m, src)
421}
422func (m *CommandOutputs) XXX_Size() int {
423	return xxx_messageInfo_CommandOutputs.Size(m)
424}
425func (m *CommandOutputs) XXX_DiscardUnknown() {
426	xxx_messageInfo_CommandOutputs.DiscardUnknown(m)
427}
428
429var xxx_messageInfo_CommandOutputs proto.InternalMessageInfo
430
431func (m *CommandOutputs) GetExitCode() int32 {
432	if m != nil {
433		return m.ExitCode
434	}
435	return 0
436}
437
438func (m *CommandOutputs) GetOutputs() *Digest {
439	if m != nil {
440		return m.Outputs
441	}
442	return nil
443}
444
445// DEPRECATED - use CommandResult instead.
446// Can be used as part of CompleteRequest.metadata, or are part of a more
447// sophisticated message.
448type CommandOverhead struct {
449	// The elapsed time between calling Accept and Complete. The server will also
450	// have its own idea of what this should be, but this excludes the overhead of
451	// the RPCs and the bot response time.
452	Duration *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
453	// The amount of time *not* spent executing the command (ie
454	// uploading/downloading files).
455	Overhead             *duration.Duration `protobuf:"bytes,2,opt,name=overhead,proto3" json:"overhead,omitempty"`
456	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
457	XXX_unrecognized     []byte             `json:"-"`
458	XXX_sizecache        int32              `json:"-"`
459}
460
461func (m *CommandOverhead) Reset()         { *m = CommandOverhead{} }
462func (m *CommandOverhead) String() string { return proto.CompactTextString(m) }
463func (*CommandOverhead) ProtoMessage()    {}
464func (*CommandOverhead) Descriptor() ([]byte, []int) {
465	return fileDescriptor_7b7f8597ab32e88e, []int{2}
466}
467
468func (m *CommandOverhead) XXX_Unmarshal(b []byte) error {
469	return xxx_messageInfo_CommandOverhead.Unmarshal(m, b)
470}
471func (m *CommandOverhead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
472	return xxx_messageInfo_CommandOverhead.Marshal(b, m, deterministic)
473}
474func (m *CommandOverhead) XXX_Merge(src proto.Message) {
475	xxx_messageInfo_CommandOverhead.Merge(m, src)
476}
477func (m *CommandOverhead) XXX_Size() int {
478	return xxx_messageInfo_CommandOverhead.Size(m)
479}
480func (m *CommandOverhead) XXX_DiscardUnknown() {
481	xxx_messageInfo_CommandOverhead.DiscardUnknown(m)
482}
483
484var xxx_messageInfo_CommandOverhead proto.InternalMessageInfo
485
486func (m *CommandOverhead) GetDuration() *duration.Duration {
487	if m != nil {
488		return m.Duration
489	}
490	return nil
491}
492
493func (m *CommandOverhead) GetOverhead() *duration.Duration {
494	if m != nil {
495		return m.Overhead
496	}
497	return nil
498}
499
500// All information about the execution of a command, suitable for providing as
501// the Bots interface's `Lease.result` field.
502type CommandResult struct {
503	// An overall status for the command. For example, if the command timed out,
504	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for
505	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
506	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
507	// The exit code of the process. An exit code of "0" should only be trusted if
508	// `status` has a code of OK (otherwise it may simply be unset).
509	ExitCode int32 `protobuf:"varint,2,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
510	// The output files. The blob referenced by the digest should contain
511	// one of the following (implementation-dependent):
512	//    * A marshalled DirectoryMetadata of the returned filesystem
513	//    * A LUCI-style .isolated file
514	Outputs *Digest `protobuf:"bytes,3,opt,name=outputs,proto3" json:"outputs,omitempty"`
515	// The elapsed time between calling Accept and Complete. The server will also
516	// have its own idea of what this should be, but this excludes the overhead of
517	// the RPCs and the bot response time.
518	Duration *duration.Duration `protobuf:"bytes,4,opt,name=duration,proto3" json:"duration,omitempty"` // Deprecated: Do not use.
519	// The amount of time *not* spent executing the command (ie
520	// uploading/downloading files).
521	Overhead *duration.Duration `protobuf:"bytes,5,opt,name=overhead,proto3" json:"overhead,omitempty"` // Deprecated: Do not use.
522	// Implementation-dependent metadata about the task. Both servers and bots
523	// may define messages which can be encoded here; bots are free to provide
524	// metadata in multiple formats, and servers are free to choose one or more
525	// of the values to process and ignore others. In particular, it is *not*
526	// considered an error for the bot to provide the server with a field that it
527	// doesn't know about.
528	Metadata             []*any.Any `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty"`
529	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
530	XXX_unrecognized     []byte     `json:"-"`
531	XXX_sizecache        int32      `json:"-"`
532}
533
534func (m *CommandResult) Reset()         { *m = CommandResult{} }
535func (m *CommandResult) String() string { return proto.CompactTextString(m) }
536func (*CommandResult) ProtoMessage()    {}
537func (*CommandResult) Descriptor() ([]byte, []int) {
538	return fileDescriptor_7b7f8597ab32e88e, []int{3}
539}
540
541func (m *CommandResult) XXX_Unmarshal(b []byte) error {
542	return xxx_messageInfo_CommandResult.Unmarshal(m, b)
543}
544func (m *CommandResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
545	return xxx_messageInfo_CommandResult.Marshal(b, m, deterministic)
546}
547func (m *CommandResult) XXX_Merge(src proto.Message) {
548	xxx_messageInfo_CommandResult.Merge(m, src)
549}
550func (m *CommandResult) XXX_Size() int {
551	return xxx_messageInfo_CommandResult.Size(m)
552}
553func (m *CommandResult) XXX_DiscardUnknown() {
554	xxx_messageInfo_CommandResult.DiscardUnknown(m)
555}
556
557var xxx_messageInfo_CommandResult proto.InternalMessageInfo
558
559func (m *CommandResult) GetStatus() *status.Status {
560	if m != nil {
561		return m.Status
562	}
563	return nil
564}
565
566func (m *CommandResult) GetExitCode() int32 {
567	if m != nil {
568		return m.ExitCode
569	}
570	return 0
571}
572
573func (m *CommandResult) GetOutputs() *Digest {
574	if m != nil {
575		return m.Outputs
576	}
577	return nil
578}
579
580// Deprecated: Do not use.
581func (m *CommandResult) GetDuration() *duration.Duration {
582	if m != nil {
583		return m.Duration
584	}
585	return nil
586}
587
588// Deprecated: Do not use.
589func (m *CommandResult) GetOverhead() *duration.Duration {
590	if m != nil {
591		return m.Overhead
592	}
593	return nil
594}
595
596func (m *CommandResult) GetMetadata() []*any.Any {
597	if m != nil {
598		return m.Metadata
599	}
600	return nil
601}
602
603// The metadata for a file. Similar to the equivalent message in the Remote
604// Execution API.
605type FileMetadata struct {
606	// The path of this file. If this message is part of the
607	// CommandOutputs.outputs fields, the path is relative to the execution root
608	// and must correspond to an entry in CommandTask.outputs.files. If this
609	// message is part of a Directory message, then the path is relative to the
610	// root of that directory. All paths MUST be delimited by forward slashes.
611	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
612	// A pointer to the contents of the file. The method by which a client
613	// retrieves the contents from a CAS system is not defined here.
614	Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
615	// If the file is small enough, its contents may also or alternatively be
616	// listed here.
617	Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3" json:"contents,omitempty"`
618	// Properties of the file
619	IsExecutable         bool     `protobuf:"varint,4,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"`
620	XXX_NoUnkeyedLiteral struct{} `json:"-"`
621	XXX_unrecognized     []byte   `json:"-"`
622	XXX_sizecache        int32    `json:"-"`
623}
624
625func (m *FileMetadata) Reset()         { *m = FileMetadata{} }
626func (m *FileMetadata) String() string { return proto.CompactTextString(m) }
627func (*FileMetadata) ProtoMessage()    {}
628func (*FileMetadata) Descriptor() ([]byte, []int) {
629	return fileDescriptor_7b7f8597ab32e88e, []int{4}
630}
631
632func (m *FileMetadata) XXX_Unmarshal(b []byte) error {
633	return xxx_messageInfo_FileMetadata.Unmarshal(m, b)
634}
635func (m *FileMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
636	return xxx_messageInfo_FileMetadata.Marshal(b, m, deterministic)
637}
638func (m *FileMetadata) XXX_Merge(src proto.Message) {
639	xxx_messageInfo_FileMetadata.Merge(m, src)
640}
641func (m *FileMetadata) XXX_Size() int {
642	return xxx_messageInfo_FileMetadata.Size(m)
643}
644func (m *FileMetadata) XXX_DiscardUnknown() {
645	xxx_messageInfo_FileMetadata.DiscardUnknown(m)
646}
647
648var xxx_messageInfo_FileMetadata proto.InternalMessageInfo
649
650func (m *FileMetadata) GetPath() string {
651	if m != nil {
652		return m.Path
653	}
654	return ""
655}
656
657func (m *FileMetadata) GetDigest() *Digest {
658	if m != nil {
659		return m.Digest
660	}
661	return nil
662}
663
664func (m *FileMetadata) GetContents() []byte {
665	if m != nil {
666		return m.Contents
667	}
668	return nil
669}
670
671func (m *FileMetadata) GetIsExecutable() bool {
672	if m != nil {
673		return m.IsExecutable
674	}
675	return false
676}
677
678// The metadata for a directory. Similar to the equivalent message in the Remote
679// Execution API.
680type DirectoryMetadata struct {
681	// The path of the directory, as in [FileMetadata.path][google.devtools.remoteworkers.v1test2.FileMetadata.path].
682	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
683	// A pointer to the contents of the directory, in the form of a marshalled
684	// Directory message.
685	Digest               *Digest  `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
686	XXX_NoUnkeyedLiteral struct{} `json:"-"`
687	XXX_unrecognized     []byte   `json:"-"`
688	XXX_sizecache        int32    `json:"-"`
689}
690
691func (m *DirectoryMetadata) Reset()         { *m = DirectoryMetadata{} }
692func (m *DirectoryMetadata) String() string { return proto.CompactTextString(m) }
693func (*DirectoryMetadata) ProtoMessage()    {}
694func (*DirectoryMetadata) Descriptor() ([]byte, []int) {
695	return fileDescriptor_7b7f8597ab32e88e, []int{5}
696}
697
698func (m *DirectoryMetadata) XXX_Unmarshal(b []byte) error {
699	return xxx_messageInfo_DirectoryMetadata.Unmarshal(m, b)
700}
701func (m *DirectoryMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
702	return xxx_messageInfo_DirectoryMetadata.Marshal(b, m, deterministic)
703}
704func (m *DirectoryMetadata) XXX_Merge(src proto.Message) {
705	xxx_messageInfo_DirectoryMetadata.Merge(m, src)
706}
707func (m *DirectoryMetadata) XXX_Size() int {
708	return xxx_messageInfo_DirectoryMetadata.Size(m)
709}
710func (m *DirectoryMetadata) XXX_DiscardUnknown() {
711	xxx_messageInfo_DirectoryMetadata.DiscardUnknown(m)
712}
713
714var xxx_messageInfo_DirectoryMetadata proto.InternalMessageInfo
715
716func (m *DirectoryMetadata) GetPath() string {
717	if m != nil {
718		return m.Path
719	}
720	return ""
721}
722
723func (m *DirectoryMetadata) GetDigest() *Digest {
724	if m != nil {
725		return m.Digest
726	}
727	return nil
728}
729
730// The CommandTask and CommandResult messages assume the existence of a service
731// that can serve blobs of content, identified by a hash and size known as a
732// "digest." The method by which these blobs may be retrieved is not specified
733// here, but a model implementation is in the Remote Execution API's
734// "ContentAddressibleStorage" interface.
735//
736// In the context of the RWAPI, a Digest will virtually always refer to the
737// contents of a file or a directory. The latter is represented by the
738// byte-encoded Directory message.
739type Digest struct {
740	// A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c])
741	// using an implementation-defined hash algorithm (eg SHA-256).
742	Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
743	// The size of the contents. While this is not strictly required as part of an
744	// identifier (after all, any given hash will have exactly one canonical
745	// size), it's useful in almost all cases when one might want to send or
746	// retrieve blobs of content and is included here for this reason.
747	SizeBytes            int64    `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
748	XXX_NoUnkeyedLiteral struct{} `json:"-"`
749	XXX_unrecognized     []byte   `json:"-"`
750	XXX_sizecache        int32    `json:"-"`
751}
752
753func (m *Digest) Reset()         { *m = Digest{} }
754func (m *Digest) String() string { return proto.CompactTextString(m) }
755func (*Digest) ProtoMessage()    {}
756func (*Digest) Descriptor() ([]byte, []int) {
757	return fileDescriptor_7b7f8597ab32e88e, []int{6}
758}
759
760func (m *Digest) XXX_Unmarshal(b []byte) error {
761	return xxx_messageInfo_Digest.Unmarshal(m, b)
762}
763func (m *Digest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
764	return xxx_messageInfo_Digest.Marshal(b, m, deterministic)
765}
766func (m *Digest) XXX_Merge(src proto.Message) {
767	xxx_messageInfo_Digest.Merge(m, src)
768}
769func (m *Digest) XXX_Size() int {
770	return xxx_messageInfo_Digest.Size(m)
771}
772func (m *Digest) XXX_DiscardUnknown() {
773	xxx_messageInfo_Digest.DiscardUnknown(m)
774}
775
776var xxx_messageInfo_Digest proto.InternalMessageInfo
777
778func (m *Digest) GetHash() string {
779	if m != nil {
780		return m.Hash
781	}
782	return ""
783}
784
785func (m *Digest) GetSizeBytes() int64 {
786	if m != nil {
787		return m.SizeBytes
788	}
789	return 0
790}
791
792// Describes a blob of binary content with its digest.
793type Blob struct {
794	// The digest of the blob. This should be verified by the receiver.
795	Digest *Digest `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"`
796	// The contents of the blob.
797	Contents             []byte   `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"`
798	XXX_NoUnkeyedLiteral struct{} `json:"-"`
799	XXX_unrecognized     []byte   `json:"-"`
800	XXX_sizecache        int32    `json:"-"`
801}
802
803func (m *Blob) Reset()         { *m = Blob{} }
804func (m *Blob) String() string { return proto.CompactTextString(m) }
805func (*Blob) ProtoMessage()    {}
806func (*Blob) Descriptor() ([]byte, []int) {
807	return fileDescriptor_7b7f8597ab32e88e, []int{7}
808}
809
810func (m *Blob) XXX_Unmarshal(b []byte) error {
811	return xxx_messageInfo_Blob.Unmarshal(m, b)
812}
813func (m *Blob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
814	return xxx_messageInfo_Blob.Marshal(b, m, deterministic)
815}
816func (m *Blob) XXX_Merge(src proto.Message) {
817	xxx_messageInfo_Blob.Merge(m, src)
818}
819func (m *Blob) XXX_Size() int {
820	return xxx_messageInfo_Blob.Size(m)
821}
822func (m *Blob) XXX_DiscardUnknown() {
823	xxx_messageInfo_Blob.DiscardUnknown(m)
824}
825
826var xxx_messageInfo_Blob proto.InternalMessageInfo
827
828func (m *Blob) GetDigest() *Digest {
829	if m != nil {
830		return m.Digest
831	}
832	return nil
833}
834
835func (m *Blob) GetContents() []byte {
836	if m != nil {
837		return m.Contents
838	}
839	return nil
840}
841
842// The contents of a directory. Similar to the equivalent message in the Remote
843// Execution API.
844type Directory struct {
845	// The files in this directory
846	Files []*FileMetadata `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
847	// Any subdirectories
848	Directories          []*DirectoryMetadata `protobuf:"bytes,2,rep,name=directories,proto3" json:"directories,omitempty"`
849	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
850	XXX_unrecognized     []byte               `json:"-"`
851	XXX_sizecache        int32                `json:"-"`
852}
853
854func (m *Directory) Reset()         { *m = Directory{} }
855func (m *Directory) String() string { return proto.CompactTextString(m) }
856func (*Directory) ProtoMessage()    {}
857func (*Directory) Descriptor() ([]byte, []int) {
858	return fileDescriptor_7b7f8597ab32e88e, []int{8}
859}
860
861func (m *Directory) XXX_Unmarshal(b []byte) error {
862	return xxx_messageInfo_Directory.Unmarshal(m, b)
863}
864func (m *Directory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
865	return xxx_messageInfo_Directory.Marshal(b, m, deterministic)
866}
867func (m *Directory) XXX_Merge(src proto.Message) {
868	xxx_messageInfo_Directory.Merge(m, src)
869}
870func (m *Directory) XXX_Size() int {
871	return xxx_messageInfo_Directory.Size(m)
872}
873func (m *Directory) XXX_DiscardUnknown() {
874	xxx_messageInfo_Directory.DiscardUnknown(m)
875}
876
877var xxx_messageInfo_Directory proto.InternalMessageInfo
878
879func (m *Directory) GetFiles() []*FileMetadata {
880	if m != nil {
881		return m.Files
882	}
883	return nil
884}
885
886func (m *Directory) GetDirectories() []*DirectoryMetadata {
887	if m != nil {
888		return m.Directories
889	}
890	return nil
891}
892
893func init() {
894	proto.RegisterType((*CommandTask)(nil), "google.devtools.remoteworkers.v1test2.CommandTask")
895	proto.RegisterType((*CommandTask_Inputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs")
896	proto.RegisterType((*CommandTask_Inputs_EnvironmentVariable)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable")
897	proto.RegisterType((*CommandTask_Outputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Outputs")
898	proto.RegisterType((*CommandTask_Timeouts)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Timeouts")
899	proto.RegisterType((*CommandOutputs)(nil), "google.devtools.remoteworkers.v1test2.CommandOutputs")
900	proto.RegisterType((*CommandOverhead)(nil), "google.devtools.remoteworkers.v1test2.CommandOverhead")
901	proto.RegisterType((*CommandResult)(nil), "google.devtools.remoteworkers.v1test2.CommandResult")
902	proto.RegisterType((*FileMetadata)(nil), "google.devtools.remoteworkers.v1test2.FileMetadata")
903	proto.RegisterType((*DirectoryMetadata)(nil), "google.devtools.remoteworkers.v1test2.DirectoryMetadata")
904	proto.RegisterType((*Digest)(nil), "google.devtools.remoteworkers.v1test2.Digest")
905	proto.RegisterType((*Blob)(nil), "google.devtools.remoteworkers.v1test2.Blob")
906	proto.RegisterType((*Directory)(nil), "google.devtools.remoteworkers.v1test2.Directory")
907}
908
909func init() {
910	proto.RegisterFile("google/devtools/remoteworkers/v1test2/command.proto", fileDescriptor_7b7f8597ab32e88e)
911}
912
913var fileDescriptor_7b7f8597ab32e88e = []byte{
914	// 911 bytes of a gzipped FileDescriptorProto
915	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x5b, 0x6f, 0x1b, 0x45,
916	0x14, 0xd6, 0xae, 0x2f, 0xb5, 0x8f, 0x53, 0xda, 0x0c, 0xa9, 0x70, 0xcd, 0x45, 0xd1, 0xa2, 0x4a,
917	0x81, 0x2a, 0x6b, 0xea, 0x08, 0x41, 0xc8, 0x03, 0xc2, 0x71, 0xa8, 0xfa, 0x50, 0x2e, 0x43, 0xd4,
918	0x48, 0x7d, 0xb1, 0xc6, 0xbb, 0xd3, 0xcd, 0xa8, 0xeb, 0x1d, 0x6b, 0x66, 0xd6, 0x6d, 0x78, 0x41,
919	0xe2, 0x8f, 0x54, 0xe2, 0x8d, 0x3e, 0xf0, 0xc0, 0x7f, 0xe0, 0x81, 0x7f, 0x85, 0xe6, 0xb6, 0x59,
920	0x37, 0xd0, 0x98, 0x80, 0xfa, 0xb6, 0xfe, 0xce, 0xf9, 0xbe, 0x39, 0xf3, 0x9d, 0x39, 0x47, 0x86,
921	0xbd, 0x8c, 0xf3, 0x2c, 0xa7, 0xc3, 0x94, 0x2e, 0x15, 0xe7, 0xb9, 0x1c, 0x0a, 0x3a, 0xe7, 0x8a,
922	0x3e, 0xe3, 0xe2, 0x29, 0x15, 0x72, 0xb8, 0xbc, 0xa7, 0xa8, 0x54, 0xa3, 0x61, 0xc2, 0xe7, 0x73,
923	0x52, 0xa4, 0xf1, 0x42, 0x70, 0xc5, 0xd1, 0x1d, 0x4b, 0x8a, 0x3d, 0x29, 0x5e, 0x21, 0xc5, 0x8e,
924	0x34, 0xb8, 0xed, 0xb4, 0x0d, 0x69, 0x56, 0x3e, 0x19, 0x92, 0xe2, 0xcc, 0x2a, 0x0c, 0x3e, 0x78,
925	0x35, 0x94, 0x96, 0x82, 0x28, 0xc6, 0x0b, 0x17, 0x7f, 0xc7, 0xc5, 0xc5, 0x22, 0x19, 0x4a, 0x45,
926	0x54, 0x29, 0x6d, 0x20, 0x7a, 0xd1, 0x81, 0xde, 0xa1, 0x2d, 0xe6, 0x98, 0xc8, 0xa7, 0xe8, 0x7b,
927	0x68, 0xb3, 0x62, 0x51, 0x2a, 0xd9, 0x0f, 0xb6, 0x83, 0x9d, 0xde, 0x68, 0x3f, 0x5e, 0xab, 0xb6,
928	0xb8, 0xa6, 0x11, 0x3f, 0x30, 0x02, 0xd8, 0x09, 0x21, 0x0a, 0x37, 0xe9, 0xf3, 0x05, 0x4d, 0x14,
929	0x4d, 0xa7, 0xbc, 0x54, 0x46, 0xbc, 0x69, 0xc4, 0xbf, 0xb8, 0x82, 0xf8, 0xb7, 0x56, 0x01, 0xdf,
930	0xf0, 0x9a, 0x0e, 0x40, 0x27, 0xd0, 0x51, 0x6c, 0x4e, 0xb9, 0x96, 0x6f, 0x19, 0xf9, 0x83, 0x2b,
931	0xc8, 0x1f, 0x3b, 0x09, 0x5c, 0x89, 0x0d, 0x7e, 0x6b, 0x40, 0xdb, 0x5e, 0x09, 0xbd, 0x07, 0x5d,
932	0x22, 0xb2, 0x72, 0x4e, 0x0b, 0x63, 0x50, 0x63, 0xa7, 0x8b, 0xcf, 0x01, 0x74, 0x08, 0xad, 0x27,
933	0x2c, 0xa7, 0xb2, 0x1f, 0x6e, 0x37, 0x76, 0x7a, 0xa3, 0xdd, 0x35, 0x8f, 0x9f, 0xb0, 0x8c, 0x4a,
934	0x85, 0x2d, 0x17, 0x7d, 0x03, 0x1b, 0xac, 0xc8, 0x59, 0x41, 0xa7, 0xb3, 0x9c, 0xcf, 0xb4, 0x53,
935	0x5a, 0xeb, 0xee, 0x9a, 0x5a, 0xe3, 0x9c, 0xcf, 0x70, 0xcf, 0x0a, 0xe8, 0x6f, 0x89, 0x7e, 0x0e,
936	0xe0, 0x16, 0x2d, 0x96, 0x4c, 0xf0, 0x42, 0x57, 0x39, 0x5d, 0x12, 0xc1, 0xc8, 0x4c, 0x57, 0xd9,
937	0x30, 0xca, 0x0f, 0xaf, 0xdc, 0xe0, 0xf8, 0xe8, 0x5c, 0xf6, 0x91, 0x53, 0xc5, 0x5b, 0xf4, 0x22,
938	0x28, 0xd1, 0x5d, 0xd8, 0xd4, 0x7a, 0xac, 0xc8, 0xa6, 0x29, 0x13, 0x34, 0x51, 0x5c, 0x9c, 0x99,
939	0x26, 0x75, 0xf1, 0x4d, 0x17, 0x98, 0x78, 0x7c, 0xf0, 0x25, 0xbc, 0xfd, 0x37, 0xca, 0x08, 0x41,
940	0xb3, 0x20, 0x73, 0x6a, 0xde, 0x65, 0x17, 0x9b, 0x6f, 0xb4, 0x05, 0xad, 0x25, 0xc9, 0x4b, 0xda,
941	0x0f, 0x0d, 0x68, 0x7f, 0x0c, 0x5e, 0x04, 0x70, 0xcd, 0xbf, 0x8a, 0x2d, 0xdf, 0x13, 0xdb, 0x2d,
942	0x67, 0xf2, 0x36, 0xf4, 0x7c, 0x1d, 0xcc, 0xf5, 0xab, 0x8b, 0xeb, 0x10, 0xda, 0x05, 0x24, 0x55,
943	0xca, 0x4b, 0x35, 0x4d, 0xa9, 0x54, 0xac, 0x30, 0xc3, 0xd4, 0x6f, 0x98, 0x63, 0x36, 0x6d, 0x64,
944	0x72, 0x1e, 0x70, 0xe9, 0x54, 0x88, 0x95, 0xf4, 0x66, 0x95, 0x4e, 0x85, 0xa8, 0xa5, 0x0f, 0x7e,
945	0x0d, 0xa0, 0xe3, 0x5f, 0x1a, 0xfa, 0x0c, 0xba, 0xf4, 0x39, 0x4d, 0x4a, 0x43, 0xb1, 0x53, 0x77,
946	0xdb, 0x37, 0xc5, 0xcf, 0x73, 0x3c, 0x71, 0xf3, 0x8c, 0xcf, 0x73, 0xd1, 0x2e, 0x34, 0x59, 0x9a,
947	0xdb, 0xcb, 0xbf, 0x96, 0x63, 0xd2, 0xd0, 0xa7, 0xd0, 0x91, 0xa7, 0xa5, 0x4a, 0xf9, 0x33, 0x7b,
948	0x91, 0xd7, 0x52, 0xaa, 0xd4, 0x68, 0x09, 0x6f, 0xb9, 0xde, 0x7b, 0x4f, 0xdf, 0xd5, 0x05, 0x33,
949	0x35, 0x4d, 0x78, 0x6a, 0xdb, 0xd1, 0xc2, 0x1d, 0x0d, 0x1c, 0xf2, 0x94, 0xa2, 0xfb, 0x70, 0xcd,
950	0x0f, 0xb9, 0xad, 0xeb, 0x5f, 0x8e, 0x81, 0x67, 0x47, 0x3f, 0xc1, 0x0d, 0x7f, 0xee, 0x92, 0x8a,
951	0x53, 0x4a, 0x52, 0x7d, 0x03, 0xbf, 0xd7, 0x2e, 0x37, 0xaa, 0x4a, 0xd5, 0x34, 0xee, 0x24, 0x2e,
952	0xf7, 0xaa, 0x4a, 0x8d, 0xfe, 0x0c, 0xe1, 0xba, 0xab, 0x00, 0x53, 0x59, 0xe6, 0x0a, 0x7d, 0x0c,
953	0x6d, 0xbb, 0x3c, 0xdd, 0xe9, 0xc8, 0xcb, 0x88, 0x45, 0x12, 0xff, 0x60, 0x22, 0xd8, 0x65, 0xac,
954	0x9a, 0x14, 0xfe, 0xb3, 0x49, 0x8d, 0xff, 0x62, 0x12, 0xda, 0xaf, 0x39, 0xd2, 0xbc, 0xe4, 0x6a,
955	0xe3, 0xb0, 0x1f, 0xd4, 0x5c, 0xd9, 0xaf, 0xb9, 0xd2, 0x5a, 0x8b, 0xea, 0xd3, 0xd1, 0x27, 0xd0,
956	0x99, 0x53, 0x45, 0x52, 0xa2, 0x48, 0xbf, 0x6d, 0xb6, 0xc8, 0xd6, 0x05, 0xea, 0x57, 0xc5, 0x19,
957	0xae, 0xb2, 0xa2, 0x97, 0x01, 0x6c, 0x7c, 0xcd, 0x72, 0xfa, 0xd0, 0x01, 0x7a, 0x9a, 0x17, 0x44,
958	0x9d, 0xfa, 0x69, 0xd6, 0xdf, 0xe8, 0x08, 0xda, 0xa9, 0xb9, 0xdf, 0xd5, 0x5e, 0x8e, 0x23, 0xa3,
959	0x01, 0x74, 0x12, 0x5e, 0x28, 0xb3, 0xa3, 0xb5, 0xbb, 0x1b, 0xb8, 0xfa, 0x8d, 0x3e, 0x84, 0xeb,
960	0x4c, 0x4e, 0xed, 0x08, 0xe9, 0xad, 0x62, 0x4c, 0xeb, 0xe0, 0x0d, 0x26, 0x8f, 0x2a, 0x2c, 0x2a,
961	0x60, 0xb3, 0xda, 0x46, 0x6f, 0xa0, 0xe0, 0xe8, 0x00, 0xda, 0x16, 0xd1, 0x87, 0x9c, 0x12, 0x59,
962	0x1d, 0xa2, 0xbf, 0xd1, 0xfb, 0x00, 0x92, 0xfd, 0x48, 0xa7, 0xb3, 0x33, 0x45, 0xed, 0x4c, 0x35,
963	0x70, 0x57, 0x23, 0x63, 0x0d, 0x44, 0x0c, 0x9a, 0x7a, 0xd1, 0xd7, 0x6a, 0x09, 0xfe, 0x2f, 0xf3,
964	0xc2, 0x55, 0xf3, 0xa2, 0xdf, 0x03, 0xe8, 0x56, 0xc6, 0xa0, 0x07, 0xf5, 0xcd, 0xda, 0x1b, 0xed,
965	0xad, 0x79, 0x5e, 0xfd, 0x15, 0xf8, 0x75, 0xfc, 0xf8, 0xe2, 0x3a, 0xee, 0x8d, 0x3e, 0x5f, 0xfb,
966	0x02, 0xaf, 0xb4, 0x6a, 0x65, 0x91, 0x8f, 0xff, 0x08, 0xe0, 0xa3, 0x84, 0xcf, 0xd7, 0x13, 0x1b,
967	0xdf, 0xc2, 0x06, 0x3e, 0xb1, 0xb0, 0x9b, 0x7e, 0xf9, 0x5d, 0xf0, 0x18, 0x3b, 0x7e, 0xc6, 0x73,
968	0x52, 0x64, 0x31, 0x17, 0xd9, 0x30, 0xa3, 0x85, 0x79, 0xed, 0x43, 0x1b, 0x22, 0x0b, 0x26, 0x2f,
969	0xf9, 0xdb, 0x77, 0xb0, 0x82, 0xfe, 0x12, 0x86, 0xf8, 0xe4, 0x65, 0x78, 0xe7, 0xbe, 0x55, 0x9e,
970	0xd0, 0xe5, 0xb1, 0xa9, 0x6c, 0xa5, 0x84, 0xf8, 0xd1, 0xbd, 0x63, 0x4d, 0x9d, 0xb5, 0xcd, 0x59,
971	0x7b, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x79, 0x22, 0xd3, 0x61, 0x0a, 0x00, 0x00,
972}
973