1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google/devtools/remoteexecution/v1test/remote_execution.proto
3
4/*
5Package remoteexecution is a generated protocol buffer package.
6
7It is generated from these files:
8	google/devtools/remoteexecution/v1test/remote_execution.proto
9
10It has these top-level messages:
11	Action
12	Command
13	Platform
14	Directory
15	FileNode
16	DirectoryNode
17	Digest
18	ActionResult
19	OutputFile
20	OutputDirectory
21	ExecuteRequest
22	ExecuteResponse
23	ExecuteOperationMetadata
24	GetActionResultRequest
25	UpdateActionResultRequest
26	FindMissingBlobsRequest
27	FindMissingBlobsResponse
28	UpdateBlobRequest
29	BatchUpdateBlobsRequest
30	BatchUpdateBlobsResponse
31	GetTreeRequest
32	GetTreeResponse
33	ToolDetails
34	RequestMetadata
35*/
36package remoteexecution
37
38import proto "github.com/golang/protobuf/proto"
39import fmt "fmt"
40import math "math"
41import _ "google.golang.org/genproto/googleapis/api/annotations"
42import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
43import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
44import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
45
46import (
47	context "golang.org/x/net/context"
48	grpc "google.golang.org/grpc"
49)
50
51// Reference imports to suppress errors if they are not otherwise used.
52var _ = proto.Marshal
53var _ = fmt.Errorf
54var _ = math.Inf
55
56// This is a compile-time assertion to ensure that this generated file
57// is compatible with the proto package it is being compiled against.
58// A compilation error at this line likely means your copy of the
59// proto package needs to be updated.
60const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
61
62// The current stage of execution.
63type ExecuteOperationMetadata_Stage int32
64
65const (
66	ExecuteOperationMetadata_UNKNOWN ExecuteOperationMetadata_Stage = 0
67	// Checking the result against the cache.
68	ExecuteOperationMetadata_CACHE_CHECK ExecuteOperationMetadata_Stage = 1
69	// Currently idle, awaiting a free machine to execute.
70	ExecuteOperationMetadata_QUEUED ExecuteOperationMetadata_Stage = 2
71	// Currently being executed by a worker.
72	ExecuteOperationMetadata_EXECUTING ExecuteOperationMetadata_Stage = 3
73	// Finished execution.
74	ExecuteOperationMetadata_COMPLETED ExecuteOperationMetadata_Stage = 4
75)
76
77var ExecuteOperationMetadata_Stage_name = map[int32]string{
78	0: "UNKNOWN",
79	1: "CACHE_CHECK",
80	2: "QUEUED",
81	3: "EXECUTING",
82	4: "COMPLETED",
83}
84var ExecuteOperationMetadata_Stage_value = map[string]int32{
85	"UNKNOWN":     0,
86	"CACHE_CHECK": 1,
87	"QUEUED":      2,
88	"EXECUTING":   3,
89	"COMPLETED":   4,
90}
91
92func (x ExecuteOperationMetadata_Stage) String() string {
93	return proto.EnumName(ExecuteOperationMetadata_Stage_name, int32(x))
94}
95func (ExecuteOperationMetadata_Stage) EnumDescriptor() ([]byte, []int) {
96	return fileDescriptor0, []int{12, 0}
97}
98
99// An `Action` captures all the information about an execution which is required
100// to reproduce it.
101//
102// `Action`s are the core component of the [Execution] service. A single
103// `Action` represents a repeatable action that can be performed by the
104// execution service. `Action`s can be succinctly identified by the digest of
105// their wire format encoding and, once an `Action` has been executed, will be
106// cached in the action cache. Future requests can then use the cached result
107// rather than needing to run afresh.
108//
109// When a server completes execution of an [Action][google.devtools.remoteexecution.v1test.Action],
110// it MAY choose to cache the [result][google.devtools.remoteexecution.v1test.ActionResult]
111// in the [ActionCache][google.devtools.remoteexecution.v1test.ActionCache]
112// unless `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
113// By default, future calls to [Execute][] the same `Action` will also serve
114// their results from the cache. Clients must take care to understand the
115// caching behaviour. Ideally, all `Action`s will be reproducible so that
116// serving a result from cache is always desirable and correct.
117type Action struct {
118	// The digest of the [Command][google.devtools.remoteexecution.v1test.Command]
119	// to run, which MUST be present in the
120	// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
121	CommandDigest *Digest `protobuf:"bytes,1,opt,name=command_digest,json=commandDigest" json:"command_digest,omitempty"`
122	// The digest of the root [Directory][google.devtools.remoteexecution.v1test.Directory]
123	// for the input files. The files in the directory tree are available in the
124	// correct location on the build machine before the command is executed. The
125	// root directory, as well as every subdirectory and content blob referred to,
126	// MUST be in the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
127	InputRootDigest *Digest `protobuf:"bytes,2,opt,name=input_root_digest,json=inputRootDigest" json:"input_root_digest,omitempty"`
128	// A list of the output files that the client expects to retrieve from the
129	// action. Only the listed files, as well as directories listed in
130	// `output_directories`, will be returned to the client as output.
131	// Other files that may be created during command execution are discarded.
132	//
133	// The paths are specified using forward slashes (`/`) as path separators,
134	// even if the execution platform natively uses a different separator. The
135	// path MUST NOT include a trailing slash.
136	//
137	// In order to ensure consistent hashing of the same Action, the output paths
138	// MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
139	// bytes).
140	OutputFiles []string `protobuf:"bytes,3,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"`
141	// A list of the output directories that the client expects to retrieve from
142	// the action. Only the contents of the indicated directories (recursively
143	// including the contents of their subdirectories) will be
144	// returned, as well as files listed in `output_files`. Other files that may
145	// be created during command execution are discarded.
146	//
147	// The paths are specified using forward slashes (`/`) as path separators,
148	// even if the execution platform natively uses a different separator. The
149	// path MUST NOT include a trailing slash, unless the path is `"/"` (which,
150	// although not recommended, can be used to capture the entire working
151	// directory tree, including inputs).
152	//
153	// In order to ensure consistent hashing of the same Action, the output paths
154	// MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
155	// bytes).
156	OutputDirectories []string `protobuf:"bytes,4,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"`
157	// The platform requirements for the execution environment. The server MAY
158	// choose to execute the action on any worker satisfying the requirements, so
159	// the client SHOULD ensure that running the action on any such worker will
160	// have the same result.
161	Platform *Platform `protobuf:"bytes,5,opt,name=platform" json:"platform,omitempty"`
162	// A timeout after which the execution should be killed. If the timeout is
163	// absent, then the client is specifying that the execution should continue
164	// as long as the server will let it. The server SHOULD impose a timeout if
165	// the client does not specify one, however, if the client does specify a
166	// timeout that is longer than the server's maximum timeout, the server MUST
167	// reject the request.
168	//
169	// The timeout is a part of the
170	// [Action][google.devtools.remoteexecution.v1test.Action] message, and
171	// therefore two `Actions` with different timeouts are different, even if they
172	// are otherwise identical. This is because, if they were not, running an
173	// `Action` with a lower timeout than is required might result in a cache hit
174	// from an execution run with a longer timeout, hiding the fact that the
175	// timeout is too short. By encoding it directly in the `Action`, a lower
176	// timeout will result in a cache miss and the execution timeout will fail
177	// immediately, rather than whenever the cache entry gets evicted.
178	Timeout *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=timeout" json:"timeout,omitempty"`
179	// If true, then the `Action`'s result cannot be cached.
180	DoNotCache bool `protobuf:"varint,7,opt,name=do_not_cache,json=doNotCache" json:"do_not_cache,omitempty"`
181}
182
183func (m *Action) Reset()                    { *m = Action{} }
184func (m *Action) String() string            { return proto.CompactTextString(m) }
185func (*Action) ProtoMessage()               {}
186func (*Action) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
187
188func (m *Action) GetCommandDigest() *Digest {
189	if m != nil {
190		return m.CommandDigest
191	}
192	return nil
193}
194
195func (m *Action) GetInputRootDigest() *Digest {
196	if m != nil {
197		return m.InputRootDigest
198	}
199	return nil
200}
201
202func (m *Action) GetOutputFiles() []string {
203	if m != nil {
204		return m.OutputFiles
205	}
206	return nil
207}
208
209func (m *Action) GetOutputDirectories() []string {
210	if m != nil {
211		return m.OutputDirectories
212	}
213	return nil
214}
215
216func (m *Action) GetPlatform() *Platform {
217	if m != nil {
218		return m.Platform
219	}
220	return nil
221}
222
223func (m *Action) GetTimeout() *google_protobuf3.Duration {
224	if m != nil {
225		return m.Timeout
226	}
227	return nil
228}
229
230func (m *Action) GetDoNotCache() bool {
231	if m != nil {
232		return m.DoNotCache
233	}
234	return false
235}
236
237// A `Command` is the actual command executed by a worker running an
238// [Action][google.devtools.remoteexecution.v1test.Action].
239//
240// Except as otherwise required, the environment (such as which system
241// libraries or binaries are available, and what filesystems are mounted where)
242// is defined by and specific to the implementation of the remote execution API.
243type Command struct {
244	// The arguments to the command. The first argument must be the path to the
245	// executable, which must be either a relative path, in which case it is
246	// evaluated with respect to the input root, or an absolute path. The `PATH`
247	// environment variable, or similar functionality on other systems, is not
248	// used to determine which executable to run.
249	//
250	// The working directory will always be the input root.
251	Arguments []string `protobuf:"bytes,1,rep,name=arguments" json:"arguments,omitempty"`
252	// The environment variables to set when running the program. The worker may
253	// provide its own default environment variables; these defaults can be
254	// overridden using this field. Additional variables can also be specified.
255	//
256	// In order to ensure that equivalent `Command`s always hash to the same
257	// value, the environment variables MUST be lexicographically sorted by name.
258	// Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
259	EnvironmentVariables []*Command_EnvironmentVariable `protobuf:"bytes,2,rep,name=environment_variables,json=environmentVariables" json:"environment_variables,omitempty"`
260}
261
262func (m *Command) Reset()                    { *m = Command{} }
263func (m *Command) String() string            { return proto.CompactTextString(m) }
264func (*Command) ProtoMessage()               {}
265func (*Command) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
266
267func (m *Command) GetArguments() []string {
268	if m != nil {
269		return m.Arguments
270	}
271	return nil
272}
273
274func (m *Command) GetEnvironmentVariables() []*Command_EnvironmentVariable {
275	if m != nil {
276		return m.EnvironmentVariables
277	}
278	return nil
279}
280
281// An `EnvironmentVariable` is one variable to set in the running program's
282// environment.
283type Command_EnvironmentVariable struct {
284	// The variable name.
285	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
286	// The variable value.
287	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
288}
289
290func (m *Command_EnvironmentVariable) Reset()                    { *m = Command_EnvironmentVariable{} }
291func (m *Command_EnvironmentVariable) String() string            { return proto.CompactTextString(m) }
292func (*Command_EnvironmentVariable) ProtoMessage()               {}
293func (*Command_EnvironmentVariable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
294
295func (m *Command_EnvironmentVariable) GetName() string {
296	if m != nil {
297		return m.Name
298	}
299	return ""
300}
301
302func (m *Command_EnvironmentVariable) GetValue() string {
303	if m != nil {
304		return m.Value
305	}
306	return ""
307}
308
309// A `Platform` is a set of requirements, such as hardware, operation system, or
310// compiler toolchain, for an
311// [Action][google.devtools.remoteexecution.v1test.Action]'s execution
312// environment. A `Platform` is represented as a series of key-value pairs
313// representing the properties that are required of the platform.
314//
315// This message is currently being redeveloped since it is an overly simplistic
316// model of platforms.
317type Platform struct {
318	// The properties that make up this platform. In order to ensure that
319	// equivalent `Platform`s always hash to the same value, the properties MUST
320	// be lexicographically sorted by name, and then by value. Sorting of strings
321	// is done by code point, equivalently, by the UTF-8 bytes.
322	Properties []*Platform_Property `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"`
323}
324
325func (m *Platform) Reset()                    { *m = Platform{} }
326func (m *Platform) String() string            { return proto.CompactTextString(m) }
327func (*Platform) ProtoMessage()               {}
328func (*Platform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
329
330func (m *Platform) GetProperties() []*Platform_Property {
331	if m != nil {
332		return m.Properties
333	}
334	return nil
335}
336
337// A single property for the environment. The server is responsible for
338// specifying the property `name`s that it accepts. If an unknown `name` is
339// provided in the requirements for an
340// [Action][google.devtools.remoteexecution.v1test.Action], the server SHOULD
341// reject the execution request. If permitted by the server, the same `name`
342// may occur multiple times.
343//
344// The server is also responsible for specifying the interpretation of
345// property `value`s. For instance, a property describing how much RAM must be
346// available may be interpreted as allowing a worker with 16GB to fulfill a
347// request for 8GB, while a property describing the OS environment on which
348// the action must be performed may require an exact match with the worker's
349// OS.
350//
351// The server MAY use the `value` of one or more properties to determine how
352// it sets up the execution environment, such as by making specific system
353// files available to the worker.
354type Platform_Property struct {
355	// The property name.
356	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
357	// The property value.
358	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
359}
360
361func (m *Platform_Property) Reset()                    { *m = Platform_Property{} }
362func (m *Platform_Property) String() string            { return proto.CompactTextString(m) }
363func (*Platform_Property) ProtoMessage()               {}
364func (*Platform_Property) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
365
366func (m *Platform_Property) GetName() string {
367	if m != nil {
368		return m.Name
369	}
370	return ""
371}
372
373func (m *Platform_Property) GetValue() string {
374	if m != nil {
375		return m.Value
376	}
377	return ""
378}
379
380// A `Directory` represents a directory node in a file tree, containing zero or
381// more children [FileNodes][google.devtools.remoteexecution.v1test.FileNode] and
382// [DirectoryNodes][google.devtools.remoteexecution.v1test.DirectoryNode].
383// Each `Node` contains its name in the directory, the digest of its content
384// (either a file blob or a `Directory` proto), as well as possibly some
385// metadata about the file or directory.
386//
387// In order to ensure that two equivalent directory trees hash to the same
388// value, the following restrictions MUST be obeyed when constructing a
389// a `Directory`:
390//   - Every child in the directory must have a path of exactly one segment.
391//     Multiple levels of directory hierarchy may not be collapsed.
392//   - Each child in the directory must have a unique path segment (file name).
393//   - The files and directories in the directory must each be sorted in
394//     lexicographical order by path. The path strings must be sorted by code
395//     point, equivalently, by UTF-8 bytes.
396//
397// A `Directory` that obeys the restrictions is said to be in canonical form.
398//
399// As an example, the following could be used for a file named `bar` and a
400// directory named `foo` with an executable file named `baz` (hashes shortened
401// for readability):
402//
403// ```json
404// // (Directory proto)
405// {
406//   files: [
407//     {
408//       name: "bar",
409//       digest: {
410//         hash: "4a73bc9d03...",
411//         size: 65534
412//       }
413//     }
414//   ],
415//   directories: [
416//     {
417//       name: "foo",
418//       digest: {
419//         hash: "4cf2eda940...",
420//         size: 43
421//       }
422//     }
423//   ]
424// }
425//
426// // (Directory proto with hash "4cf2eda940..." and size 43)
427// {
428//   files: [
429//     {
430//       name: "baz",
431//       digest: {
432//         hash: "b2c941073e...",
433//         size: 1294,
434//       },
435//       is_executable: true
436//     }
437//   ]
438// }
439// ```
440type Directory struct {
441	// The files in the directory.
442	Files []*FileNode `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"`
443	// The subdirectories in the directory.
444	Directories []*DirectoryNode `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"`
445}
446
447func (m *Directory) Reset()                    { *m = Directory{} }
448func (m *Directory) String() string            { return proto.CompactTextString(m) }
449func (*Directory) ProtoMessage()               {}
450func (*Directory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
451
452func (m *Directory) GetFiles() []*FileNode {
453	if m != nil {
454		return m.Files
455	}
456	return nil
457}
458
459func (m *Directory) GetDirectories() []*DirectoryNode {
460	if m != nil {
461		return m.Directories
462	}
463	return nil
464}
465
466// A `FileNode` represents a single file and associated metadata.
467type FileNode struct {
468	// The name of the file.
469	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
470	// The digest of the file's content.
471	Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
472	// True if file is executable, false otherwise.
473	IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"`
474}
475
476func (m *FileNode) Reset()                    { *m = FileNode{} }
477func (m *FileNode) String() string            { return proto.CompactTextString(m) }
478func (*FileNode) ProtoMessage()               {}
479func (*FileNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
480
481func (m *FileNode) GetName() string {
482	if m != nil {
483		return m.Name
484	}
485	return ""
486}
487
488func (m *FileNode) GetDigest() *Digest {
489	if m != nil {
490		return m.Digest
491	}
492	return nil
493}
494
495func (m *FileNode) GetIsExecutable() bool {
496	if m != nil {
497		return m.IsExecutable
498	}
499	return false
500}
501
502// A `DirectoryNode` represents a child of a
503// [Directory][google.devtools.remoteexecution.v1test.Directory] which is itself
504// a `Directory` and its associated metadata.
505type DirectoryNode struct {
506	// The name of the directory.
507	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
508	// The digest of the [Directory][google.devtools.remoteexecution.v1test.Directory]
509	// object represented. See [Digest][google.devtools.remoteexecution.v1test.Digest]
510	// for information about how to take the digest of a proto message.
511	Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
512}
513
514func (m *DirectoryNode) Reset()                    { *m = DirectoryNode{} }
515func (m *DirectoryNode) String() string            { return proto.CompactTextString(m) }
516func (*DirectoryNode) ProtoMessage()               {}
517func (*DirectoryNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
518
519func (m *DirectoryNode) GetName() string {
520	if m != nil {
521		return m.Name
522	}
523	return ""
524}
525
526func (m *DirectoryNode) GetDigest() *Digest {
527	if m != nil {
528		return m.Digest
529	}
530	return nil
531}
532
533// A content digest. A digest for a given blob consists of the size of the blob
534// and its hash. The hash algorithm to use is defined by the server, but servers
535// SHOULD use SHA-256.
536//
537// The size is considered to be an integral part of the digest and cannot be
538// separated. That is, even if the `hash` field is correctly specified but
539// `size_bytes` is not, the server MUST reject the request.
540//
541// The reason for including the size in the digest is as follows: in a great
542// many cases, the server needs to know the size of the blob it is about to work
543// with prior to starting an operation with it, such as flattening Merkle tree
544// structures or streaming it to a worker. Technically, the server could
545// implement a separate metadata store, but this results in a significantly more
546// complicated implementation as opposed to having the client specify the size
547// up-front (or storing the size along with the digest in every message where
548// digests are embedded). This does mean that the API leaks some implementation
549// details of (what we consider to be) a reasonable server implementation, but
550// we consider this to be a worthwhile tradeoff.
551//
552// When a `Digest` is used to refer to a proto message, it always refers to the
553// message in binary encoded form. To ensure consistent hashing, clients and
554// servers MUST ensure that they serialize messages according to the following
555// rules, even if there are alternate valid encodings for the same message.
556// - Fields are serialized in tag order.
557// - There are no unknown fields.
558// - There are no duplicate fields.
559// - Fields are serialized according to the default semantics for their type.
560//
561// Most protocol buffer implementations will always follow these rules when
562// serializing, but care should be taken to avoid shortcuts. For instance,
563// concatenating two messages to merge them may produce duplicate fields.
564type Digest struct {
565	// The hash. In the case of SHA-256, it will always be a lowercase hex string
566	// exactly 64 characters long.
567	Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"`
568	// The size of the blob, in bytes.
569	SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes" json:"size_bytes,omitempty"`
570}
571
572func (m *Digest) Reset()                    { *m = Digest{} }
573func (m *Digest) String() string            { return proto.CompactTextString(m) }
574func (*Digest) ProtoMessage()               {}
575func (*Digest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
576
577func (m *Digest) GetHash() string {
578	if m != nil {
579		return m.Hash
580	}
581	return ""
582}
583
584func (m *Digest) GetSizeBytes() int64 {
585	if m != nil {
586		return m.SizeBytes
587	}
588	return 0
589}
590
591// An ActionResult represents the result of an
592// [Action][google.devtools.remoteexecution.v1test.Action] being run.
593type ActionResult struct {
594	// The output files of the action. For each output file requested, if the
595	// corresponding file existed after the action completed, a single entry will
596	// be present in the output list.
597	//
598	// If the action does not produce the requested output, or produces a
599	// directory where a regular file is expected or vice versa, then that output
600	// will be omitted from the list. The server is free to arrange the output
601	// list as desired; clients MUST NOT assume that the output list is sorted.
602	OutputFiles []*OutputFile `protobuf:"bytes,2,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"`
603	// The output directories of the action. For each output directory requested,
604	// if the corresponding directory existed after the action completed, a single
605	// entry will be present in the output list. The client can retrieve the full
606	// [Directory][google.devtools.remoteexecution.v1test.Directory] structure
607	// using [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
608	//
609	// If the action does not produce the requested output, or produces a
610	// directory where a regular file is expected or vice versa, then that output
611	// will be omitted from the list. The server is free to arrange the output
612	// list as desired; clients MUST NOT assume that the output list is sorted.
613	OutputDirectories []*OutputDirectory `protobuf:"bytes,3,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"`
614	// The exit code of the command.
615	ExitCode int32 `protobuf:"varint,4,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"`
616	// The standard output buffer of the action. The server will determine, based
617	// on the size of the buffer, whether to return it in raw form or to return
618	// a digest in `stdout_digest` that points to the buffer. If neither is set,
619	// then the buffer is empty. The client SHOULD NOT assume it will get one of
620	// the raw buffer or a digest on any given request and should be prepared to
621	// handle either.
622	StdoutRaw []byte `protobuf:"bytes,5,opt,name=stdout_raw,json=stdoutRaw,proto3" json:"stdout_raw,omitempty"`
623	// The digest for a blob containing the standard output of the action, which
624	// can be retrieved from the
625	// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
626	// See `stdout_raw` for when this will be set.
627	StdoutDigest *Digest `protobuf:"bytes,6,opt,name=stdout_digest,json=stdoutDigest" json:"stdout_digest,omitempty"`
628	// The standard error buffer of the action. The server will determine, based
629	// on the size of the buffer, whether to return it in raw form or to return
630	// a digest in `stderr_digest` that points to the buffer. If neither is set,
631	// then the buffer is empty. The client SHOULD NOT assume it will get one of
632	// the raw buffer or a digest on any given request and should be prepared to
633	// handle either.
634	StderrRaw []byte `protobuf:"bytes,7,opt,name=stderr_raw,json=stderrRaw,proto3" json:"stderr_raw,omitempty"`
635	// The digest for a blob containing the standard error of the action, which
636	// can be retrieved from the
637	// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
638	// See `stderr_raw` for when this will be set.
639	StderrDigest *Digest `protobuf:"bytes,8,opt,name=stderr_digest,json=stderrDigest" json:"stderr_digest,omitempty"`
640}
641
642func (m *ActionResult) Reset()                    { *m = ActionResult{} }
643func (m *ActionResult) String() string            { return proto.CompactTextString(m) }
644func (*ActionResult) ProtoMessage()               {}
645func (*ActionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
646
647func (m *ActionResult) GetOutputFiles() []*OutputFile {
648	if m != nil {
649		return m.OutputFiles
650	}
651	return nil
652}
653
654func (m *ActionResult) GetOutputDirectories() []*OutputDirectory {
655	if m != nil {
656		return m.OutputDirectories
657	}
658	return nil
659}
660
661func (m *ActionResult) GetExitCode() int32 {
662	if m != nil {
663		return m.ExitCode
664	}
665	return 0
666}
667
668func (m *ActionResult) GetStdoutRaw() []byte {
669	if m != nil {
670		return m.StdoutRaw
671	}
672	return nil
673}
674
675func (m *ActionResult) GetStdoutDigest() *Digest {
676	if m != nil {
677		return m.StdoutDigest
678	}
679	return nil
680}
681
682func (m *ActionResult) GetStderrRaw() []byte {
683	if m != nil {
684		return m.StderrRaw
685	}
686	return nil
687}
688
689func (m *ActionResult) GetStderrDigest() *Digest {
690	if m != nil {
691		return m.StderrDigest
692	}
693	return nil
694}
695
696// An `OutputFile` is similar to a
697// [FileNode][google.devtools.remoteexecution.v1test.FileNode], but it is
698// tailored for output as part of an `ActionResult`. It allows a full file path
699// rather than only a name, and allows the server to include content inline.
700//
701// `OutputFile` is binary-compatible with `FileNode`.
702type OutputFile struct {
703	// The full path of the file relative to the input root, including the
704	// filename. The path separator is a forward slash `/`.
705	Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
706	// The digest of the file's content.
707	Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
708	// The raw content of the file.
709	//
710	// This field may be used by the server to provide the content of a file
711	// inline in an [ActionResult][google.devtools.remoteexecution.v1test.ActionResult]
712	// and avoid requiring that the client make a separate call to
713	// [ContentAddressableStorage.GetBlob] to retrieve it.
714	//
715	// The client SHOULD NOT assume that it will get raw content with any request,
716	// and always be prepared to retrieve it via `digest`.
717	Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
718	// True if file is executable, false otherwise.
719	IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"`
720}
721
722func (m *OutputFile) Reset()                    { *m = OutputFile{} }
723func (m *OutputFile) String() string            { return proto.CompactTextString(m) }
724func (*OutputFile) ProtoMessage()               {}
725func (*OutputFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
726
727func (m *OutputFile) GetPath() string {
728	if m != nil {
729		return m.Path
730	}
731	return ""
732}
733
734func (m *OutputFile) GetDigest() *Digest {
735	if m != nil {
736		return m.Digest
737	}
738	return nil
739}
740
741func (m *OutputFile) GetContent() []byte {
742	if m != nil {
743		return m.Content
744	}
745	return nil
746}
747
748func (m *OutputFile) GetIsExecutable() bool {
749	if m != nil {
750		return m.IsExecutable
751	}
752	return false
753}
754
755// An `OutputDirectory` is similar to a
756// [DirectoryNode][google.devtools.remoteexecution.v1test.DirectoryNode],
757// but it is tailored for output as part of an `ActionResult`. It allows a full
758// file path rather than only a name. It contains the digest of a
759// [Directory][google.devtools.remoteexecution.v1test.Directory] which will meet
760// all the usual requirements for a `Directory`.
761//
762// `OutputDirectory` is binary-compatible with `DirectoryNode`.
763type OutputDirectory struct {
764	// The full path of the directory relative to the input root, including the
765	// filename. The path separator is a forward slash `/`.
766	Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
767	// The digest of the [Directory][google.devtools.remoteexecution.v1test.Directory]
768	// proto describing the directory's contents.
769	Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
770}
771
772func (m *OutputDirectory) Reset()                    { *m = OutputDirectory{} }
773func (m *OutputDirectory) String() string            { return proto.CompactTextString(m) }
774func (*OutputDirectory) ProtoMessage()               {}
775func (*OutputDirectory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
776
777func (m *OutputDirectory) GetPath() string {
778	if m != nil {
779		return m.Path
780	}
781	return ""
782}
783
784func (m *OutputDirectory) GetDigest() *Digest {
785	if m != nil {
786		return m.Digest
787	}
788	return nil
789}
790
791// A request message for
792// [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute].
793type ExecuteRequest struct {
794	// The instance of the execution system to operate against. A server may
795	// support multiple instances of the execution system (with their own workers,
796	// storage, caches, etc.). The server MAY require use of this field to select
797	// between them in an implementation-defined fashion, otherwise it can be
798	// omitted.
799	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
800	// The action to be performed.
801	Action *Action `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"`
802	// If true, the action will be executed anew even if its result was already
803	// present in the cache. If false, the result may be served from the
804	// [ActionCache][google.devtools.remoteexecution.v1test.ActionCache].
805	SkipCacheLookup bool `protobuf:"varint,3,opt,name=skip_cache_lookup,json=skipCacheLookup" json:"skip_cache_lookup,omitempty"`
806	// The total count of input files, not counting directories. This must be
807	// provided so that the server can do resource allocation and, on servers with
808	// quotas, quota checking. It is also used as a safety check: servers MUST
809	// return an error if the total number of input files described in the
810	// `action` is different.
811	TotalInputFileCount int32 `protobuf:"varint,4,opt,name=total_input_file_count,json=totalInputFileCount" json:"total_input_file_count,omitempty"`
812	// The total size of input file content, provided as a hint and check. This
813	// must be provided so that the server can do resource allocation and, on
814	// servers with quotas, quota checking. It is also used as a safety check:
815	// servers MUST return an error if the total size of input files described in
816	// the `action` is different.
817	TotalInputFileBytes int64 `protobuf:"varint,5,opt,name=total_input_file_bytes,json=totalInputFileBytes" json:"total_input_file_bytes,omitempty"`
818}
819
820func (m *ExecuteRequest) Reset()                    { *m = ExecuteRequest{} }
821func (m *ExecuteRequest) String() string            { return proto.CompactTextString(m) }
822func (*ExecuteRequest) ProtoMessage()               {}
823func (*ExecuteRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
824
825func (m *ExecuteRequest) GetInstanceName() string {
826	if m != nil {
827		return m.InstanceName
828	}
829	return ""
830}
831
832func (m *ExecuteRequest) GetAction() *Action {
833	if m != nil {
834		return m.Action
835	}
836	return nil
837}
838
839func (m *ExecuteRequest) GetSkipCacheLookup() bool {
840	if m != nil {
841		return m.SkipCacheLookup
842	}
843	return false
844}
845
846func (m *ExecuteRequest) GetTotalInputFileCount() int32 {
847	if m != nil {
848		return m.TotalInputFileCount
849	}
850	return 0
851}
852
853func (m *ExecuteRequest) GetTotalInputFileBytes() int64 {
854	if m != nil {
855		return m.TotalInputFileBytes
856	}
857	return 0
858}
859
860// The response message for
861// [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute],
862// which will be contained in the [response field][google.longrunning.Operation.response] of the
863// [Operation][google.longrunning.Operation].
864type ExecuteResponse struct {
865	// The result of the action.
866	Result *ActionResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"`
867	// True if the result was served from cache, false if it was executed.
868	CachedResult bool `protobuf:"varint,2,opt,name=cached_result,json=cachedResult" json:"cached_result,omitempty"`
869}
870
871func (m *ExecuteResponse) Reset()                    { *m = ExecuteResponse{} }
872func (m *ExecuteResponse) String() string            { return proto.CompactTextString(m) }
873func (*ExecuteResponse) ProtoMessage()               {}
874func (*ExecuteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
875
876func (m *ExecuteResponse) GetResult() *ActionResult {
877	if m != nil {
878		return m.Result
879	}
880	return nil
881}
882
883func (m *ExecuteResponse) GetCachedResult() bool {
884	if m != nil {
885		return m.CachedResult
886	}
887	return false
888}
889
890// Metadata about an ongoing [execution][google.devtools.remoteexecution.v1test.Execution.Execute],
891// which will be
892// contained in the [metadata field][google.longrunning.Operation.response] of
893// the [Operation][google.longrunning.Operation].
894type ExecuteOperationMetadata struct {
895	Stage ExecuteOperationMetadata_Stage `protobuf:"varint,1,opt,name=stage,enum=google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage" json:"stage,omitempty"`
896	// The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
897	// being executed.
898	ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
899	// If set, the client can use this name with
900	// [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the
901	// standard output.
902	StdoutStreamName string `protobuf:"bytes,3,opt,name=stdout_stream_name,json=stdoutStreamName" json:"stdout_stream_name,omitempty"`
903	// If set, the client can use this name with
904	// [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the
905	// standard error.
906	StderrStreamName string `protobuf:"bytes,4,opt,name=stderr_stream_name,json=stderrStreamName" json:"stderr_stream_name,omitempty"`
907}
908
909func (m *ExecuteOperationMetadata) Reset()                    { *m = ExecuteOperationMetadata{} }
910func (m *ExecuteOperationMetadata) String() string            { return proto.CompactTextString(m) }
911func (*ExecuteOperationMetadata) ProtoMessage()               {}
912func (*ExecuteOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
913
914func (m *ExecuteOperationMetadata) GetStage() ExecuteOperationMetadata_Stage {
915	if m != nil {
916		return m.Stage
917	}
918	return ExecuteOperationMetadata_UNKNOWN
919}
920
921func (m *ExecuteOperationMetadata) GetActionDigest() *Digest {
922	if m != nil {
923		return m.ActionDigest
924	}
925	return nil
926}
927
928func (m *ExecuteOperationMetadata) GetStdoutStreamName() string {
929	if m != nil {
930		return m.StdoutStreamName
931	}
932	return ""
933}
934
935func (m *ExecuteOperationMetadata) GetStderrStreamName() string {
936	if m != nil {
937		return m.StderrStreamName
938	}
939	return ""
940}
941
942// A request message for
943// [ActionCache.GetActionResult][google.devtools.remoteexecution.v1test.ActionCache.GetActionResult].
944type GetActionResultRequest struct {
945	// The instance of the execution system to operate against. A server may
946	// support multiple instances of the execution system (with their own workers,
947	// storage, caches, etc.). The server MAY require use of this field to select
948	// between them in an implementation-defined fashion, otherwise it can be
949	// omitted.
950	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
951	// The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
952	// whose result is requested.
953	ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
954}
955
956func (m *GetActionResultRequest) Reset()                    { *m = GetActionResultRequest{} }
957func (m *GetActionResultRequest) String() string            { return proto.CompactTextString(m) }
958func (*GetActionResultRequest) ProtoMessage()               {}
959func (*GetActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
960
961func (m *GetActionResultRequest) GetInstanceName() string {
962	if m != nil {
963		return m.InstanceName
964	}
965	return ""
966}
967
968func (m *GetActionResultRequest) GetActionDigest() *Digest {
969	if m != nil {
970		return m.ActionDigest
971	}
972	return nil
973}
974
975// A request message for
976// [ActionCache.UpdateActionResult][google.devtools.remoteexecution.v1test.ActionCache.UpdateActionResult].
977type UpdateActionResultRequest struct {
978	// The instance of the execution system to operate against. A server may
979	// support multiple instances of the execution system (with their own workers,
980	// storage, caches, etc.). The server MAY require use of this field to select
981	// between them in an implementation-defined fashion, otherwise it can be
982	// omitted.
983	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
984	// The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
985	// whose result is being uploaded.
986	ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
987	// The [ActionResult][google.devtools.remoteexecution.v1test.ActionResult]
988	// to store in the cache.
989	ActionResult *ActionResult `protobuf:"bytes,3,opt,name=action_result,json=actionResult" json:"action_result,omitempty"`
990}
991
992func (m *UpdateActionResultRequest) Reset()                    { *m = UpdateActionResultRequest{} }
993func (m *UpdateActionResultRequest) String() string            { return proto.CompactTextString(m) }
994func (*UpdateActionResultRequest) ProtoMessage()               {}
995func (*UpdateActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
996
997func (m *UpdateActionResultRequest) GetInstanceName() string {
998	if m != nil {
999		return m.InstanceName
1000	}
1001	return ""
1002}
1003
1004func (m *UpdateActionResultRequest) GetActionDigest() *Digest {
1005	if m != nil {
1006		return m.ActionDigest
1007	}
1008	return nil
1009}
1010
1011func (m *UpdateActionResultRequest) GetActionResult() *ActionResult {
1012	if m != nil {
1013		return m.ActionResult
1014	}
1015	return nil
1016}
1017
1018// A request message for
1019// [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs].
1020type FindMissingBlobsRequest struct {
1021	// The instance of the execution system to operate against. A server may
1022	// support multiple instances of the execution system (with their own workers,
1023	// storage, caches, etc.). The server MAY require use of this field to select
1024	// between them in an implementation-defined fashion, otherwise it can be
1025	// omitted.
1026	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1027	// A list of the blobs to check.
1028	BlobDigests []*Digest `protobuf:"bytes,2,rep,name=blob_digests,json=blobDigests" json:"blob_digests,omitempty"`
1029}
1030
1031func (m *FindMissingBlobsRequest) Reset()                    { *m = FindMissingBlobsRequest{} }
1032func (m *FindMissingBlobsRequest) String() string            { return proto.CompactTextString(m) }
1033func (*FindMissingBlobsRequest) ProtoMessage()               {}
1034func (*FindMissingBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
1035
1036func (m *FindMissingBlobsRequest) GetInstanceName() string {
1037	if m != nil {
1038		return m.InstanceName
1039	}
1040	return ""
1041}
1042
1043func (m *FindMissingBlobsRequest) GetBlobDigests() []*Digest {
1044	if m != nil {
1045		return m.BlobDigests
1046	}
1047	return nil
1048}
1049
1050// A response message for
1051// [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs].
1052type FindMissingBlobsResponse struct {
1053	// A list of the blobs requested *not* present in the storage.
1054	MissingBlobDigests []*Digest `protobuf:"bytes,2,rep,name=missing_blob_digests,json=missingBlobDigests" json:"missing_blob_digests,omitempty"`
1055}
1056
1057func (m *FindMissingBlobsResponse) Reset()                    { *m = FindMissingBlobsResponse{} }
1058func (m *FindMissingBlobsResponse) String() string            { return proto.CompactTextString(m) }
1059func (*FindMissingBlobsResponse) ProtoMessage()               {}
1060func (*FindMissingBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
1061
1062func (m *FindMissingBlobsResponse) GetMissingBlobDigests() []*Digest {
1063	if m != nil {
1064		return m.MissingBlobDigests
1065	}
1066	return nil
1067}
1068
1069// A single request message for
1070// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1071type UpdateBlobRequest struct {
1072	// The digest of the blob. This MUST be the digest of `data`.
1073	ContentDigest *Digest `protobuf:"bytes,1,opt,name=content_digest,json=contentDigest" json:"content_digest,omitempty"`
1074	// The raw binary data.
1075	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
1076}
1077
1078func (m *UpdateBlobRequest) Reset()                    { *m = UpdateBlobRequest{} }
1079func (m *UpdateBlobRequest) String() string            { return proto.CompactTextString(m) }
1080func (*UpdateBlobRequest) ProtoMessage()               {}
1081func (*UpdateBlobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
1082
1083func (m *UpdateBlobRequest) GetContentDigest() *Digest {
1084	if m != nil {
1085		return m.ContentDigest
1086	}
1087	return nil
1088}
1089
1090func (m *UpdateBlobRequest) GetData() []byte {
1091	if m != nil {
1092		return m.Data
1093	}
1094	return nil
1095}
1096
1097// A request message for
1098// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1099type BatchUpdateBlobsRequest struct {
1100	// The instance of the execution system to operate against. A server may
1101	// support multiple instances of the execution system (with their own workers,
1102	// storage, caches, etc.). The server MAY require use of this field to select
1103	// between them in an implementation-defined fashion, otherwise it can be
1104	// omitted.
1105	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1106	// The individual upload requests.
1107	Requests []*UpdateBlobRequest `protobuf:"bytes,2,rep,name=requests" json:"requests,omitempty"`
1108}
1109
1110func (m *BatchUpdateBlobsRequest) Reset()                    { *m = BatchUpdateBlobsRequest{} }
1111func (m *BatchUpdateBlobsRequest) String() string            { return proto.CompactTextString(m) }
1112func (*BatchUpdateBlobsRequest) ProtoMessage()               {}
1113func (*BatchUpdateBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
1114
1115func (m *BatchUpdateBlobsRequest) GetInstanceName() string {
1116	if m != nil {
1117		return m.InstanceName
1118	}
1119	return ""
1120}
1121
1122func (m *BatchUpdateBlobsRequest) GetRequests() []*UpdateBlobRequest {
1123	if m != nil {
1124		return m.Requests
1125	}
1126	return nil
1127}
1128
1129// A response message for
1130// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1131type BatchUpdateBlobsResponse struct {
1132	// The responses to the requests.
1133	Responses []*BatchUpdateBlobsResponse_Response `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"`
1134}
1135
1136func (m *BatchUpdateBlobsResponse) Reset()                    { *m = BatchUpdateBlobsResponse{} }
1137func (m *BatchUpdateBlobsResponse) String() string            { return proto.CompactTextString(m) }
1138func (*BatchUpdateBlobsResponse) ProtoMessage()               {}
1139func (*BatchUpdateBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
1140
1141func (m *BatchUpdateBlobsResponse) GetResponses() []*BatchUpdateBlobsResponse_Response {
1142	if m != nil {
1143		return m.Responses
1144	}
1145	return nil
1146}
1147
1148// A response corresponding to a single blob that the client tried to upload.
1149type BatchUpdateBlobsResponse_Response struct {
1150	// The digest to which this response corresponds.
1151	BlobDigest *Digest `protobuf:"bytes,1,opt,name=blob_digest,json=blobDigest" json:"blob_digest,omitempty"`
1152	// The result of attempting to upload that blob.
1153	Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"`
1154}
1155
1156func (m *BatchUpdateBlobsResponse_Response) Reset()         { *m = BatchUpdateBlobsResponse_Response{} }
1157func (m *BatchUpdateBlobsResponse_Response) String() string { return proto.CompactTextString(m) }
1158func (*BatchUpdateBlobsResponse_Response) ProtoMessage()    {}
1159func (*BatchUpdateBlobsResponse_Response) Descriptor() ([]byte, []int) {
1160	return fileDescriptor0, []int{19, 0}
1161}
1162
1163func (m *BatchUpdateBlobsResponse_Response) GetBlobDigest() *Digest {
1164	if m != nil {
1165		return m.BlobDigest
1166	}
1167	return nil
1168}
1169
1170func (m *BatchUpdateBlobsResponse_Response) GetStatus() *google_rpc.Status {
1171	if m != nil {
1172		return m.Status
1173	}
1174	return nil
1175}
1176
1177// A request message for
1178// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
1179type GetTreeRequest struct {
1180	// The instance of the execution system to operate against. A server may
1181	// support multiple instances of the execution system (with their own workers,
1182	// storage, caches, etc.). The server MAY require use of this field to select
1183	// between them in an implementation-defined fashion, otherwise it can be
1184	// omitted.
1185	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1186	// The digest of the root, which must be an encoded
1187	// [Directory][google.devtools.remoteexecution.v1test.Directory] message
1188	// stored in the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1189	RootDigest *Digest `protobuf:"bytes,2,opt,name=root_digest,json=rootDigest" json:"root_digest,omitempty"`
1190	// A maximum page size to request. If present, the server will request no more
1191	// than this many items. Regardless of whether a page size is specified, the
1192	// server may place its own limit on the number of items to be returned and
1193	// require the client to retrieve more items using a subsequent request.
1194	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
1195	// A page token, which must be a value received in a previous
1196	// [GetTreeResponse][google.devtools.remoteexecution.v1test.GetTreeResponse].
1197	// If present, the server will use it to return the following page of results.
1198	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
1199}
1200
1201func (m *GetTreeRequest) Reset()                    { *m = GetTreeRequest{} }
1202func (m *GetTreeRequest) String() string            { return proto.CompactTextString(m) }
1203func (*GetTreeRequest) ProtoMessage()               {}
1204func (*GetTreeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
1205
1206func (m *GetTreeRequest) GetInstanceName() string {
1207	if m != nil {
1208		return m.InstanceName
1209	}
1210	return ""
1211}
1212
1213func (m *GetTreeRequest) GetRootDigest() *Digest {
1214	if m != nil {
1215		return m.RootDigest
1216	}
1217	return nil
1218}
1219
1220func (m *GetTreeRequest) GetPageSize() int32 {
1221	if m != nil {
1222		return m.PageSize
1223	}
1224	return 0
1225}
1226
1227func (m *GetTreeRequest) GetPageToken() string {
1228	if m != nil {
1229		return m.PageToken
1230	}
1231	return ""
1232}
1233
1234// A response message for
1235// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
1236type GetTreeResponse struct {
1237	// The directories descended from the requested root.
1238	Directories []*Directory `protobuf:"bytes,1,rep,name=directories" json:"directories,omitempty"`
1239	// If present, signifies that there are more results which the client can
1240	// retrieve by passing this as the page_token in a subsequent
1241	// [request][google.devtools.remoteexecution.v1test.GetTreeRequest].
1242	// If empty, signifies that this is the last page of results.
1243	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
1244}
1245
1246func (m *GetTreeResponse) Reset()                    { *m = GetTreeResponse{} }
1247func (m *GetTreeResponse) String() string            { return proto.CompactTextString(m) }
1248func (*GetTreeResponse) ProtoMessage()               {}
1249func (*GetTreeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
1250
1251func (m *GetTreeResponse) GetDirectories() []*Directory {
1252	if m != nil {
1253		return m.Directories
1254	}
1255	return nil
1256}
1257
1258func (m *GetTreeResponse) GetNextPageToken() string {
1259	if m != nil {
1260		return m.NextPageToken
1261	}
1262	return ""
1263}
1264
1265// Details for the tool used to call the API.
1266type ToolDetails struct {
1267	// Name of the tool, e.g. bazel.
1268	ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName" json:"tool_name,omitempty"`
1269	// Version of the tool used for the request, e.g. 5.0.3.
1270	ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion" json:"tool_version,omitempty"`
1271}
1272
1273func (m *ToolDetails) Reset()                    { *m = ToolDetails{} }
1274func (m *ToolDetails) String() string            { return proto.CompactTextString(m) }
1275func (*ToolDetails) ProtoMessage()               {}
1276func (*ToolDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
1277
1278func (m *ToolDetails) GetToolName() string {
1279	if m != nil {
1280		return m.ToolName
1281	}
1282	return ""
1283}
1284
1285func (m *ToolDetails) GetToolVersion() string {
1286	if m != nil {
1287		return m.ToolVersion
1288	}
1289	return ""
1290}
1291
1292// An optional Metadata to attach to a RPC request to tell the server about an
1293// external context of the request.
1294// If used, the header name should be remote-request-metadata-bin and the
1295// contents the base64 encoded binary RequestMetadata message.
1296type RequestMetadata struct {
1297	// The details for the tool invoking the requests.
1298	ToolDetails *ToolDetails `protobuf:"bytes,1,opt,name=tool_details,json=toolDetails" json:"tool_details,omitempty"`
1299	// An identifier that ties multiple requests to the same action.
1300	// For example, multiple requests to the CAS, Action Cache, and Execution
1301	// API are used in order to compile foo.cc.
1302	ActionId string `protobuf:"bytes,2,opt,name=action_id,json=actionId" json:"action_id,omitempty"`
1303	// An identifier that ties multiple actions together to a final result.
1304	// For example, multiple actions are required to build and run foo_test.
1305	ToolInvocationId string `protobuf:"bytes,3,opt,name=tool_invocation_id,json=toolInvocationId" json:"tool_invocation_id,omitempty"`
1306	// An identifier to tie multiple tool invocations together. For example,
1307	// runs of foo_test, bar_test and baz_test on a post-submit of a given patch.
1308	CorrelatedInvocationsId string `protobuf:"bytes,4,opt,name=correlated_invocations_id,json=correlatedInvocationsId" json:"correlated_invocations_id,omitempty"`
1309}
1310
1311func (m *RequestMetadata) Reset()                    { *m = RequestMetadata{} }
1312func (m *RequestMetadata) String() string            { return proto.CompactTextString(m) }
1313func (*RequestMetadata) ProtoMessage()               {}
1314func (*RequestMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
1315
1316func (m *RequestMetadata) GetToolDetails() *ToolDetails {
1317	if m != nil {
1318		return m.ToolDetails
1319	}
1320	return nil
1321}
1322
1323func (m *RequestMetadata) GetActionId() string {
1324	if m != nil {
1325		return m.ActionId
1326	}
1327	return ""
1328}
1329
1330func (m *RequestMetadata) GetToolInvocationId() string {
1331	if m != nil {
1332		return m.ToolInvocationId
1333	}
1334	return ""
1335}
1336
1337func (m *RequestMetadata) GetCorrelatedInvocationsId() string {
1338	if m != nil {
1339		return m.CorrelatedInvocationsId
1340	}
1341	return ""
1342}
1343
1344func init() {
1345	proto.RegisterType((*Action)(nil), "google.devtools.remoteexecution.v1test.Action")
1346	proto.RegisterType((*Command)(nil), "google.devtools.remoteexecution.v1test.Command")
1347	proto.RegisterType((*Command_EnvironmentVariable)(nil), "google.devtools.remoteexecution.v1test.Command.EnvironmentVariable")
1348	proto.RegisterType((*Platform)(nil), "google.devtools.remoteexecution.v1test.Platform")
1349	proto.RegisterType((*Platform_Property)(nil), "google.devtools.remoteexecution.v1test.Platform.Property")
1350	proto.RegisterType((*Directory)(nil), "google.devtools.remoteexecution.v1test.Directory")
1351	proto.RegisterType((*FileNode)(nil), "google.devtools.remoteexecution.v1test.FileNode")
1352	proto.RegisterType((*DirectoryNode)(nil), "google.devtools.remoteexecution.v1test.DirectoryNode")
1353	proto.RegisterType((*Digest)(nil), "google.devtools.remoteexecution.v1test.Digest")
1354	proto.RegisterType((*ActionResult)(nil), "google.devtools.remoteexecution.v1test.ActionResult")
1355	proto.RegisterType((*OutputFile)(nil), "google.devtools.remoteexecution.v1test.OutputFile")
1356	proto.RegisterType((*OutputDirectory)(nil), "google.devtools.remoteexecution.v1test.OutputDirectory")
1357	proto.RegisterType((*ExecuteRequest)(nil), "google.devtools.remoteexecution.v1test.ExecuteRequest")
1358	proto.RegisterType((*ExecuteResponse)(nil), "google.devtools.remoteexecution.v1test.ExecuteResponse")
1359	proto.RegisterType((*ExecuteOperationMetadata)(nil), "google.devtools.remoteexecution.v1test.ExecuteOperationMetadata")
1360	proto.RegisterType((*GetActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.GetActionResultRequest")
1361	proto.RegisterType((*UpdateActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateActionResultRequest")
1362	proto.RegisterType((*FindMissingBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsRequest")
1363	proto.RegisterType((*FindMissingBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsResponse")
1364	proto.RegisterType((*UpdateBlobRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateBlobRequest")
1365	proto.RegisterType((*BatchUpdateBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsRequest")
1366	proto.RegisterType((*BatchUpdateBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse")
1367	proto.RegisterType((*BatchUpdateBlobsResponse_Response)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse.Response")
1368	proto.RegisterType((*GetTreeRequest)(nil), "google.devtools.remoteexecution.v1test.GetTreeRequest")
1369	proto.RegisterType((*GetTreeResponse)(nil), "google.devtools.remoteexecution.v1test.GetTreeResponse")
1370	proto.RegisterType((*ToolDetails)(nil), "google.devtools.remoteexecution.v1test.ToolDetails")
1371	proto.RegisterType((*RequestMetadata)(nil), "google.devtools.remoteexecution.v1test.RequestMetadata")
1372	proto.RegisterEnum("google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage", ExecuteOperationMetadata_Stage_name, ExecuteOperationMetadata_Stage_value)
1373}
1374
1375// Reference imports to suppress errors if they are not otherwise used.
1376var _ context.Context
1377var _ grpc.ClientConn
1378
1379// This is a compile-time assertion to ensure that this generated file
1380// is compatible with the grpc package it is being compiled against.
1381const _ = grpc.SupportPackageIsVersion4
1382
1383// Client API for Execution service
1384
1385type ExecutionClient interface {
1386	// Execute an action remotely.
1387	//
1388	// In order to execute an action, the client must first upload all of the
1389	// inputs, as well as the [Command][google.devtools.remoteexecution.v1test.Command]
1390	// to run, into the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1391	// It then calls `Execute` with an [Action][google.devtools.remoteexecution.v1test.Action]
1392	// referring to them. The server will run the action and eventually return the
1393	// result.
1394	//
1395	// The input `Action`'s fields MUST meet the various canonicalization
1396	// requirements specified in the documentation for their types so that it has
1397	// the same digest as other logically equivalent `Action`s. The server MAY
1398	// enforce the requirements and return errors if a non-canonical input is
1399	// received. It MAY also proceed without verifying some or all of the
1400	// requirements, such as for performance reasons. If the server does not
1401	// verify the requirement, then it will treat the `Action` as distinct from
1402	// another logically equivalent action if they hash differently.
1403	//
1404	// Returns a [google.longrunning.Operation][google.longrunning.Operation]
1405	// describing the resulting execution, with eventual `response`
1406	// [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse].
1407	// The `metadata` on the operation is of type
1408	// [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata].
1409	//
1410	// To query the operation, you can use the
1411	// [Operations API][google.longrunning.Operations.GetOperation]. If you wish
1412	// to allow the server to stream operations updates, rather than requiring
1413	// client polling, you can use the
1414	// [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name`
1415	// as the `target`.
1416	//
1417	// When using the Watcher API, the initial `data` will be the `Operation` at
1418	// the time of the request. Updates will be provided periodically by the
1419	// server until the `Operation` completes, at which point the response message
1420	// will (assuming no error) be at `data.response`.
1421	//
1422	// The server NEED NOT implement other methods or functionality of the
1423	// Operation and Watcher APIs.
1424	//
1425	// Errors discovered during creation of the `Operation` will be reported
1426	// as gRPC Status errors, while errors that occurred while running the
1427	// `Operation` will be reported in the `Operation` error field.
1428	// The possible errors include:
1429	// * `INVALID_ARGUMENT`: One or more arguments are invalid.
1430	// * `FAILED_PRECONDITION`: One or more errors occurred in setting up the
1431	//   action requested, such as a missing input or no worker being available.
1432	//   The client may be able to fix the errors and retry.
1433	// * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run
1434	//   the action.
1435	// * `UNAVAILABLE`: Due to a transient condition, such as all workers being
1436	//   occupied (and the server does not support a queue), the action could not
1437	//   be started. The client should retry.
1438	// * `INTERNAL`: An internal error occurred in the execution engine or the
1439	//   worker.
1440	// * `DEADLINE_EXCEEDED`: The execution timed out.
1441	Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
1442}
1443
1444type executionClient struct {
1445	cc *grpc.ClientConn
1446}
1447
1448func NewExecutionClient(cc *grpc.ClientConn) ExecutionClient {
1449	return &executionClient{cc}
1450}
1451
1452func (c *executionClient) Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
1453	out := new(google_longrunning.Operation)
1454	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.Execution/Execute", in, out, c.cc, opts...)
1455	if err != nil {
1456		return nil, err
1457	}
1458	return out, nil
1459}
1460
1461// Server API for Execution service
1462
1463type ExecutionServer interface {
1464	// Execute an action remotely.
1465	//
1466	// In order to execute an action, the client must first upload all of the
1467	// inputs, as well as the [Command][google.devtools.remoteexecution.v1test.Command]
1468	// to run, into the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1469	// It then calls `Execute` with an [Action][google.devtools.remoteexecution.v1test.Action]
1470	// referring to them. The server will run the action and eventually return the
1471	// result.
1472	//
1473	// The input `Action`'s fields MUST meet the various canonicalization
1474	// requirements specified in the documentation for their types so that it has
1475	// the same digest as other logically equivalent `Action`s. The server MAY
1476	// enforce the requirements and return errors if a non-canonical input is
1477	// received. It MAY also proceed without verifying some or all of the
1478	// requirements, such as for performance reasons. If the server does not
1479	// verify the requirement, then it will treat the `Action` as distinct from
1480	// another logically equivalent action if they hash differently.
1481	//
1482	// Returns a [google.longrunning.Operation][google.longrunning.Operation]
1483	// describing the resulting execution, with eventual `response`
1484	// [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse].
1485	// The `metadata` on the operation is of type
1486	// [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata].
1487	//
1488	// To query the operation, you can use the
1489	// [Operations API][google.longrunning.Operations.GetOperation]. If you wish
1490	// to allow the server to stream operations updates, rather than requiring
1491	// client polling, you can use the
1492	// [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name`
1493	// as the `target`.
1494	//
1495	// When using the Watcher API, the initial `data` will be the `Operation` at
1496	// the time of the request. Updates will be provided periodically by the
1497	// server until the `Operation` completes, at which point the response message
1498	// will (assuming no error) be at `data.response`.
1499	//
1500	// The server NEED NOT implement other methods or functionality of the
1501	// Operation and Watcher APIs.
1502	//
1503	// Errors discovered during creation of the `Operation` will be reported
1504	// as gRPC Status errors, while errors that occurred while running the
1505	// `Operation` will be reported in the `Operation` error field.
1506	// The possible errors include:
1507	// * `INVALID_ARGUMENT`: One or more arguments are invalid.
1508	// * `FAILED_PRECONDITION`: One or more errors occurred in setting up the
1509	//   action requested, such as a missing input or no worker being available.
1510	//   The client may be able to fix the errors and retry.
1511	// * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run
1512	//   the action.
1513	// * `UNAVAILABLE`: Due to a transient condition, such as all workers being
1514	//   occupied (and the server does not support a queue), the action could not
1515	//   be started. The client should retry.
1516	// * `INTERNAL`: An internal error occurred in the execution engine or the
1517	//   worker.
1518	// * `DEADLINE_EXCEEDED`: The execution timed out.
1519	Execute(context.Context, *ExecuteRequest) (*google_longrunning.Operation, error)
1520}
1521
1522func RegisterExecutionServer(s *grpc.Server, srv ExecutionServer) {
1523	s.RegisterService(&_Execution_serviceDesc, srv)
1524}
1525
1526func _Execution_Execute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1527	in := new(ExecuteRequest)
1528	if err := dec(in); err != nil {
1529		return nil, err
1530	}
1531	if interceptor == nil {
1532		return srv.(ExecutionServer).Execute(ctx, in)
1533	}
1534	info := &grpc.UnaryServerInfo{
1535		Server:     srv,
1536		FullMethod: "/google.devtools.remoteexecution.v1test.Execution/Execute",
1537	}
1538	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1539		return srv.(ExecutionServer).Execute(ctx, req.(*ExecuteRequest))
1540	}
1541	return interceptor(ctx, in, info, handler)
1542}
1543
1544var _Execution_serviceDesc = grpc.ServiceDesc{
1545	ServiceName: "google.devtools.remoteexecution.v1test.Execution",
1546	HandlerType: (*ExecutionServer)(nil),
1547	Methods: []grpc.MethodDesc{
1548		{
1549			MethodName: "Execute",
1550			Handler:    _Execution_Execute_Handler,
1551		},
1552	},
1553	Streams:  []grpc.StreamDesc{},
1554	Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1555}
1556
1557// Client API for ActionCache service
1558
1559type ActionCacheClient interface {
1560	// Retrieve a cached execution result.
1561	//
1562	// Errors:
1563	// * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
1564	GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error)
1565	// Upload a new execution result.
1566	//
1567	// This method is intended for servers which implement the distributed cache
1568	// independently of the [Execution][google.devtools.remoteexecution.v1test.Execution]
1569	// API. As a result, it is OPTIONAL for servers to implement.
1570	//
1571	// Errors:
1572	// * `NOT_IMPLEMENTED`: This method is not supported by the server.
1573	// * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the
1574	//   entry to the cache.
1575	UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error)
1576}
1577
1578type actionCacheClient struct {
1579	cc *grpc.ClientConn
1580}
1581
1582func NewActionCacheClient(cc *grpc.ClientConn) ActionCacheClient {
1583	return &actionCacheClient{cc}
1584}
1585
1586func (c *actionCacheClient) GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) {
1587	out := new(ActionResult)
1588	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult", in, out, c.cc, opts...)
1589	if err != nil {
1590		return nil, err
1591	}
1592	return out, nil
1593}
1594
1595func (c *actionCacheClient) UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) {
1596	out := new(ActionResult)
1597	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult", in, out, c.cc, opts...)
1598	if err != nil {
1599		return nil, err
1600	}
1601	return out, nil
1602}
1603
1604// Server API for ActionCache service
1605
1606type ActionCacheServer interface {
1607	// Retrieve a cached execution result.
1608	//
1609	// Errors:
1610	// * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
1611	GetActionResult(context.Context, *GetActionResultRequest) (*ActionResult, error)
1612	// Upload a new execution result.
1613	//
1614	// This method is intended for servers which implement the distributed cache
1615	// independently of the [Execution][google.devtools.remoteexecution.v1test.Execution]
1616	// API. As a result, it is OPTIONAL for servers to implement.
1617	//
1618	// Errors:
1619	// * `NOT_IMPLEMENTED`: This method is not supported by the server.
1620	// * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the
1621	//   entry to the cache.
1622	UpdateActionResult(context.Context, *UpdateActionResultRequest) (*ActionResult, error)
1623}
1624
1625func RegisterActionCacheServer(s *grpc.Server, srv ActionCacheServer) {
1626	s.RegisterService(&_ActionCache_serviceDesc, srv)
1627}
1628
1629func _ActionCache_GetActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1630	in := new(GetActionResultRequest)
1631	if err := dec(in); err != nil {
1632		return nil, err
1633	}
1634	if interceptor == nil {
1635		return srv.(ActionCacheServer).GetActionResult(ctx, in)
1636	}
1637	info := &grpc.UnaryServerInfo{
1638		Server:     srv,
1639		FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult",
1640	}
1641	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1642		return srv.(ActionCacheServer).GetActionResult(ctx, req.(*GetActionResultRequest))
1643	}
1644	return interceptor(ctx, in, info, handler)
1645}
1646
1647func _ActionCache_UpdateActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1648	in := new(UpdateActionResultRequest)
1649	if err := dec(in); err != nil {
1650		return nil, err
1651	}
1652	if interceptor == nil {
1653		return srv.(ActionCacheServer).UpdateActionResult(ctx, in)
1654	}
1655	info := &grpc.UnaryServerInfo{
1656		Server:     srv,
1657		FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult",
1658	}
1659	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1660		return srv.(ActionCacheServer).UpdateActionResult(ctx, req.(*UpdateActionResultRequest))
1661	}
1662	return interceptor(ctx, in, info, handler)
1663}
1664
1665var _ActionCache_serviceDesc = grpc.ServiceDesc{
1666	ServiceName: "google.devtools.remoteexecution.v1test.ActionCache",
1667	HandlerType: (*ActionCacheServer)(nil),
1668	Methods: []grpc.MethodDesc{
1669		{
1670			MethodName: "GetActionResult",
1671			Handler:    _ActionCache_GetActionResult_Handler,
1672		},
1673		{
1674			MethodName: "UpdateActionResult",
1675			Handler:    _ActionCache_UpdateActionResult_Handler,
1676		},
1677	},
1678	Streams:  []grpc.StreamDesc{},
1679	Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1680}
1681
1682// Client API for ContentAddressableStorage service
1683
1684type ContentAddressableStorageClient interface {
1685	// Determine if blobs are present in the CAS.
1686	//
1687	// Clients can use this API before uploading blobs to determine which ones are
1688	// already present in the CAS and do not need to be uploaded again.
1689	//
1690	// There are no method-specific errors.
1691	FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error)
1692	// Upload many blobs at once.
1693	//
1694	// The client MUST NOT upload blobs with a combined total size of more than 10
1695	// MiB using this API. Such requests should either be split into smaller
1696	// chunks or uploaded using the
1697	// [ByteStream API][google.bytestream.ByteStream], as appropriate.
1698	//
1699	// This request is equivalent to calling [UpdateBlob][] on each individual
1700	// blob, in parallel. The requests may succeed or fail independently.
1701	//
1702	// Errors:
1703	// * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of
1704	//   data.
1705	//
1706	// Individual requests may return the following errors, additionally:
1707	// * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.
1708	// * `INVALID_ARGUMENT`: The [Digest][google.devtools.remoteexecution.v1test.Digest]
1709	// does not match the provided data.
1710	BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error)
1711	// Fetch the entire directory tree rooted at a node.
1712	//
1713	// This request must be targeted at a
1714	// [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
1715	// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
1716	// (CAS). The server will enumerate the `Directory` tree recursively and
1717	// return every node descended from the root.
1718	// The exact traversal order is unspecified and, unless retrieving subsequent
1719	// pages from an earlier request, is not guaranteed to be stable across
1720	// multiple invocations of `GetTree`.
1721	//
1722	// If part of the tree is missing from the CAS, the server will return the
1723	// portion present and omit the rest.
1724	//
1725	// * `NOT_FOUND`: The requested tree root is not present in the CAS.
1726	GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error)
1727}
1728
1729type contentAddressableStorageClient struct {
1730	cc *grpc.ClientConn
1731}
1732
1733func NewContentAddressableStorageClient(cc *grpc.ClientConn) ContentAddressableStorageClient {
1734	return &contentAddressableStorageClient{cc}
1735}
1736
1737func (c *contentAddressableStorageClient) FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error) {
1738	out := new(FindMissingBlobsResponse)
1739	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs", in, out, c.cc, opts...)
1740	if err != nil {
1741		return nil, err
1742	}
1743	return out, nil
1744}
1745
1746func (c *contentAddressableStorageClient) BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error) {
1747	out := new(BatchUpdateBlobsResponse)
1748	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs", in, out, c.cc, opts...)
1749	if err != nil {
1750		return nil, err
1751	}
1752	return out, nil
1753}
1754
1755func (c *contentAddressableStorageClient) GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error) {
1756	out := new(GetTreeResponse)
1757	err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree", in, out, c.cc, opts...)
1758	if err != nil {
1759		return nil, err
1760	}
1761	return out, nil
1762}
1763
1764// Server API for ContentAddressableStorage service
1765
1766type ContentAddressableStorageServer interface {
1767	// Determine if blobs are present in the CAS.
1768	//
1769	// Clients can use this API before uploading blobs to determine which ones are
1770	// already present in the CAS and do not need to be uploaded again.
1771	//
1772	// There are no method-specific errors.
1773	FindMissingBlobs(context.Context, *FindMissingBlobsRequest) (*FindMissingBlobsResponse, error)
1774	// Upload many blobs at once.
1775	//
1776	// The client MUST NOT upload blobs with a combined total size of more than 10
1777	// MiB using this API. Such requests should either be split into smaller
1778	// chunks or uploaded using the
1779	// [ByteStream API][google.bytestream.ByteStream], as appropriate.
1780	//
1781	// This request is equivalent to calling [UpdateBlob][] on each individual
1782	// blob, in parallel. The requests may succeed or fail independently.
1783	//
1784	// Errors:
1785	// * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of
1786	//   data.
1787	//
1788	// Individual requests may return the following errors, additionally:
1789	// * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.
1790	// * `INVALID_ARGUMENT`: The [Digest][google.devtools.remoteexecution.v1test.Digest]
1791	// does not match the provided data.
1792	BatchUpdateBlobs(context.Context, *BatchUpdateBlobsRequest) (*BatchUpdateBlobsResponse, error)
1793	// Fetch the entire directory tree rooted at a node.
1794	//
1795	// This request must be targeted at a
1796	// [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
1797	// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
1798	// (CAS). The server will enumerate the `Directory` tree recursively and
1799	// return every node descended from the root.
1800	// The exact traversal order is unspecified and, unless retrieving subsequent
1801	// pages from an earlier request, is not guaranteed to be stable across
1802	// multiple invocations of `GetTree`.
1803	//
1804	// If part of the tree is missing from the CAS, the server will return the
1805	// portion present and omit the rest.
1806	//
1807	// * `NOT_FOUND`: The requested tree root is not present in the CAS.
1808	GetTree(context.Context, *GetTreeRequest) (*GetTreeResponse, error)
1809}
1810
1811func RegisterContentAddressableStorageServer(s *grpc.Server, srv ContentAddressableStorageServer) {
1812	s.RegisterService(&_ContentAddressableStorage_serviceDesc, srv)
1813}
1814
1815func _ContentAddressableStorage_FindMissingBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1816	in := new(FindMissingBlobsRequest)
1817	if err := dec(in); err != nil {
1818		return nil, err
1819	}
1820	if interceptor == nil {
1821		return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, in)
1822	}
1823	info := &grpc.UnaryServerInfo{
1824		Server:     srv,
1825		FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs",
1826	}
1827	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1828		return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, req.(*FindMissingBlobsRequest))
1829	}
1830	return interceptor(ctx, in, info, handler)
1831}
1832
1833func _ContentAddressableStorage_BatchUpdateBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1834	in := new(BatchUpdateBlobsRequest)
1835	if err := dec(in); err != nil {
1836		return nil, err
1837	}
1838	if interceptor == nil {
1839		return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, in)
1840	}
1841	info := &grpc.UnaryServerInfo{
1842		Server:     srv,
1843		FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs",
1844	}
1845	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1846		return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, req.(*BatchUpdateBlobsRequest))
1847	}
1848	return interceptor(ctx, in, info, handler)
1849}
1850
1851func _ContentAddressableStorage_GetTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1852	in := new(GetTreeRequest)
1853	if err := dec(in); err != nil {
1854		return nil, err
1855	}
1856	if interceptor == nil {
1857		return srv.(ContentAddressableStorageServer).GetTree(ctx, in)
1858	}
1859	info := &grpc.UnaryServerInfo{
1860		Server:     srv,
1861		FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree",
1862	}
1863	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1864		return srv.(ContentAddressableStorageServer).GetTree(ctx, req.(*GetTreeRequest))
1865	}
1866	return interceptor(ctx, in, info, handler)
1867}
1868
1869var _ContentAddressableStorage_serviceDesc = grpc.ServiceDesc{
1870	ServiceName: "google.devtools.remoteexecution.v1test.ContentAddressableStorage",
1871	HandlerType: (*ContentAddressableStorageServer)(nil),
1872	Methods: []grpc.MethodDesc{
1873		{
1874			MethodName: "FindMissingBlobs",
1875			Handler:    _ContentAddressableStorage_FindMissingBlobs_Handler,
1876		},
1877		{
1878			MethodName: "BatchUpdateBlobs",
1879			Handler:    _ContentAddressableStorage_BatchUpdateBlobs_Handler,
1880		},
1881		{
1882			MethodName: "GetTree",
1883			Handler:    _ContentAddressableStorage_GetTree_Handler,
1884		},
1885	},
1886	Streams:  []grpc.StreamDesc{},
1887	Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1888}
1889
1890func init() {
1891	proto.RegisterFile("google/devtools/remoteexecution/v1test/remote_execution.proto", fileDescriptor0)
1892}
1893
1894var fileDescriptor0 = []byte{
1895	// 1868 bytes of a gzipped FileDescriptorProto
1896	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcf, 0x6f, 0x1c, 0x57,
1897	0x1d, 0x67, 0x76, 0xbd, 0xeb, 0xdd, 0xef, 0xae, 0x63, 0xe7, 0x35, 0x34, 0x9b, 0x6d, 0x83, 0xdc,
1898	0xa9, 0x54, 0x59, 0x56, 0x3b, 0x4b, 0x9c, 0x96, 0x08, 0x57, 0xa5, 0xc4, 0xeb, 0x75, 0x6a, 0x35,
1899	0xb1, 0xdd, 0xb1, 0xd7, 0x6d, 0x4a, 0xa5, 0xe1, 0xed, 0xcc, 0xf3, 0x66, 0xc8, 0xee, 0xbc, 0xe1,
1900	0xbd, 0xb7, 0x6e, 0xd2, 0x10, 0x0e, 0x08, 0x89, 0x03, 0x02, 0x09, 0x2a, 0x04, 0x12, 0x37, 0x24,
1901	0x84, 0x84, 0x38, 0xf1, 0x1f, 0xc0, 0x1f, 0xc0, 0x01, 0x2e, 0x9c, 0x11, 0x27, 0x4e, 0x9c, 0x11,
1902	0x12, 0xe8, 0xfd, 0x98, 0x99, 0xdd, 0xb5, 0x43, 0x66, 0xed, 0x44, 0xe2, 0xb6, 0xf3, 0x7d, 0xef,
1903	0xfb, 0xf9, 0xfe, 0xfe, 0xf1, 0x6c, 0x78, 0xa7, 0x4f, 0x69, 0x7f, 0x40, 0x5a, 0x01, 0x39, 0x16,
1904	0x94, 0x0e, 0x78, 0x8b, 0x91, 0x21, 0x15, 0x84, 0x3c, 0x20, 0xfe, 0x48, 0x84, 0x34, 0x6a, 0x1d,
1905	0x5f, 0x13, 0x84, 0x0b, 0x43, 0xf6, 0x52, 0xba, 0x13, 0x33, 0x2a, 0x28, 0x7a, 0x4d, 0xb3, 0x3b,
1906	0x09, 0xbb, 0x33, 0xc5, 0xee, 0x68, 0xf6, 0xe6, 0xcb, 0x46, 0x0c, 0x8e, 0xc3, 0x16, 0x8e, 0x22,
1907	0x2a, 0xb0, 0x3c, 0xe5, 0x1a, 0xa5, 0xf9, 0xaa, 0x39, 0x1d, 0xd0, 0xa8, 0xcf, 0x46, 0x51, 0x14,
1908	0x46, 0xfd, 0x16, 0x8d, 0x09, 0x9b, 0xb8, 0xf4, 0x25, 0x73, 0x49, 0x7d, 0xf5, 0x46, 0x47, 0xad,
1909	0x60, 0xa4, 0x2f, 0x98, 0xf3, 0xcb, 0xe6, 0x9c, 0xc5, 0x7e, 0x8b, 0x0b, 0x2c, 0x46, 0x86, 0xd1,
1910	0xfe, 0x7d, 0x11, 0xca, 0x37, 0x7d, 0x79, 0x13, 0x75, 0xe1, 0x82, 0x4f, 0x87, 0x43, 0x1c, 0x05,
1911	0x5e, 0x10, 0xf6, 0x09, 0x17, 0x0d, 0x6b, 0xd9, 0x5a, 0xa9, 0xad, 0x39, 0x4e, 0x3e, 0x3b, 0x9c,
1912	0x4d, 0xc5, 0xe5, 0x2e, 0x18, 0x14, 0xfd, 0x89, 0x3e, 0x86, 0x8b, 0x61, 0x14, 0x8f, 0x84, 0xc7,
1913	0x28, 0x15, 0x09, 0x72, 0xe1, 0x4c, 0xc8, 0x8b, 0x0a, 0xc8, 0xa5, 0x54, 0x18, 0xec, 0x57, 0xa0,
1914	0x4e, 0x47, 0x42, 0x82, 0x1f, 0x85, 0x03, 0xc2, 0x1b, 0xc5, 0xe5, 0xe2, 0x4a, 0xd5, 0xad, 0x69,
1915	0xda, 0x96, 0x24, 0xa1, 0x37, 0x00, 0x99, 0x2b, 0x41, 0xc8, 0x88, 0x2f, 0x28, 0x0b, 0x09, 0x6f,
1916	0xcc, 0xa9, 0x8b, 0x17, 0xf5, 0xc9, 0x66, 0x76, 0x80, 0x6e, 0x43, 0x25, 0x1e, 0x60, 0x71, 0x44,
1917	0xd9, 0xb0, 0x51, 0x52, 0x4a, 0x7e, 0x39, 0xaf, 0x92, 0x7b, 0x86, 0xcf, 0x4d, 0x11, 0xd0, 0x75,
1918	0x98, 0x17, 0xe1, 0x90, 0xd0, 0x91, 0x68, 0x94, 0x15, 0xd8, 0x95, 0x04, 0x2c, 0x09, 0x94, 0xb3,
1919	0x69, 0x02, 0xe5, 0x26, 0x37, 0xd1, 0x32, 0xd4, 0x03, 0xea, 0x45, 0x54, 0x78, 0x3e, 0xf6, 0xef,
1920	0x91, 0xc6, 0xfc, 0xb2, 0xb5, 0x52, 0x71, 0x21, 0xa0, 0x3b, 0x54, 0xb4, 0x25, 0xc5, 0xfe, 0x9b,
1921	0x05, 0xf3, 0x6d, 0xed, 0x64, 0xf4, 0x32, 0x54, 0x31, 0xeb, 0x8f, 0x86, 0x24, 0x12, 0xbc, 0x61,
1922	0x29, 0xb3, 0x32, 0x02, 0x7a, 0x00, 0x5f, 0x24, 0xd1, 0x71, 0xc8, 0x68, 0x24, 0xbf, 0xbd, 0x63,
1923	0xcc, 0x42, 0xdc, 0x93, 0x9e, 0x2a, 0x2c, 0x17, 0x57, 0x6a, 0x6b, 0xed, 0xbc, 0xb6, 0x19, 0x69,
1924	0x4e, 0x27, 0x03, 0x3b, 0x34, 0x58, 0xee, 0x25, 0x72, 0x92, 0xc8, 0x9b, 0xef, 0xc2, 0x0b, 0xa7,
1925	0x5c, 0x46, 0x08, 0xe6, 0x22, 0x3c, 0x24, 0x2a, 0xb5, 0xaa, 0xae, 0xfa, 0x8d, 0x2e, 0x41, 0xe9,
1926	0x18, 0x0f, 0x46, 0x44, 0x65, 0x45, 0xd5, 0xd5, 0x1f, 0xf6, 0x2f, 0x2d, 0xa8, 0x24, 0x2e, 0x45,
1927	0x77, 0x01, 0x62, 0x26, 0xb3, 0x5e, 0xc8, 0xe8, 0x59, 0x4a, 0xf9, 0xaf, 0xce, 0x1a, 0x18, 0x67,
1928	0x4f, 0x43, 0x3c, 0x74, 0xc7, 0xc0, 0x9a, 0x6f, 0x42, 0x25, 0xa1, 0xcf, 0xa0, 0xdd, 0xef, 0x2c,
1929	0xa8, 0x26, 0x79, 0xf3, 0x10, 0x6d, 0x41, 0x49, 0x27, 0xa0, 0xd6, 0x2c, 0x77, 0xca, 0xc8, 0x14,
1930	0xdd, 0xa1, 0x01, 0x71, 0x35, 0x3b, 0xfa, 0x10, 0x6a, 0xe3, 0x59, 0xaa, 0x83, 0xf4, 0x56, 0xfe,
1931	0x2a, 0x31, 0xfa, 0x28, 0xc8, 0x71, 0x24, 0xfb, 0x87, 0x16, 0x54, 0x12, 0x61, 0xa7, 0x5a, 0xb9,
1932	0x05, 0xe5, 0x73, 0x95, 0xa6, 0xe1, 0x46, 0xaf, 0xc2, 0x42, 0xc8, 0x4d, 0x27, 0x94, 0x01, 0x6f,
1933	0xcc, 0xa9, 0xec, 0xad, 0x87, 0xbc, 0x93, 0xd2, 0xec, 0xfb, 0xb0, 0x30, 0xa1, 0xeb, 0xf3, 0xd4,
1934	0xc8, 0x7e, 0x1b, 0xca, 0xa6, 0x5b, 0x20, 0x98, 0xbb, 0x87, 0xf9, 0xbd, 0x44, 0x8a, 0xfc, 0x8d,
1935	0xae, 0x02, 0xf0, 0xf0, 0x33, 0xe2, 0xf5, 0x1e, 0x0a, 0xe5, 0x70, 0x6b, 0xa5, 0xe8, 0x56, 0x25,
1936	0x65, 0x43, 0x12, 0xec, 0x3f, 0x17, 0xa1, 0xae, 0xdb, 0xa3, 0x4b, 0xf8, 0x68, 0x20, 0x50, 0x77,
1937	0xaa, 0xe3, 0xe8, 0x10, 0xad, 0xe5, 0xd5, 0x6d, 0x37, 0xed, 0x4c, 0x93, 0x5d, 0xea, 0xe8, 0xd4,
1938	0x2e, 0x55, 0x54, 0xe0, 0x37, 0x66, 0x03, 0x4f, 0x3d, 0x7b, 0x5a, 0x7b, 0x7b, 0x09, 0xaa, 0xe4,
1939	0x41, 0x28, 0x3c, 0x9f, 0x06, 0x3a, 0x34, 0x25, 0xb7, 0x22, 0x09, 0x6d, 0x19, 0x05, 0xe9, 0x0b,
1940	0x11, 0x50, 0xd9, 0xaa, 0xf1, 0xa7, 0xaa, 0xfb, 0xd5, 0xdd, 0xaa, 0xa6, 0xb8, 0xf8, 0x53, 0xb4,
1941	0x0f, 0x0b, 0xe6, 0xd8, 0xc4, 0xa5, 0x7c, 0xa6, 0xb8, 0xd4, 0x35, 0x88, 0x89, 0x89, 0x96, 0x49,
1942	0x18, 0x53, 0x32, 0xe7, 0x53, 0x99, 0x84, 0xb1, 0x4c, 0xa6, 0x3c, 0x36, 0x32, 0x2b, 0x67, 0x96,
1943	0x49, 0x18, 0xd3, 0x5f, 0xf6, 0x6f, 0x2c, 0x80, 0x2c, 0x10, 0x32, 0x2d, 0x62, 0x2c, 0xd2, 0xb4,
1944	0x90, 0xbf, 0x9f, 0x59, 0x39, 0x34, 0x60, 0xde, 0xa7, 0x91, 0x20, 0x91, 0x68, 0x14, 0x95, 0x6d,
1945	0xc9, 0x67, 0xbe, 0x42, 0x19, 0xc2, 0xe2, 0x54, 0x50, 0x9f, 0xa7, 0xb6, 0xf6, 0xe7, 0x05, 0xb8,
1946	0xa0, 0xa5, 0x13, 0x97, 0x7c, 0x7b, 0x94, 0xd4, 0x73, 0xc4, 0x05, 0x8e, 0x7c, 0xe2, 0x8d, 0x95,
1947	0x68, 0x3d, 0x21, 0xee, 0x98, 0x52, 0xc5, 0xaa, 0x48, 0x66, 0x95, 0x6f, 0x4a, 0xcb, 0x70, 0xa3,
1948	0x55, 0xb8, 0xc8, 0xef, 0x87, 0xb1, 0x9e, 0x7b, 0xde, 0x80, 0xd2, 0xfb, 0xa3, 0x58, 0xf9, 0xad,
1949	0xe2, 0x2e, 0xca, 0x03, 0x35, 0xfd, 0x6e, 0x2b, 0x32, 0xba, 0x0e, 0x2f, 0x0a, 0x2a, 0xf0, 0xc0,
1950	0xd3, 0xcb, 0x85, 0xac, 0x46, 0xcf, 0xa7, 0xa3, 0x48, 0x98, 0xb4, 0x7e, 0x41, 0x9d, 0x6e, 0x47,
1951	0x26, 0xca, 0x6d, 0x79, 0x74, 0x2a, 0x93, 0xae, 0xfc, 0x92, 0xaa, 0xfc, 0x29, 0x26, 0xdd, 0x03,
1952	0xbe, 0x6f, 0xc1, 0x62, 0xea, 0x15, 0x1e, 0xd3, 0x88, 0x13, 0x74, 0x1b, 0xca, 0x4c, 0x35, 0x04,
1953	0xb3, 0x23, 0xbd, 0x39, 0xa3, 0xc5, 0x8a, 0xd7, 0x35, 0x18, 0xd2, 0xc9, 0xca, 0xe4, 0xc0, 0x33,
1954	0xa0, 0x05, 0x9d, 0x0b, 0x9a, 0xa8, 0x2f, 0xdb, 0xff, 0x2a, 0x40, 0xc3, 0xa8, 0xb1, 0x9b, 0xac,
1955	0x7f, 0x77, 0x88, 0xc0, 0x01, 0x16, 0x18, 0x7d, 0x02, 0x25, 0x2e, 0x70, 0x5f, 0x87, 0xe7, 0xc2,
1956	0xda, 0x56, 0x5e, 0x75, 0x9e, 0x04, 0xe8, 0xec, 0x4b, 0x34, 0x57, 0x83, 0xca, 0x2a, 0xd4, 0x11,
1957	0x3a, 0xdf, 0xfa, 0x56, 0xd7, 0x20, 0xa6, 0xf2, 0x5f, 0x07, 0x64, 0xda, 0x09, 0x17, 0x8c, 0xe0,
1958	0xa1, 0x4e, 0xaf, 0xa2, 0x4a, 0xaf, 0x25, 0x7d, 0xb2, 0xaf, 0x0e, 0x54, 0x8a, 0xe9, 0xdb, 0xb2,
1959	0x11, 0x8c, 0xdf, 0x9e, 0x4b, 0x6f, 0x13, 0xc6, 0xb2, 0xdb, 0xf6, 0x2e, 0x94, 0x94, 0x01, 0xa8,
1960	0x06, 0xf3, 0xdd, 0x9d, 0xf7, 0x77, 0x76, 0x3f, 0xdc, 0x59, 0xfa, 0x02, 0x5a, 0x84, 0x5a, 0xfb,
1961	0x66, 0xfb, 0xbd, 0x8e, 0xd7, 0x7e, 0xaf, 0xd3, 0x7e, 0x7f, 0xc9, 0x42, 0x00, 0xe5, 0x0f, 0xba,
1962	0x9d, 0x6e, 0x67, 0x73, 0xa9, 0x80, 0x16, 0xa0, 0xda, 0xf9, 0xa8, 0xd3, 0xee, 0x1e, 0x6c, 0xef,
1963	0xdc, 0x5a, 0x2a, 0xca, 0xcf, 0xf6, 0xee, 0x9d, 0xbd, 0xdb, 0x9d, 0x83, 0xce, 0xe6, 0xd2, 0x9c,
1964	0xfd, 0x53, 0x0b, 0x5e, 0xbc, 0x45, 0xc4, 0x44, 0xf4, 0x66, 0xa9, 0x90, 0xe7, 0xe1, 0x41, 0xfb,
1965	0x9f, 0x16, 0x5c, 0xe9, 0xc6, 0x01, 0x16, 0xe4, 0xff, 0x4a, 0x2f, 0x74, 0x37, 0x05, 0x35, 0xe9,
1966	0x5c, 0x3c, 0x47, 0x8d, 0x18, 0x68, 0x53, 0x04, 0x3f, 0xb1, 0xe0, 0xf2, 0x56, 0x18, 0x05, 0x77,
1967	0x42, 0xce, 0xc3, 0xa8, 0xbf, 0x31, 0xa0, 0x3d, 0x3e, 0x93, 0xc1, 0x1f, 0x40, 0xbd, 0x37, 0xa0,
1968	0x3d, 0x63, 0x6e, 0x32, 0xbf, 0x67, 0xb5, 0xb7, 0x26, 0x31, 0xf4, 0x6f, 0x6e, 0x7f, 0x07, 0x1a,
1969	0x27, 0x55, 0x32, 0x7d, 0xe2, 0x9b, 0x70, 0x69, 0xa8, 0xe9, 0xde, 0x33, 0x10, 0x8b, 0x86, 0x99,
1970	0x8c, 0x44, 0xfa, 0x77, 0xe1, 0xa2, 0xce, 0x01, 0x49, 0x4c, 0x5c, 0xa1, 0x9e, 0x72, 0x6a, 0xce,
1971	0x9c, 0xfb, 0x29, 0xa7, 0x50, 0xb2, 0x05, 0x4a, 0x36, 0x07, 0x95, 0x24, 0x75, 0x57, 0xfd, 0xb6,
1972	0x7f, 0x66, 0xc1, 0xe5, 0x0d, 0x2c, 0xfc, 0x7b, 0x99, 0x16, 0xb3, 0x45, 0xa4, 0x0b, 0x15, 0xa6,
1973	0xef, 0x27, 0x6e, 0xc9, 0xbd, 0xd8, 0x9f, 0x30, 0xdc, 0x4d, 0xa1, 0xec, 0x1f, 0x15, 0xa0, 0x71,
1974	0x52, 0x2f, 0x13, 0x96, 0x3e, 0x54, 0x99, 0xf9, 0x9d, 0xec, 0xec, 0xdb, 0x79, 0x85, 0x3e, 0x09,
1975	0xd4, 0x49, 0x7e, 0xb8, 0x19, 0x76, 0xf3, 0x07, 0x16, 0x54, 0x52, 0xa9, 0xbb, 0x50, 0x1b, 0x4b,
1976	0x82, 0x33, 0x86, 0x04, 0xb2, 0xd4, 0x43, 0xab, 0x50, 0xd6, 0x8f, 0x79, 0x53, 0xb6, 0x28, 0xc1,
1977	0x62, 0xb1, 0x2f, 0x3b, 0xb8, 0x18, 0x71, 0xd7, 0xdc, 0xb0, 0xff, 0x68, 0xc1, 0x85, 0x5b, 0x44,
1978	0x1c, 0x30, 0x32, 0xdb, 0x6c, 0xdf, 0x85, 0xda, 0xf9, 0x1f, 0xee, 0xc0, 0xb2, 0x37, 0xfb, 0x4b,
1979	0x50, 0x8d, 0x71, 0x9f, 0x78, 0x72, 0xc9, 0x56, 0x9d, 0xa1, 0xe4, 0x56, 0x24, 0x61, 0x3f, 0xfc,
1980	0x4c, 0xad, 0xa0, 0xea, 0x50, 0xd0, 0xfb, 0x24, 0x32, 0xed, 0x5d, 0x5d, 0x3f, 0x90, 0x04, 0xfb,
1981	0xc7, 0x16, 0x2c, 0xa6, 0x46, 0x18, 0xaf, 0xee, 0x4f, 0xbe, 0x99, 0x74, 0x34, 0xaf, 0xcd, 0xfc,
1982	0x66, 0x9a, 0x78, 0x2f, 0xa1, 0xd7, 0x60, 0x31, 0x22, 0x0f, 0x84, 0x37, 0xa6, 0x8c, 0x7e, 0xfe,
1983	0x2d, 0x48, 0xf2, 0x5e, 0xaa, 0xd0, 0x1d, 0xa8, 0x1d, 0x50, 0x3a, 0xd8, 0x24, 0x02, 0x87, 0x03,
1984	0xb5, 0x5e, 0x4b, 0x69, 0xe3, 0xde, 0xac, 0x48, 0x82, 0xf2, 0xe4, 0x2b, 0x50, 0x57, 0x87, 0xc7,
1985	0x84, 0xf1, 0x64, 0x57, 0xaa, 0xba, 0x35, 0x49, 0x3b, 0xd4, 0x24, 0xd9, 0xd1, 0x17, 0x4d, 0x74,
1986	0xd2, 0xd1, 0x7e, 0x68, 0xd8, 0x02, 0x2d, 0xc3, 0xa4, 0xcd, 0xf5, 0xbc, 0x06, 0x8e, 0xa9, 0xa7,
1987	0x65, 0x8d, 0xe9, 0x6a, 0xba, 0x74, 0x18, 0x18, 0x5d, 0x2a, 0x9a, 0xb0, 0x1d, 0xc8, 0x71, 0xab,
1988	0x84, 0x86, 0xd1, 0x31, 0xf5, 0x71, 0x72, 0xcb, 0x0c, 0x67, 0x79, 0xb2, 0x9d, 0x1e, 0x6c, 0x07,
1989	0x68, 0x1d, 0xae, 0xf8, 0x94, 0x31, 0x32, 0xc0, 0x82, 0x04, 0x63, 0x3c, 0x5c, 0x32, 0xe9, 0x20,
1990	0x5e, 0xce, 0x2e, 0x64, 0xac, 0x7c, 0x3b, 0x58, 0xfb, 0xb5, 0x05, 0xd5, 0x4e, 0xa2, 0x34, 0xfa,
1991	0xb9, 0x05, 0xf3, 0x66, 0x27, 0x41, 0x5f, 0x99, 0x71, 0x89, 0x31, 0x8e, 0x6b, 0x5e, 0x4d, 0xf8,
1992	0xc6, 0xfe, 0x62, 0xe6, 0xa4, 0x1b, 0x8e, 0xfd, 0xd6, 0xf7, 0xfe, 0xf2, 0xf7, 0xcf, 0x0b, 0x2d,
1993	0x7b, 0x35, 0xf9, 0xeb, 0xdd, 0xa3, 0x89, 0x22, 0x78, 0x67, 0x75, 0xf5, 0x71, 0x4b, 0xfb, 0x81,
1994	0xaf, 0x6b, 0x51, 0x64, 0xdd, 0x5a, 0x5d, 0xfb, 0x77, 0x11, 0x6a, 0x7a, 0x30, 0xa9, 0x2d, 0x14,
1995	0xfd, 0x43, 0xa7, 0xe2, 0xc4, 0xe3, 0xf0, 0x6b, 0x79, 0x35, 0x3e, 0x7d, 0x95, 0x68, 0x9e, 0x69,
1996	0x42, 0xda, 0x58, 0x19, 0xf4, 0x0d, 0x74, 0xf7, 0xa9, 0x06, 0xbd, 0xa1, 0xe7, 0x31, 0x6f, 0x3d,
1997	0x9a, 0x18, 0xfa, 0x8e, 0x7c, 0x09, 0x3f, 0x9e, 0x26, 0x66, 0xcf, 0xe2, 0xc7, 0xe8, 0x3f, 0x16,
1998	0xa0, 0x93, 0x9b, 0x06, 0xba, 0x39, 0x5b, 0xa3, 0x7e, 0x76, 0x26, 0xc7, 0xca, 0xe4, 0x6f, 0x35,
1999	0x9f, 0x9f, 0xc9, 0xeb, 0x93, 0x2b, 0xcc, 0xda, 0x2f, 0x4a, 0x70, 0xa5, 0xad, 0x87, 0xe1, 0xcd,
2000	0x20, 0x60, 0x84, 0x73, 0xf9, 0x40, 0xdb, 0x17, 0x94, 0xc9, 0x35, 0xf3, 0x4f, 0x16, 0x2c, 0x4d,
2001	0xef, 0x00, 0xe8, 0xdd, 0xfc, 0x7f, 0x05, 0x3a, 0x75, 0xa1, 0x69, 0x7e, 0xfd, 0xec, 0x00, 0xba,
2002	0x37, 0xda, 0x37, 0x94, 0x9f, 0xae, 0xd9, 0xaf, 0xff, 0x0f, 0x3f, 0xc9, 0x79, 0xc2, 0xd7, 0x8f,
2003	0x32, 0x88, 0x75, 0x6b, 0x55, 0x19, 0x34, 0x3d, 0xe8, 0xf2, 0x1b, 0xf4, 0x84, 0x7d, 0x20, 0xbf,
2004	0x41, 0x4f, 0x9a, 0xb1, 0x33, 0x18, 0xd4, 0xcb, 0x20, 0xa4, 0x41, 0x7f, 0xb5, 0x60, 0xde, 0x4c,
2005	0x8e, 0xfc, 0x8d, 0x65, 0x72, 0x5e, 0x36, 0x6f, 0xcc, 0xcc, 0x67, 0xb4, 0xfe, 0x44, 0x69, 0x7d,
2006	0x88, 0x0e, 0x9e, 0xa6, 0x75, 0xeb, 0xd1, 0xd8, 0xac, 0x4d, 0x72, 0x74, 0x9c, 0x34, 0x9e, 0xa1,
2007	0x7d, 0x2d, 0x65, 0xe3, 0x0f, 0x16, 0xac, 0xfa, 0x74, 0x98, 0x53, 0xb9, 0x8d, 0x4b, 0xae, 0xa2,
2008	0xa7, 0x3d, 0x77, 0x8f, 0x51, 0x41, 0xf7, 0xac, 0x8f, 0xbb, 0x86, 0xbf, 0x4f, 0x07, 0x38, 0xea,
2009	0x3b, 0x94, 0xf5, 0x5b, 0x7d, 0x12, 0xa9, 0xbf, 0x53, 0xb7, 0xf4, 0x11, 0x8e, 0x43, 0xfe, 0xb4,
2010	0xff, 0x85, 0xbc, 0x3d, 0x45, 0xfe, 0x55, 0xa1, 0xe8, 0x76, 0x3e, 0xfa, 0x6d, 0xe1, 0xea, 0x2d,
2011	0x8d, 0x3e, 0x25, 0xdc, 0x39, 0xbc, 0x76, 0x40, 0xb8, 0xe8, 0x95, 0x95, 0x9c, 0xeb, 0xff, 0x0d,
2012	0x00, 0x00, 0xff, 0xff, 0xe9, 0x9c, 0x6f, 0xd3, 0x72, 0x19, 0x00, 0x00,
2013}
2014