// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0-devel
// 	protoc        v3.6.1
// source: chromite/api/artifacts.proto

package api

import (
	chromiumos "go.chromium.org/chromiumos/infra/proto/go/chromiumos"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Whether this artifact requires a build.
type PrepareForBuildResponse_BuildRelevance int32

const (
	PrepareForBuildResponse_UNSPECIFIED PrepareForBuildResponse_BuildRelevance = 0
	// Build is necessary to generate artifacts.
	PrepareForBuildResponse_NEEDED PrepareForBuildResponse_BuildRelevance = 1
	// Defer to other artifacts.  Used primarily for aggregation of artifact
	// results.
	PrepareForBuildResponse_UNKNOWN PrepareForBuildResponse_BuildRelevance = 2
	// Artifacts are already generated.  The build is pointless.
	PrepareForBuildResponse_POINTLESS PrepareForBuildResponse_BuildRelevance = 3
)

// Enum value maps for PrepareForBuildResponse_BuildRelevance.
var (
	PrepareForBuildResponse_BuildRelevance_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "NEEDED",
		2: "UNKNOWN",
		3: "POINTLESS",
	}
	PrepareForBuildResponse_BuildRelevance_value = map[string]int32{
		"UNSPECIFIED": 0,
		"NEEDED":      1,
		"UNKNOWN":     2,
		"POINTLESS":   3,
	}
)

func (x PrepareForBuildResponse_BuildRelevance) Enum() *PrepareForBuildResponse_BuildRelevance {
	p := new(PrepareForBuildResponse_BuildRelevance)
	*p = x
	return p
}

func (x PrepareForBuildResponse_BuildRelevance) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PrepareForBuildResponse_BuildRelevance) Descriptor() protoreflect.EnumDescriptor {
	return file_chromite_api_artifacts_proto_enumTypes[0].Descriptor()
}

func (PrepareForBuildResponse_BuildRelevance) Type() protoreflect.EnumType {
	return &file_chromite_api_artifacts_proto_enumTypes[0]
}

func (x PrepareForBuildResponse_BuildRelevance) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PrepareForBuildResponse_BuildRelevance.Descriptor instead.
func (PrepareForBuildResponse_BuildRelevance) EnumDescriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{1, 0}
}

// Whether this artifact requires a build.
type BuildSetupResponse_BuildRelevance int32

const (
	BuildSetupResponse_UNSPECIFIED BuildSetupResponse_BuildRelevance = 0
	// Build is necessary to generate artifacts.
	BuildSetupResponse_NEEDED BuildSetupResponse_BuildRelevance = 1
	// Defer to other artifacts.  Used primarily for aggregation of artifact
	// results.
	BuildSetupResponse_UNKNOWN BuildSetupResponse_BuildRelevance = 2
	// Artifacts are already generated.  The build is pointless.
	BuildSetupResponse_POINTLESS BuildSetupResponse_BuildRelevance = 3
)

// Enum value maps for BuildSetupResponse_BuildRelevance.
var (
	BuildSetupResponse_BuildRelevance_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "NEEDED",
		2: "UNKNOWN",
		3: "POINTLESS",
	}
	BuildSetupResponse_BuildRelevance_value = map[string]int32{
		"UNSPECIFIED": 0,
		"NEEDED":      1,
		"UNKNOWN":     2,
		"POINTLESS":   3,
	}
)

func (x BuildSetupResponse_BuildRelevance) Enum() *BuildSetupResponse_BuildRelevance {
	p := new(BuildSetupResponse_BuildRelevance)
	*p = x
	return p
}

func (x BuildSetupResponse_BuildRelevance) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (BuildSetupResponse_BuildRelevance) Descriptor() protoreflect.EnumDescriptor {
	return file_chromite_api_artifacts_proto_enumTypes[1].Descriptor()
}

func (BuildSetupResponse_BuildRelevance) Type() protoreflect.EnumType {
	return &file_chromite_api_artifacts_proto_enumTypes[1]
}

func (x BuildSetupResponse_BuildRelevance) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use BuildSetupResponse_BuildRelevance.Descriptor instead.
func (BuildSetupResponse_BuildRelevance) EnumDescriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{3, 0}
}

// An artifact is a file generated during or after a build.
type Artifact struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Absolute path to the artifact file.
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
}

func (x *Artifact) Reset() {
	*x = Artifact{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Artifact) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Artifact) ProtoMessage() {}

func (x *Artifact) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Artifact.ProtoReflect.Descriptor instead.
func (*Artifact) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{0}
}

func (x *Artifact) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

// TODO(crbug/1034529): PrepareForBuild has never existed in chromite, and is
// being renamed to BuildSetup.  PrepareForBuildResponse is still used by
// ToolchainService.
type PrepareForBuildResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BuildRelevance PrepareForBuildResponse_BuildRelevance `protobuf:"varint,1,opt,name=build_relevance,json=buildRelevance,proto3,enum=chromite.api.PrepareForBuildResponse_BuildRelevance" json:"build_relevance,omitempty"`
}

func (x *PrepareForBuildResponse) Reset() {
	*x = PrepareForBuildResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PrepareForBuildResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PrepareForBuildResponse) ProtoMessage() {}

func (x *PrepareForBuildResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PrepareForBuildResponse.ProtoReflect.Descriptor instead.
func (*PrepareForBuildResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{1}
}

func (x *PrepareForBuildResponse) GetBuildRelevance() PrepareForBuildResponse_BuildRelevance {
	if x != nil {
		return x.BuildRelevance
	}
	return PrepareForBuildResponse_UNSPECIFIED
}

type BuildSetupRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,2,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
	// Information about the artifacts.
	ArtifactInfo *chromiumos.ArtifactsByService `protobuf:"bytes,3,opt,name=artifact_info,json=artifactInfo,proto3" json:"artifact_info,omitempty"`
	// Whether we will proceed even if the build is POINTLESS.
	ForcedBuildRelevance bool `protobuf:"varint,4,opt,name=forced_build_relevance,json=forcedBuildRelevance,proto3" json:"forced_build_relevance,omitempty"`
}

func (x *BuildSetupRequest) Reset() {
	*x = BuildSetupRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BuildSetupRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BuildSetupRequest) ProtoMessage() {}

func (x *BuildSetupRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BuildSetupRequest.ProtoReflect.Descriptor instead.
func (*BuildSetupRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{2}
}

func (x *BuildSetupRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *BuildSetupRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

func (x *BuildSetupRequest) GetArtifactInfo() *chromiumos.ArtifactsByService {
	if x != nil {
		return x.ArtifactInfo
	}
	return nil
}

func (x *BuildSetupRequest) GetForcedBuildRelevance() bool {
	if x != nil {
		return x.ForcedBuildRelevance
	}
	return false
}

type BuildSetupResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BuildRelevance BuildSetupResponse_BuildRelevance `protobuf:"varint,1,opt,name=build_relevance,json=buildRelevance,proto3,enum=chromite.api.BuildSetupResponse_BuildRelevance" json:"build_relevance,omitempty"`
}

func (x *BuildSetupResponse) Reset() {
	*x = BuildSetupResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BuildSetupResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BuildSetupResponse) ProtoMessage() {}

func (x *BuildSetupResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BuildSetupResponse.ProtoReflect.Descriptor instead.
func (*BuildSetupResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{3}
}

func (x *BuildSetupResponse) GetBuildRelevance() BuildSetupResponse_BuildRelevance {
	if x != nil {
		return x.BuildRelevance
	}
	return BuildSetupResponse_UNSPECIFIED
}

type GetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,2,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
	// Artifact information.
	ArtifactInfo *chromiumos.ArtifactsByService `protobuf:"bytes,3,opt,name=artifact_info,json=artifactInfo,proto3" json:"artifact_info,omitempty"`
	// Result path for artifacts.
	ResultPath *chromiumos.ResultPath `protobuf:"bytes,4,opt,name=result_path,json=resultPath,proto3" json:"result_path,omitempty"`
}

func (x *GetRequest) Reset() {
	*x = GetRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetRequest) ProtoMessage() {}

func (x *GetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead.
func (*GetRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{4}
}

func (x *GetRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *GetRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

func (x *GetRequest) GetArtifactInfo() *chromiumos.ArtifactsByService {
	if x != nil {
		return x.ArtifactInfo
	}
	return nil
}

func (x *GetRequest) GetResultPath() *chromiumos.ResultPath {
	if x != nil {
		return x.ResultPath
	}
	return nil
}

type GetResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The artifacts that were bundled.
	Artifacts *chromiumos.UploadedArtifactsByService `protobuf:"bytes,1,opt,name=artifacts,proto3" json:"artifacts,omitempty"`
}

func (x *GetResponse) Reset() {
	*x = GetResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetResponse) ProtoMessage() {}

func (x *GetResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead.
func (*GetResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{5}
}

func (x *GetResponse) GetArtifacts() *chromiumos.UploadedArtifactsByService {
	if x != nil {
		return x.Artifacts
	}
	return nil
}

type BundleArtifactsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,2,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
	// Artifact information.
	ArtifactInfo *chromiumos.ArtifactsByService `protobuf:"bytes,3,opt,name=artifact_info,json=artifactInfo,proto3" json:"artifact_info,omitempty"`
	// Absolute path to the directory in which artifacts should be dropped.
	// TODO(crbug/1034529): Switch the recipes code to use result_path.
	OutputDir string `protobuf:"bytes,4,opt,name=output_dir,json=outputDir,proto3" json:"output_dir,omitempty"`
	// Result path for artifacts.  If present this overrides output_dir.
	ResultPath *chromiumos.ResultPath `protobuf:"bytes,5,opt,name=result_path,json=resultPath,proto3" json:"result_path,omitempty"`
}

func (x *BundleArtifactsRequest) Reset() {
	*x = BundleArtifactsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleArtifactsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleArtifactsRequest) ProtoMessage() {}

func (x *BundleArtifactsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleArtifactsRequest.ProtoReflect.Descriptor instead.
func (*BundleArtifactsRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{6}
}

func (x *BundleArtifactsRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *BundleArtifactsRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

func (x *BundleArtifactsRequest) GetArtifactInfo() *chromiumos.ArtifactsByService {
	if x != nil {
		return x.ArtifactInfo
	}
	return nil
}

func (x *BundleArtifactsRequest) GetOutputDir() string {
	if x != nil {
		return x.OutputDir
	}
	return ""
}

func (x *BundleArtifactsRequest) GetResultPath() *chromiumos.ResultPath {
	if x != nil {
		return x.ResultPath
	}
	return nil
}

type BundleArtifactsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The artifacts that were bundled.
	Artifacts *chromiumos.UploadedArtifactsByService `protobuf:"bytes,1,opt,name=artifacts,proto3" json:"artifacts,omitempty"`
}

func (x *BundleArtifactsResponse) Reset() {
	*x = BundleArtifactsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleArtifactsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleArtifactsResponse) ProtoMessage() {}

func (x *BundleArtifactsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleArtifactsResponse.ProtoReflect.Descriptor instead.
func (*BundleArtifactsResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{7}
}

func (x *BundleArtifactsResponse) GetArtifacts() *chromiumos.UploadedArtifactsByService {
	if x != nil {
		return x.Artifacts
	}
	return nil
}

// Request describing where build artifact bundles for a given build target
// should be dumped.
// TODO(crbug/1034529): BundleRequest and BundleResponse are being deprecated
// (along with most of this file).  See BundleArtifactsRequest/Response
type BundleRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The build target to bundle artifacts for.
	// Deprecated. Use sysroot instead.
	BuildTarget *chromiumos.BuildTarget `protobuf:"bytes,1,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
	// Absolute path to the directory in which artifacts should be dropped.
	OutputDir string `protobuf:"bytes,2,opt,name=output_dir,json=outputDir,proto3" json:"output_dir,omitempty"`
	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,3,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,4,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
}

func (x *BundleRequest) Reset() {
	*x = BundleRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleRequest) ProtoMessage() {}

func (x *BundleRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleRequest.ProtoReflect.Descriptor instead.
func (*BundleRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{8}
}

func (x *BundleRequest) GetBuildTarget() *chromiumos.BuildTarget {
	if x != nil {
		return x.BuildTarget
	}
	return nil
}

func (x *BundleRequest) GetOutputDir() string {
	if x != nil {
		return x.OutputDir
	}
	return ""
}

func (x *BundleRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *BundleRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

// Response describing which bundles were dumped to the given output directory.
type BundleResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The artifacts that added to the output directory.
	Artifacts []*Artifact `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
}

func (x *BundleResponse) Reset() {
	*x = BundleResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleResponse) ProtoMessage() {}

func (x *BundleResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleResponse.ProtoReflect.Descriptor instead.
func (*BundleResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{9}
}

func (x *BundleResponse) GetArtifacts() []*Artifact {
	if x != nil {
		return x.Artifacts
	}
	return nil
}

// Request describing where to find build artifacts that are taken from a
// sysroot.
type BundleVmFilesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,2,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
	// Test results directory relative to the sysroot.
	TestResultsDir string `protobuf:"bytes,3,opt,name=test_results_dir,json=testResultsDir,proto3" json:"test_results_dir,omitempty"`
	// Absolute path to the directory in which artifacts should be dropped.
	OutputDir string `protobuf:"bytes,4,opt,name=output_dir,json=outputDir,proto3" json:"output_dir,omitempty"`
}

func (x *BundleVmFilesRequest) Reset() {
	*x = BundleVmFilesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleVmFilesRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleVmFilesRequest) ProtoMessage() {}

func (x *BundleVmFilesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleVmFilesRequest.ProtoReflect.Descriptor instead.
func (*BundleVmFilesRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{10}
}

func (x *BundleVmFilesRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *BundleVmFilesRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

func (x *BundleVmFilesRequest) GetTestResultsDir() string {
	if x != nil {
		return x.TestResultsDir
	}
	return ""
}

func (x *BundleVmFilesRequest) GetOutputDir() string {
	if x != nil {
		return x.OutputDir
	}
	return ""
}

// DEPRECATED for recipes: crbug/1019868: This is being replaced with
// BundleRequest.
// Request describing where to find Chrome AFDO artifacts
type BundleChromeAFDORequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the orderfile lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The build_target of the builder.
	BuildTarget *chromiumos.BuildTarget `protobuf:"bytes,2,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
	// Absolute path to the directory in which artifacts should be dropped.
	OutputDir string `protobuf:"bytes,3,opt,name=output_dir,json=outputDir,proto3" json:"output_dir,omitempty"`
	// The type of AFDO artifact (benchmark-afdo or orderfile)
	ArtifactType chromiumos.AFDOArtifactType `protobuf:"varint,4,opt,name=artifact_type,json=artifactType,proto3,enum=chromiumos.AFDOArtifactType" json:"artifact_type,omitempty"`
}

func (x *BundleChromeAFDORequest) Reset() {
	*x = BundleChromeAFDORequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BundleChromeAFDORequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BundleChromeAFDORequest) ProtoMessage() {}

func (x *BundleChromeAFDORequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BundleChromeAFDORequest.ProtoReflect.Descriptor instead.
func (*BundleChromeAFDORequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{11}
}

func (x *BundleChromeAFDORequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *BundleChromeAFDORequest) GetBuildTarget() *chromiumos.BuildTarget {
	if x != nil {
		return x.BuildTarget
	}
	return nil
}

func (x *BundleChromeAFDORequest) GetOutputDir() string {
	if x != nil {
		return x.OutputDir
	}
	return ""
}

func (x *BundleChromeAFDORequest) GetArtifactType() chromiumos.AFDOArtifactType {
	if x != nil {
		return x.ArtifactType
	}
	return chromiumos.AFDOArtifactType_NONE_TYPE
}

// Fetch the pinned guest image uris.
type PinnedGuestImageUriRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The chroot where the sysroot lives.
	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
	// The sysroot where the files live.
	Sysroot *Sysroot `protobuf:"bytes,2,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
}

func (x *PinnedGuestImageUriRequest) Reset() {
	*x = PinnedGuestImageUriRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PinnedGuestImageUriRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PinnedGuestImageUriRequest) ProtoMessage() {}

func (x *PinnedGuestImageUriRequest) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PinnedGuestImageUriRequest.ProtoReflect.Descriptor instead.
func (*PinnedGuestImageUriRequest) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{12}
}

func (x *PinnedGuestImageUriRequest) GetChroot() *chromiumos.Chroot {
	if x != nil {
		return x.Chroot
	}
	return nil
}

func (x *PinnedGuestImageUriRequest) GetSysroot() *Sysroot {
	if x != nil {
		return x.Sysroot
	}
	return nil
}

// Response from fetching pinned guest image uris.
type PinnedGuestImageUriResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The pinned guest images.
	PinnedImages []*PinnedGuestImageUriResponse_PinnedGuestImage `protobuf:"bytes,1,rep,name=pinned_images,json=pinnedImages,proto3" json:"pinned_images,omitempty"`
}

func (x *PinnedGuestImageUriResponse) Reset() {
	*x = PinnedGuestImageUriResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PinnedGuestImageUriResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PinnedGuestImageUriResponse) ProtoMessage() {}

func (x *PinnedGuestImageUriResponse) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PinnedGuestImageUriResponse.ProtoReflect.Descriptor instead.
func (*PinnedGuestImageUriResponse) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{13}
}

func (x *PinnedGuestImageUriResponse) GetPinnedImages() []*PinnedGuestImageUriResponse_PinnedGuestImage {
	if x != nil {
		return x.PinnedImages
	}
	return nil
}

type PinnedGuestImageUriResponse_PinnedGuestImage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
	Uri      string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
}

func (x *PinnedGuestImageUriResponse_PinnedGuestImage) Reset() {
	*x = PinnedGuestImageUriResponse_PinnedGuestImage{}
	if protoimpl.UnsafeEnabled {
		mi := &file_chromite_api_artifacts_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PinnedGuestImageUriResponse_PinnedGuestImage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PinnedGuestImageUriResponse_PinnedGuestImage) ProtoMessage() {}

func (x *PinnedGuestImageUriResponse_PinnedGuestImage) ProtoReflect() protoreflect.Message {
	mi := &file_chromite_api_artifacts_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PinnedGuestImageUriResponse_PinnedGuestImage.ProtoReflect.Descriptor instead.
func (*PinnedGuestImageUriResponse_PinnedGuestImage) Descriptor() ([]byte, []int) {
	return file_chromite_api_artifacts_proto_rawDescGZIP(), []int{13, 0}
}

func (x *PinnedGuestImageUriResponse_PinnedGuestImage) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *PinnedGuestImageUriResponse_PinnedGuestImage) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

var File_chromite_api_artifacts_proto protoreflect.FileDescriptor

var file_chromite_api_artifacts_proto_rawDesc = []byte{
	0x0a, 0x1c, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c,
	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x1c, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x63, 0x68, 0x72, 0x6f,
	0x6d, 0x69, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
	0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
	0x1e, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70,
	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22,
	0xc3, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x62,
	0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c,
	0x64, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a,
	0x06, 0x4e, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x4c,
	0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53,
	0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x63,
	0x68, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x52,
	0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f,
	0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
	0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x52,
	0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x42, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52,
	0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a,
	0x16, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65,
	0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x66,
	0x6f, 0x72, 0x63, 0x65, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61,
	0x6e, 0x63, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x12, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x74,
	0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x62, 0x75,
	0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x76,
	0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x76,
	0x61, 0x6e, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c,
	0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x45, 0x45, 0x44, 0x45,
	0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02,
	0x12, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x4c, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22,
	0xe7, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a,
	0x0a, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x68, 0x72, 0x6f,
	0x6f, 0x74, 0x52, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x79,
	0x73, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x72, 0x6f,
	0x6f, 0x74, 0x52, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x61,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e,
	0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x42, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x37, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
	0x6f, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0a, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x53, 0x0a, 0x0b, 0x47, 0x65, 0x74,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65,
	0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x42, 0x79, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x22, 0x92,
	0x02, 0x0a, 0x16, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x68, 0x72,
	0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x72, 0x6f,
	0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x06, 0x63,
	0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x73,
	0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,
	0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66,
	0x61, 0x63, 0x74, 0x73, 0x42, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0c, 0x61,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x12, 0x37, 0x0a, 0x0b, 0x72, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50,
	0x61, 0x74, 0x68, 0x22, 0x5f, 0x0a, 0x17, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44,
	0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x55,
	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73,
	0x42, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66,
	0x61, 0x63, 0x74, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f,
	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69,
	0x72, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43,
	0x68, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a,
	0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79,
	0x73, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x46,
	0x0a, 0x0e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x34, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74,
	0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c,
	0x65, 0x56, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x2a, 0x0a, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x68, 0x72,
	0x6f, 0x6f, 0x74, 0x52, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x73,
	0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x72,
	0x6f, 0x6f, 0x74, 0x52, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x28, 0x0a, 0x10,
	0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x64, 0x69, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x73, 0x44, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74,
	0x5f, 0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x44, 0x69, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x17, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65,
	0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x41, 0x46, 0x44, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43,
	0x68, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x06, 0x63, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x3a, 0x0a,
	0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73,
	0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x0b, 0x62, 0x75,
	0x69, 0x6c, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74,
	0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f,
	0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x12, 0x41, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69,
	0x66, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x46, 0x44,
	0x4f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61,
	0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x1a, 0x50,
	0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55,
	0x72, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x68, 0x72,
	0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x72, 0x6f,
	0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x43, 0x68, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x06, 0x63,
	0x68, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x73,
	0x79, 0x73, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0xc0, 0x01, 0x0a, 0x1b, 0x50, 0x69, 0x6e, 0x6e, 0x65,
	0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64,
	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6e,
	0x6e, 0x65, 0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47,
	0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x70, 0x69, 0x6e, 0x6e, 0x65,
	0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x40, 0x0a, 0x10, 0x50, 0x69, 0x6e, 0x6e, 0x65,
	0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66,
	0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
	0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x32, 0x94, 0x0e, 0x0a, 0x10, 0x41, 0x72,
	0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f,
	0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x75, 0x70, 0x12, 0x1f, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x69,
	0x6c, 0x64, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x3a, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x18, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x19, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x19, 0x46,
	0x65, 0x74, 0x63, 0x68, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49,
	0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x73, 0x12, 0x28, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
	0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x75,
	0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x55, 0x72, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a,
	0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x74, 0x65, 0x73, 0x74, 0x46,
	0x69, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x51, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x4f,
	0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
	0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x4f, 0x0a, 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x62, 0x75,
	0x67, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
	0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x62, 0x75,
	0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
	0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x69, 0x72, 0x6d,
	0x77, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x50, 0x0a, 0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x72,
	0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65,
	0x5a, 0x69, 0x70, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64,
	0x0a, 0x1d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x46, 0x44, 0x4f, 0x47, 0x65, 0x6e, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12,
	0x25, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x41, 0x46, 0x44, 0x4f, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x17, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x69,
	0x6e, 0x6e, 0x65, 0x64, 0x47, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12,
	0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x1b, 0x42, 0x75,
	0x6e, 0x64, 0x6c, 0x65, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65,
	0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f,
	0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74,
	0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x61,
	0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69,
	0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x65, 0x73, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x1b,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75,
	0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c,
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x42, 0x75, 0x6e,
	0x64, 0x6c, 0x65, 0x56, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x63, 0x68, 0x72,
	0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65,
	0x56, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75,
	0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0f,
	0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12,
	0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x14, 0x42, 0x75,
	0x6e, 0x64, 0x6c, 0x65, 0x46, 0x70, 0x6d, 0x63, 0x75, 0x55, 0x6e, 0x69, 0x74, 0x74, 0x65, 0x73,
	0x74, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a,
	0x10, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x47, 0x63, 0x65, 0x54, 0x61, 0x72, 0x62, 0x61, 0x6c,
	0x6c, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75,
	0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x25,
	0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x65,
	0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x5b, 0x0a, 0x1e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f,
	0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x1c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x11, 0xc2,
	0xed, 0x1a, 0x0d, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x10, 0x02,
	0x42, 0x38, 0x5a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
	0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x69,
	0x6e, 0x66, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x33,
}

var (
	file_chromite_api_artifacts_proto_rawDescOnce sync.Once
	file_chromite_api_artifacts_proto_rawDescData = file_chromite_api_artifacts_proto_rawDesc
)

func file_chromite_api_artifacts_proto_rawDescGZIP() []byte {
	file_chromite_api_artifacts_proto_rawDescOnce.Do(func() {
		file_chromite_api_artifacts_proto_rawDescData = protoimpl.X.CompressGZIP(file_chromite_api_artifacts_proto_rawDescData)
	})
	return file_chromite_api_artifacts_proto_rawDescData
}

var file_chromite_api_artifacts_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_chromite_api_artifacts_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_chromite_api_artifacts_proto_goTypes = []interface{}{
	(PrepareForBuildResponse_BuildRelevance)(0),          // 0: chromite.api.PrepareForBuildResponse.BuildRelevance
	(BuildSetupResponse_BuildRelevance)(0),               // 1: chromite.api.BuildSetupResponse.BuildRelevance
	(*Artifact)(nil),                                     // 2: chromite.api.Artifact
	(*PrepareForBuildResponse)(nil),                      // 3: chromite.api.PrepareForBuildResponse
	(*BuildSetupRequest)(nil),                            // 4: chromite.api.BuildSetupRequest
	(*BuildSetupResponse)(nil),                           // 5: chromite.api.BuildSetupResponse
	(*GetRequest)(nil),                                   // 6: chromite.api.GetRequest
	(*GetResponse)(nil),                                  // 7: chromite.api.GetResponse
	(*BundleArtifactsRequest)(nil),                       // 8: chromite.api.BundleArtifactsRequest
	(*BundleArtifactsResponse)(nil),                      // 9: chromite.api.BundleArtifactsResponse
	(*BundleRequest)(nil),                                // 10: chromite.api.BundleRequest
	(*BundleResponse)(nil),                               // 11: chromite.api.BundleResponse
	(*BundleVmFilesRequest)(nil),                         // 12: chromite.api.BundleVmFilesRequest
	(*BundleChromeAFDORequest)(nil),                      // 13: chromite.api.BundleChromeAFDORequest
	(*PinnedGuestImageUriRequest)(nil),                   // 14: chromite.api.PinnedGuestImageUriRequest
	(*PinnedGuestImageUriResponse)(nil),                  // 15: chromite.api.PinnedGuestImageUriResponse
	(*PinnedGuestImageUriResponse_PinnedGuestImage)(nil), // 16: chromite.api.PinnedGuestImageUriResponse.PinnedGuestImage
	(*chromiumos.Chroot)(nil),                            // 17: chromiumos.Chroot
	(*Sysroot)(nil),                                      // 18: chromite.api.Sysroot
	(*chromiumos.ArtifactsByService)(nil),                // 19: chromiumos.ArtifactsByService
	(*chromiumos.ResultPath)(nil),                        // 20: chromiumos.ResultPath
	(*chromiumos.UploadedArtifactsByService)(nil),        // 21: chromiumos.UploadedArtifactsByService
	(*chromiumos.BuildTarget)(nil),                       // 22: chromiumos.BuildTarget
	(chromiumos.AFDOArtifactType)(0),                     // 23: chromiumos.AFDOArtifactType
}
var file_chromite_api_artifacts_proto_depIdxs = []int32{
	0,  // 0: chromite.api.PrepareForBuildResponse.build_relevance:type_name -> chromite.api.PrepareForBuildResponse.BuildRelevance
	17, // 1: chromite.api.BuildSetupRequest.chroot:type_name -> chromiumos.Chroot
	18, // 2: chromite.api.BuildSetupRequest.sysroot:type_name -> chromite.api.Sysroot
	19, // 3: chromite.api.BuildSetupRequest.artifact_info:type_name -> chromiumos.ArtifactsByService
	1,  // 4: chromite.api.BuildSetupResponse.build_relevance:type_name -> chromite.api.BuildSetupResponse.BuildRelevance
	17, // 5: chromite.api.GetRequest.chroot:type_name -> chromiumos.Chroot
	18, // 6: chromite.api.GetRequest.sysroot:type_name -> chromite.api.Sysroot
	19, // 7: chromite.api.GetRequest.artifact_info:type_name -> chromiumos.ArtifactsByService
	20, // 8: chromite.api.GetRequest.result_path:type_name -> chromiumos.ResultPath
	21, // 9: chromite.api.GetResponse.artifacts:type_name -> chromiumos.UploadedArtifactsByService
	17, // 10: chromite.api.BundleArtifactsRequest.chroot:type_name -> chromiumos.Chroot
	18, // 11: chromite.api.BundleArtifactsRequest.sysroot:type_name -> chromite.api.Sysroot
	19, // 12: chromite.api.BundleArtifactsRequest.artifact_info:type_name -> chromiumos.ArtifactsByService
	20, // 13: chromite.api.BundleArtifactsRequest.result_path:type_name -> chromiumos.ResultPath
	21, // 14: chromite.api.BundleArtifactsResponse.artifacts:type_name -> chromiumos.UploadedArtifactsByService
	22, // 15: chromite.api.BundleRequest.build_target:type_name -> chromiumos.BuildTarget
	17, // 16: chromite.api.BundleRequest.chroot:type_name -> chromiumos.Chroot
	18, // 17: chromite.api.BundleRequest.sysroot:type_name -> chromite.api.Sysroot
	2,  // 18: chromite.api.BundleResponse.artifacts:type_name -> chromite.api.Artifact
	17, // 19: chromite.api.BundleVmFilesRequest.chroot:type_name -> chromiumos.Chroot
	18, // 20: chromite.api.BundleVmFilesRequest.sysroot:type_name -> chromite.api.Sysroot
	17, // 21: chromite.api.BundleChromeAFDORequest.chroot:type_name -> chromiumos.Chroot
	22, // 22: chromite.api.BundleChromeAFDORequest.build_target:type_name -> chromiumos.BuildTarget
	23, // 23: chromite.api.BundleChromeAFDORequest.artifact_type:type_name -> chromiumos.AFDOArtifactType
	17, // 24: chromite.api.PinnedGuestImageUriRequest.chroot:type_name -> chromiumos.Chroot
	18, // 25: chromite.api.PinnedGuestImageUriRequest.sysroot:type_name -> chromite.api.Sysroot
	16, // 26: chromite.api.PinnedGuestImageUriResponse.pinned_images:type_name -> chromite.api.PinnedGuestImageUriResponse.PinnedGuestImage
	4,  // 27: chromite.api.ArtifactsService.BuildSetup:input_type -> chromite.api.BuildSetupRequest
	6,  // 28: chromite.api.ArtifactsService.Get:input_type -> chromite.api.GetRequest
	14, // 29: chromite.api.ArtifactsService.FetchPinnedGuestImageUris:input_type -> chromite.api.PinnedGuestImageUriRequest
	10, // 30: chromite.api.ArtifactsService.BundleAutotestFiles:input_type -> chromite.api.BundleRequest
	10, // 31: chromite.api.ArtifactsService.BundleChromeOSConfig:input_type -> chromite.api.BundleRequest
	10, // 32: chromite.api.ArtifactsService.BundleDebugSymbols:input_type -> chromite.api.BundleRequest
	10, // 33: chromite.api.ArtifactsService.BundleEbuildLogs:input_type -> chromite.api.BundleRequest
	10, // 34: chromite.api.ArtifactsService.BundleFirmware:input_type -> chromite.api.BundleRequest
	10, // 35: chromite.api.ArtifactsService.BundleImageArchives:input_type -> chromite.api.BundleRequest
	10, // 36: chromite.api.ArtifactsService.BundleImageZip:input_type -> chromite.api.BundleRequest
	13, // 37: chromite.api.ArtifactsService.BundleAFDOGenerationArtifacts:input_type -> chromite.api.BundleChromeAFDORequest
	10, // 38: chromite.api.ArtifactsService.BundlePinnedGuestImages:input_type -> chromite.api.BundleRequest
	10, // 39: chromite.api.ArtifactsService.BundleSimpleChromeArtifacts:input_type -> chromite.api.BundleRequest
	10, // 40: chromite.api.ArtifactsService.BundleTastFiles:input_type -> chromite.api.BundleRequest
	10, // 41: chromite.api.ArtifactsService.BundleTestUpdatePayloads:input_type -> chromite.api.BundleRequest
	12, // 42: chromite.api.ArtifactsService.BundleVmFiles:input_type -> chromite.api.BundleVmFilesRequest
	10, // 43: chromite.api.ArtifactsService.ExportCpeReport:input_type -> chromite.api.BundleRequest
	10, // 44: chromite.api.ArtifactsService.BundleFpmcuUnittests:input_type -> chromite.api.BundleRequest
	10, // 45: chromite.api.ArtifactsService.BundleGceTarball:input_type -> chromite.api.BundleRequest
	10, // 46: chromite.api.ArtifactsService.GenerateRemoteTestDriverSpecification:input_type -> chromite.api.BundleRequest
	10, // 47: chromite.api.ArtifactsService.GenerateRemoteTestDriverImages:input_type -> chromite.api.BundleRequest
	5,  // 48: chromite.api.ArtifactsService.BuildSetup:output_type -> chromite.api.BuildSetupResponse
	7,  // 49: chromite.api.ArtifactsService.Get:output_type -> chromite.api.GetResponse
	15, // 50: chromite.api.ArtifactsService.FetchPinnedGuestImageUris:output_type -> chromite.api.PinnedGuestImageUriResponse
	11, // 51: chromite.api.ArtifactsService.BundleAutotestFiles:output_type -> chromite.api.BundleResponse
	11, // 52: chromite.api.ArtifactsService.BundleChromeOSConfig:output_type -> chromite.api.BundleResponse
	11, // 53: chromite.api.ArtifactsService.BundleDebugSymbols:output_type -> chromite.api.BundleResponse
	11, // 54: chromite.api.ArtifactsService.BundleEbuildLogs:output_type -> chromite.api.BundleResponse
	11, // 55: chromite.api.ArtifactsService.BundleFirmware:output_type -> chromite.api.BundleResponse
	11, // 56: chromite.api.ArtifactsService.BundleImageArchives:output_type -> chromite.api.BundleResponse
	11, // 57: chromite.api.ArtifactsService.BundleImageZip:output_type -> chromite.api.BundleResponse
	11, // 58: chromite.api.ArtifactsService.BundleAFDOGenerationArtifacts:output_type -> chromite.api.BundleResponse
	11, // 59: chromite.api.ArtifactsService.BundlePinnedGuestImages:output_type -> chromite.api.BundleResponse
	11, // 60: chromite.api.ArtifactsService.BundleSimpleChromeArtifacts:output_type -> chromite.api.BundleResponse
	11, // 61: chromite.api.ArtifactsService.BundleTastFiles:output_type -> chromite.api.BundleResponse
	11, // 62: chromite.api.ArtifactsService.BundleTestUpdatePayloads:output_type -> chromite.api.BundleResponse
	11, // 63: chromite.api.ArtifactsService.BundleVmFiles:output_type -> chromite.api.BundleResponse
	11, // 64: chromite.api.ArtifactsService.ExportCpeReport:output_type -> chromite.api.BundleResponse
	11, // 65: chromite.api.ArtifactsService.BundleFpmcuUnittests:output_type -> chromite.api.BundleResponse
	11, // 66: chromite.api.ArtifactsService.BundleGceTarball:output_type -> chromite.api.BundleResponse
	11, // 67: chromite.api.ArtifactsService.GenerateRemoteTestDriverSpecification:output_type -> chromite.api.BundleResponse
	11, // 68: chromite.api.ArtifactsService.GenerateRemoteTestDriverImages:output_type -> chromite.api.BundleResponse
	48, // [48:69] is the sub-list for method output_type
	27, // [27:48] is the sub-list for method input_type
	27, // [27:27] is the sub-list for extension type_name
	27, // [27:27] is the sub-list for extension extendee
	0,  // [0:27] is the sub-list for field type_name
}

func init() { file_chromite_api_artifacts_proto_init() }
func file_chromite_api_artifacts_proto_init() {
	if File_chromite_api_artifacts_proto != nil {
		return
	}
	file_chromite_api_build_api_proto_init()
	file_chromite_api_sysroot_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_chromite_api_artifacts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Artifact); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrepareForBuildResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildSetupRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuildSetupResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleArtifactsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleArtifactsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleVmFilesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BundleChromeAFDORequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinnedGuestImageUriRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinnedGuestImageUriResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_chromite_api_artifacts_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinnedGuestImageUriResponse_PinnedGuestImage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_chromite_api_artifacts_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   15,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_chromite_api_artifacts_proto_goTypes,
		DependencyIndexes: file_chromite_api_artifacts_proto_depIdxs,
		EnumInfos:         file_chromite_api_artifacts_proto_enumTypes,
		MessageInfos:      file_chromite_api_artifacts_proto_msgTypes,
	}.Build()
	File_chromite_api_artifacts_proto = out.File
	file_chromite_api_artifacts_proto_rawDesc = nil
	file_chromite_api_artifacts_proto_goTypes = nil
	file_chromite_api_artifacts_proto_depIdxs = nil
}
