diff --git a/go/chromite/api/artifacts.pb.go b/go/chromite/api/artifacts.pb.go
index 79120eb..bd59e14 100644
--- a/go/chromite/api/artifacts.pb.go
+++ b/go/chromite/api/artifacts.pb.go
@@ -25,6 +25,42 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// 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
+)
+
+var PrepareForBuildResponse_BuildRelevance_name = map[int32]string{
+	0: "UNSPECIFIED",
+	1: "NEEDED",
+	2: "UNKNOWN",
+	3: "POINTLESS",
+}
+
+var PrepareForBuildResponse_BuildRelevance_value = map[string]int32{
+	"UNSPECIFIED": 0,
+	"NEEDED":      1,
+	"UNKNOWN":     2,
+	"POINTLESS":   3,
+}
+
+func (x PrepareForBuildResponse_BuildRelevance) String() string {
+	return proto.EnumName(PrepareForBuildResponse_BuildRelevance_name, int32(x))
+}
+
+func (PrepareForBuildResponse_BuildRelevance) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_62a7d4c8524262a7, []int{2, 0}
+}
+
 // An artifact is a file generated during or after a build.
 type Artifact struct {
 	// Absolute path to the artifact file.
@@ -66,8 +102,223 @@
 	return ""
 }
 
+type PrepareForBuildRequest struct {
+	// 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"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PrepareForBuildRequest) Reset()         { *m = PrepareForBuildRequest{} }
+func (m *PrepareForBuildRequest) String() string { return proto.CompactTextString(m) }
+func (*PrepareForBuildRequest) ProtoMessage()    {}
+func (*PrepareForBuildRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_62a7d4c8524262a7, []int{1}
+}
+
+func (m *PrepareForBuildRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PrepareForBuildRequest.Unmarshal(m, b)
+}
+func (m *PrepareForBuildRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PrepareForBuildRequest.Marshal(b, m, deterministic)
+}
+func (m *PrepareForBuildRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PrepareForBuildRequest.Merge(m, src)
+}
+func (m *PrepareForBuildRequest) XXX_Size() int {
+	return xxx_messageInfo_PrepareForBuildRequest.Size(m)
+}
+func (m *PrepareForBuildRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_PrepareForBuildRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PrepareForBuildRequest proto.InternalMessageInfo
+
+func (m *PrepareForBuildRequest) GetChroot() *chromiumos.Chroot {
+	if m != nil {
+		return m.Chroot
+	}
+	return nil
+}
+
+func (m *PrepareForBuildRequest) GetSysroot() *Sysroot {
+	if m != nil {
+		return m.Sysroot
+	}
+	return nil
+}
+
+func (m *PrepareForBuildRequest) GetArtifactInfo() *chromiumos.ArtifactsByService {
+	if m != nil {
+		return m.ArtifactInfo
+	}
+	return nil
+}
+
+func (m *PrepareForBuildRequest) GetForcedBuildRelevance() bool {
+	if m != nil {
+		return m.ForcedBuildRelevance
+	}
+	return false
+}
+
+type PrepareForBuildResponse struct {
+	BuildRelevance       PrepareForBuildResponse_BuildRelevance `protobuf:"varint,1,opt,name=build_relevance,json=buildRelevance,proto3,enum=chromite.api.PrepareForBuildResponse_BuildRelevance" json:"build_relevance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
+	XXX_unrecognized     []byte                                 `json:"-"`
+	XXX_sizecache        int32                                  `json:"-"`
+}
+
+func (m *PrepareForBuildResponse) Reset()         { *m = PrepareForBuildResponse{} }
+func (m *PrepareForBuildResponse) String() string { return proto.CompactTextString(m) }
+func (*PrepareForBuildResponse) ProtoMessage()    {}
+func (*PrepareForBuildResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_62a7d4c8524262a7, []int{2}
+}
+
+func (m *PrepareForBuildResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PrepareForBuildResponse.Unmarshal(m, b)
+}
+func (m *PrepareForBuildResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PrepareForBuildResponse.Marshal(b, m, deterministic)
+}
+func (m *PrepareForBuildResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PrepareForBuildResponse.Merge(m, src)
+}
+func (m *PrepareForBuildResponse) XXX_Size() int {
+	return xxx_messageInfo_PrepareForBuildResponse.Size(m)
+}
+func (m *PrepareForBuildResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_PrepareForBuildResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PrepareForBuildResponse proto.InternalMessageInfo
+
+func (m *PrepareForBuildResponse) GetBuildRelevance() PrepareForBuildResponse_BuildRelevance {
+	if m != nil {
+		return m.BuildRelevance
+	}
+	return PrepareForBuildResponse_UNSPECIFIED
+}
+
+type BundleArtifactsRequest struct {
+	// 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.
+	OutputDir            string   `protobuf:"bytes,4,opt,name=output_dir,json=outputDir,proto3" json:"output_dir,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BundleArtifactsRequest) Reset()         { *m = BundleArtifactsRequest{} }
+func (m *BundleArtifactsRequest) String() string { return proto.CompactTextString(m) }
+func (*BundleArtifactsRequest) ProtoMessage()    {}
+func (*BundleArtifactsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_62a7d4c8524262a7, []int{3}
+}
+
+func (m *BundleArtifactsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BundleArtifactsRequest.Unmarshal(m, b)
+}
+func (m *BundleArtifactsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BundleArtifactsRequest.Marshal(b, m, deterministic)
+}
+func (m *BundleArtifactsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BundleArtifactsRequest.Merge(m, src)
+}
+func (m *BundleArtifactsRequest) XXX_Size() int {
+	return xxx_messageInfo_BundleArtifactsRequest.Size(m)
+}
+func (m *BundleArtifactsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BundleArtifactsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BundleArtifactsRequest proto.InternalMessageInfo
+
+func (m *BundleArtifactsRequest) GetChroot() *chromiumos.Chroot {
+	if m != nil {
+		return m.Chroot
+	}
+	return nil
+}
+
+func (m *BundleArtifactsRequest) GetSysroot() *Sysroot {
+	if m != nil {
+		return m.Sysroot
+	}
+	return nil
+}
+
+func (m *BundleArtifactsRequest) GetArtifactInfo() *chromiumos.ArtifactsByService {
+	if m != nil {
+		return m.ArtifactInfo
+	}
+	return nil
+}
+
+func (m *BundleArtifactsRequest) GetOutputDir() string {
+	if m != nil {
+		return m.OutputDir
+	}
+	return ""
+}
+
+type BundleArtifactsResponse struct {
+	// The artifacts that were bundled.
+	Artifacts            *chromiumos.UploadedArtifactsByService `protobuf:"bytes,1,opt,name=artifacts,proto3" json:"artifacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
+	XXX_unrecognized     []byte                                 `json:"-"`
+	XXX_sizecache        int32                                  `json:"-"`
+}
+
+func (m *BundleArtifactsResponse) Reset()         { *m = BundleArtifactsResponse{} }
+func (m *BundleArtifactsResponse) String() string { return proto.CompactTextString(m) }
+func (*BundleArtifactsResponse) ProtoMessage()    {}
+func (*BundleArtifactsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_62a7d4c8524262a7, []int{4}
+}
+
+func (m *BundleArtifactsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BundleArtifactsResponse.Unmarshal(m, b)
+}
+func (m *BundleArtifactsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BundleArtifactsResponse.Marshal(b, m, deterministic)
+}
+func (m *BundleArtifactsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BundleArtifactsResponse.Merge(m, src)
+}
+func (m *BundleArtifactsResponse) XXX_Size() int {
+	return xxx_messageInfo_BundleArtifactsResponse.Size(m)
+}
+func (m *BundleArtifactsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BundleArtifactsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BundleArtifactsResponse proto.InternalMessageInfo
+
+func (m *BundleArtifactsResponse) GetArtifacts() *chromiumos.UploadedArtifactsByService {
+	if m != nil {
+		return m.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 {
 	// The build target to bundle artifacts for.
 	// Deprecated. Use sysroot instead.
@@ -87,7 +338,7 @@
 func (m *BundleRequest) String() string { return proto.CompactTextString(m) }
 func (*BundleRequest) ProtoMessage()    {}
 func (*BundleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{1}
+	return fileDescriptor_62a7d4c8524262a7, []int{5}
 }
 
 func (m *BundleRequest) XXX_Unmarshal(b []byte) error {
@@ -149,7 +400,7 @@
 func (m *BundleResponse) String() string { return proto.CompactTextString(m) }
 func (*BundleResponse) ProtoMessage()    {}
 func (*BundleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{2}
+	return fileDescriptor_62a7d4c8524262a7, []int{6}
 }
 
 func (m *BundleResponse) XXX_Unmarshal(b []byte) error {
@@ -197,7 +448,7 @@
 func (m *BundleVmFilesRequest) String() string { return proto.CompactTextString(m) }
 func (*BundleVmFilesRequest) ProtoMessage()    {}
 func (*BundleVmFilesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{3}
+	return fileDescriptor_62a7d4c8524262a7, []int{7}
 }
 
 func (m *BundleVmFilesRequest) XXX_Unmarshal(b []byte) error {
@@ -267,7 +518,7 @@
 func (m *BundleChromeAFDORequest) String() string { return proto.CompactTextString(m) }
 func (*BundleChromeAFDORequest) ProtoMessage()    {}
 func (*BundleChromeAFDORequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{4}
+	return fileDescriptor_62a7d4c8524262a7, []int{8}
 }
 
 func (m *BundleChromeAFDORequest) XXX_Unmarshal(b []byte) error {
@@ -331,7 +582,7 @@
 func (m *PinnedGuestImageUriRequest) String() string { return proto.CompactTextString(m) }
 func (*PinnedGuestImageUriRequest) ProtoMessage()    {}
 func (*PinnedGuestImageUriRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{5}
+	return fileDescriptor_62a7d4c8524262a7, []int{9}
 }
 
 func (m *PinnedGuestImageUriRequest) XXX_Unmarshal(b []byte) error {
@@ -379,7 +630,7 @@
 func (m *PinnedGuestImageUriResponse) String() string { return proto.CompactTextString(m) }
 func (*PinnedGuestImageUriResponse) ProtoMessage()    {}
 func (*PinnedGuestImageUriResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{6}
+	return fileDescriptor_62a7d4c8524262a7, []int{10}
 }
 
 func (m *PinnedGuestImageUriResponse) XXX_Unmarshal(b []byte) error {
@@ -423,7 +674,7 @@
 }
 func (*PinnedGuestImageUriResponse_PinnedGuestImage) ProtoMessage() {}
 func (*PinnedGuestImageUriResponse_PinnedGuestImage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_62a7d4c8524262a7, []int{6, 0}
+	return fileDescriptor_62a7d4c8524262a7, []int{10, 0}
 }
 
 func (m *PinnedGuestImageUriResponse_PinnedGuestImage) XXX_Unmarshal(b []byte) error {
@@ -459,7 +710,12 @@
 }
 
 func init() {
+	proto.RegisterEnum("chromite.api.PrepareForBuildResponse_BuildRelevance", PrepareForBuildResponse_BuildRelevance_name, PrepareForBuildResponse_BuildRelevance_value)
 	proto.RegisterType((*Artifact)(nil), "chromite.api.Artifact")
+	proto.RegisterType((*PrepareForBuildRequest)(nil), "chromite.api.PrepareForBuildRequest")
+	proto.RegisterType((*PrepareForBuildResponse)(nil), "chromite.api.PrepareForBuildResponse")
+	proto.RegisterType((*BundleArtifactsRequest)(nil), "chromite.api.BundleArtifactsRequest")
+	proto.RegisterType((*BundleArtifactsResponse)(nil), "chromite.api.BundleArtifactsResponse")
 	proto.RegisterType((*BundleRequest)(nil), "chromite.api.BundleRequest")
 	proto.RegisterType((*BundleResponse)(nil), "chromite.api.BundleResponse")
 	proto.RegisterType((*BundleVmFilesRequest)(nil), "chromite.api.BundleVmFilesRequest")
@@ -472,54 +728,68 @@
 func init() { proto.RegisterFile("chromite/api/artifacts.proto", fileDescriptor_62a7d4c8524262a7) }
 
 var fileDescriptor_62a7d4c8524262a7 = []byte{
-	// 737 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xdf, 0x6e, 0xd3, 0x3e,
-	0x14, 0x56, 0xda, 0x69, 0xbf, 0xf5, 0xac, 0xdd, 0xaf, 0x98, 0x3f, 0x2b, 0xd9, 0x86, 0xa6, 0x48,
-	0x48, 0x85, 0x8b, 0x46, 0x2a, 0x08, 0xa1, 0x5d, 0xd1, 0xfd, 0xe9, 0x84, 0x18, 0xda, 0x48, 0x3b,
-	0x84, 0x76, 0x53, 0x79, 0xad, 0xdb, 0x5a, 0x6a, 0x62, 0x63, 0x3b, 0x83, 0xbe, 0x1b, 0x17, 0x88,
-	0x1b, 0x1e, 0x80, 0x47, 0xe0, 0x9a, 0x77, 0x40, 0xb1, 0x93, 0xb6, 0xe9, 0x2a, 0x36, 0x96, 0x89,
-	0xbb, 0xf8, 0x7c, 0x27, 0xdf, 0x39, 0xfe, 0xfc, 0xf9, 0x24, 0xb0, 0xd9, 0x1d, 0x0a, 0xe6, 0x53,
-	0x45, 0x5c, 0xcc, 0xa9, 0x8b, 0x85, 0xa2, 0x7d, 0xdc, 0x55, 0xb2, 0xc6, 0x05, 0x53, 0x0c, 0x15,
-	0x13, 0xb4, 0x86, 0x39, 0xb5, 0xd3, 0xb9, 0xe7, 0x21, 0x1d, 0xf5, 0x3a, 0x98, 0x53, 0x93, 0x6b,
-	0xdb, 0x29, 0x54, 0x8e, 0xa5, 0x60, 0x4c, 0xc5, 0xd8, 0xba, 0xc1, 0x42, 0x9f, 0x49, 0xb7, 0xcb,
-	0x7c, 0x9f, 0x05, 0x06, 0x70, 0x1e, 0xc1, 0x4a, 0x23, 0xae, 0x89, 0x10, 0x2c, 0x71, 0xac, 0x86,
-	0x15, 0x6b, 0xdb, 0xaa, 0x16, 0x3c, 0xfd, 0xec, 0x7c, 0xb7, 0xa0, 0xb4, 0x1b, 0x06, 0xbd, 0x11,
-	0xf1, 0xc8, 0xc7, 0x90, 0x48, 0x85, 0x76, 0xa0, 0x68, 0x2a, 0x2b, 0x2c, 0x06, 0x44, 0xe9, 0xec,
-	0xd5, 0xfa, 0x7a, 0x6d, 0x5a, 0xa1, 0xb6, 0x1b, 0xe1, 0x6d, 0x0d, 0x7b, 0xab, 0xe7, 0xd3, 0x05,
-	0xda, 0x02, 0x60, 0xa1, 0xe2, 0xa1, 0xea, 0xf4, 0xa8, 0xa8, 0xe4, 0x74, 0x9d, 0x82, 0x89, 0xec,
-	0x53, 0x81, 0x9e, 0xc2, 0x72, 0xc4, 0xc2, 0x54, 0x25, 0xaf, 0x49, 0xd1, 0x2c, 0xe9, 0x9e, 0x46,
-	0xbc, 0x38, 0x03, 0xb9, 0xf0, 0x5f, 0xbc, 0xc5, 0xca, 0x92, 0x4e, 0xbe, 0x5f, 0x9b, 0xd5, 0xaa,
-	0xd6, 0x32, 0xa0, 0x97, 0x64, 0x39, 0x4d, 0x58, 0x4b, 0x36, 0x22, 0x39, 0x0b, 0x24, 0x41, 0xcf,
-	0xa1, 0x30, 0xd1, 0xbb, 0x62, 0x6d, 0xe7, 0xab, 0xab, 0xf5, 0x07, 0x69, 0x92, 0x44, 0x1a, 0x6f,
-	0x9a, 0xe8, 0x7c, 0xb1, 0xe0, 0x9e, 0x21, 0x7a, 0xef, 0x37, 0xe9, 0x88, 0xc8, 0x44, 0x98, 0x69,
-	0xf7, 0xd6, 0xdf, 0x74, 0x9f, 0xbb, 0x4e, 0xf7, 0xa8, 0x0a, 0x65, 0x45, 0xa4, 0xea, 0x08, 0x22,
-	0xc3, 0x91, 0x92, 0x5a, 0xbf, 0xbc, 0xd6, 0x6f, 0x2d, 0x8a, 0x7b, 0x26, 0x1c, 0x89, 0x98, 0xd6,
-	0x78, 0x69, 0x4e, 0x63, 0xe7, 0xa7, 0x05, 0xeb, 0xa6, 0xfd, 0xa8, 0x25, 0x9f, 0x34, 0x9a, 0xfb,
-	0xc7, 0x37, 0xd9, 0xc1, 0xbc, 0x0d, 0x72, 0x37, 0xb6, 0x41, 0x7e, 0xde, 0x06, 0x0d, 0x28, 0x25,
-	0x72, 0x77, 0xd4, 0x98, 0x13, 0xbd, 0x89, 0xb5, 0xfa, 0xe6, 0x2c, 0x77, 0xd4, 0x76, 0x72, 0x3a,
-	0xed, 0x31, 0x27, 0x5e, 0x11, 0xcf, 0xac, 0x9c, 0x31, 0xd8, 0x27, 0x34, 0x08, 0x48, 0xef, 0x30,
-	0xda, 0xd8, 0x6b, 0x1f, 0x0f, 0xc8, 0xa9, 0xa0, 0xff, 0xe2, 0xa4, 0x9c, 0xaf, 0x16, 0x6c, 0x2c,
-	0xac, 0x1d, 0xbb, 0xae, 0x03, 0x25, 0xae, 0xe1, 0x0e, 0x8d, 0xa0, 0xc4, 0x79, 0x3b, 0x69, 0xda,
-	0x3f, 0x30, 0x5c, 0xc2, 0xbc, 0xa2, 0x21, 0xd4, 0x0b, 0x69, 0xbf, 0x82, 0xf2, 0x7c, 0x06, 0xb2,
-	0x61, 0xa5, 0x4f, 0x47, 0x24, 0xc0, 0x3e, 0x89, 0xaf, 0xf7, 0x64, 0x8d, 0xca, 0x90, 0x0f, 0x05,
-	0x8d, 0x6f, 0x63, 0xf4, 0x58, 0xff, 0x51, 0x80, 0x72, 0x22, 0xae, 0x6c, 0x11, 0x71, 0x41, 0xbb,
-	0x04, 0x9d, 0xc0, 0x5d, 0xe3, 0x9b, 0x46, 0xa8, 0x58, 0xe4, 0x39, 0x6d, 0x7e, 0xb4, 0x91, 0xee,
-	0x3b, 0x35, 0x2b, 0xec, 0xcd, 0xc5, 0x60, 0xac, 0xc4, 0xbb, 0xe4, 0x22, 0x19, 0x27, 0x1e, 0xb7,
-	0xf6, 0x58, 0xd0, 0xa7, 0x83, 0x2c, 0x94, 0x6f, 0xa1, 0x6c, 0x22, 0x07, 0xda, 0x6f, 0x47, 0x6c,
-	0x90, 0xa9, 0xc3, 0x37, 0xc9, 0xcc, 0x68, 0x52, 0xe1, 0x7f, 0xc2, 0x82, 0x64, 0x21, 0x9b, 0x08,
-	0xa8, 0x8f, 0xa4, 0x21, 0xba, 0x43, 0x7a, 0x41, 0x6e, 0xa7, 0x3d, 0xcd, 0x78, 0x46, 0x79, 0x16,
-	0xb2, 0x1e, 0x6c, 0xc5, 0xe7, 0xdb, 0xdc, 0x3f, 0x3e, 0x24, 0x01, 0x11, 0x58, 0x51, 0x16, 0x4c,
-	0x7c, 0x80, 0x1e, 0x2f, 0x7a, 0xfd, 0xd2, 0x10, 0xb9, 0xa2, 0x4a, 0x3b, 0x99, 0x3e, 0xf3, 0x16,
-	0xcd, 0x24, 0xc4, 0x07, 0xd8, 0x30, 0x91, 0x16, 0xf5, 0xf9, 0xa4, 0xa9, 0x49, 0xe7, 0x19, 0x98,
-	0x8f, 0xe0, 0x7f, 0x13, 0x69, 0xe3, 0x5b, 0x70, 0xfc, 0x29, 0x54, 0x62, 0x36, 0x22, 0xd5, 0x29,
-	0xef, 0x61, 0x45, 0x4e, 0xf0, 0x78, 0xc4, 0x70, 0x2f, 0xe3, 0x45, 0x2a, 0xa5, 0xbe, 0x48, 0xc8,
-	0x59, 0x94, 0x9e, 0xfe, 0x5c, 0x5d, 0xbd, 0xef, 0x83, 0xcf, 0x9c, 0x09, 0xb5, 0xc7, 0x89, 0x47,
-	0xa2, 0x87, 0x2c, 0x0d, 0x72, 0x78, 0xd8, 0x24, 0xaa, 0x3b, 0x5c, 0x30, 0xd5, 0x24, 0xaa, 0x5e,
-	0x63, 0xf2, 0x99, 0x22, 0x4f, 0xae, 0x3d, 0x23, 0xed, 0x3b, 0xdf, 0x7e, 0xd9, 0xa5, 0x99, 0xef,
-	0x7b, 0x39, 0xb7, 0xfb, 0xf2, 0xec, 0xc5, 0x80, 0x4d, 0x26, 0x7d, 0x8d, 0x89, 0x81, 0x3b, 0xf3,
-	0x57, 0x44, 0x83, 0xbe, 0xc0, 0xae, 0xfe, 0x29, 0x72, 0x07, 0xcc, 0x9d, 0xfd, 0x97, 0x3a, 0x5f,
-	0xd6, 0xe1, 0x67, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0xaa, 0x8b, 0x68, 0xac, 0x09, 0x00,
-	0x00,
+	// 964 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
+	0x17, 0xff, 0x3b, 0xa9, 0xba, 0xcd, 0x49, 0x93, 0xfa, 0x3f, 0x2c, 0x6d, 0x48, 0xbb, 0xab, 0x95,
+	0x05, 0x28, 0x70, 0x91, 0x48, 0xa1, 0x42, 0x68, 0xaf, 0x68, 0xf3, 0xb1, 0x8a, 0xb6, 0x24, 0xc1,
+	0x49, 0x00, 0xad, 0x04, 0xd1, 0x34, 0x9e, 0xa4, 0x23, 0xc5, 0x9e, 0x61, 0x3c, 0x2e, 0xe4, 0x39,
+	0x78, 0x1d, 0x2e, 0x10, 0x5c, 0xf0, 0x0c, 0x5c, 0x73, 0x8d, 0xc4, 0x23, 0x20, 0xcf, 0xd8, 0xa9,
+	0xed, 0xa6, 0x6a, 0xd9, 0xac, 0x56, 0xe2, 0xce, 0x33, 0xe7, 0xcc, 0xef, 0x9c, 0xf3, 0x3b, 0x1f,
+	0xe3, 0x81, 0x93, 0xd9, 0x95, 0x60, 0x2e, 0x95, 0xa4, 0x81, 0x39, 0x6d, 0x60, 0x21, 0xe9, 0x1c,
+	0xcf, 0xa4, 0x5f, 0xe7, 0x82, 0x49, 0x86, 0xf6, 0x63, 0x69, 0x1d, 0x73, 0x5a, 0x4d, 0xeb, 0x5e,
+	0x06, 0x74, 0xe9, 0x4c, 0x31, 0xa7, 0x5a, 0xb7, 0x5a, 0x4d, 0x49, 0xfd, 0x95, 0x2f, 0x18, 0x93,
+	0x91, 0xec, 0x48, 0xcb, 0x02, 0x97, 0xf9, 0x8d, 0x19, 0x73, 0x5d, 0xe6, 0x69, 0x81, 0xf5, 0x14,
+	0xf6, 0xce, 0x22, 0x9b, 0x08, 0xc1, 0x0e, 0xc7, 0xf2, 0xaa, 0x62, 0x3c, 0x33, 0x6a, 0x05, 0x5b,
+	0x7d, 0x5b, 0x7f, 0x1b, 0x70, 0x38, 0x14, 0x84, 0x63, 0x41, 0xba, 0x4c, 0x9c, 0x87, 0x26, 0x6d,
+	0xf2, 0x7d, 0x40, 0x7c, 0x89, 0x3e, 0x86, 0xdd, 0x10, 0x95, 0x49, 0x75, 0xa0, 0xd8, 0x44, 0xf5,
+	0x1b, 0x23, 0xf5, 0x96, 0x92, 0xd8, 0x91, 0x06, 0x6a, 0xc0, 0xa3, 0xc8, 0xa1, 0x4a, 0x4e, 0x29,
+	0xbf, 0x5b, 0x4f, 0x46, 0x56, 0x1f, 0x69, 0xa1, 0x1d, 0x6b, 0xa1, 0x16, 0x94, 0x62, 0x2e, 0xa6,
+	0xd4, 0x9b, 0xb3, 0x4a, 0x5e, 0x1d, 0x7b, 0x9a, 0xb4, 0x11, 0x3b, 0xee, 0x9f, 0xaf, 0x46, 0x44,
+	0x5c, 0xd3, 0x19, 0xb1, 0xf7, 0xe3, 0x43, 0x3d, 0x6f, 0xce, 0xd0, 0x29, 0x1c, 0xce, 0x99, 0x98,
+	0x11, 0x67, 0xaa, 0xb9, 0x12, 0x64, 0x49, 0xae, 0xb1, 0x37, 0x23, 0x95, 0x9d, 0x67, 0x46, 0x6d,
+	0xcf, 0x7e, 0xac, 0xa5, 0x51, 0x54, 0x91, 0xcc, 0xfa, 0xcd, 0x80, 0xa3, 0x5b, 0x21, 0xfb, 0x9c,
+	0x79, 0x3e, 0x41, 0xdf, 0xc2, 0x41, 0x16, 0x2a, 0x0c, 0xbe, 0xdc, 0x3c, 0x4d, 0xc7, 0x73, 0xc7,
+	0xf9, 0x7a, 0xda, 0x94, 0x5d, 0xbe, 0x4c, 0x9b, 0xee, 0x41, 0x39, 0xad, 0x81, 0x0e, 0xa0, 0x38,
+	0xe9, 0x8f, 0x86, 0x9d, 0x56, 0xaf, 0xdb, 0xeb, 0xb4, 0xcd, 0xff, 0x21, 0x80, 0xdd, 0x7e, 0xa7,
+	0xd3, 0xee, 0xb4, 0x4d, 0x03, 0x15, 0xe1, 0xd1, 0xa4, 0xff, 0xb2, 0x3f, 0xf8, 0xba, 0x6f, 0xe6,
+	0x50, 0x09, 0x0a, 0xc3, 0x41, 0xaf, 0x3f, 0xbe, 0xe8, 0x8c, 0x46, 0x66, 0xde, 0xfa, 0xc3, 0x80,
+	0xc3, 0xf3, 0xc0, 0x73, 0x96, 0x64, 0x4d, 0xd3, 0x7f, 0x27, 0x71, 0x4f, 0x00, 0x58, 0x20, 0x79,
+	0x20, 0xa7, 0x0e, 0x15, 0x2a, 0x59, 0x05, 0xbb, 0xa0, 0x77, 0xda, 0x54, 0x58, 0x53, 0x38, 0xba,
+	0x15, 0x5a, 0x94, 0xa0, 0x36, 0x14, 0xd6, 0x3d, 0x14, 0x85, 0xf7, 0x61, 0xd2, 0xf4, 0x84, 0x2f,
+	0x19, 0x76, 0x88, 0xb3, 0xc1, 0x85, 0x9b, 0x83, 0xd6, 0xef, 0x06, 0x94, 0xb4, 0x85, 0x98, 0xb3,
+	0xe7, 0xb0, 0xaf, 0x13, 0x2f, 0xb1, 0x58, 0x90, 0x98, 0xb9, 0xa3, 0x24, 0xb4, 0xca, 0xdc, 0x58,
+	0x89, 0xed, 0xe2, 0xe5, 0xcd, 0x22, 0x13, 0x4d, 0x2e, 0x13, 0x4d, 0x22, 0x1d, 0xf9, 0x7f, 0x93,
+	0x8e, 0x9d, 0x87, 0xa4, 0xc3, 0xea, 0x86, 0x15, 0xa5, 0x03, 0x89, 0x18, 0x3a, 0x4d, 0x33, 0x94,
+	0xaf, 0x15, 0x9b, 0x87, 0x69, 0x90, 0x98, 0x9b, 0x24, 0x23, 0x3f, 0x1b, 0xf0, 0x58, 0x03, 0x7d,
+	0xe5, 0x76, 0xe9, 0x92, 0xbc, 0x9d, 0x62, 0xaa, 0x81, 0x29, 0x89, 0x2f, 0xa7, 0x82, 0xf8, 0xc1,
+	0x52, 0xfa, 0x8a, 0xbf, 0xbc, 0xe2, 0xaf, 0x1c, 0xee, 0xdb, 0x7a, 0x3b, 0x24, 0xf1, 0x9e, 0x8a,
+	0xf9, 0xd3, 0x88, 0x4b, 0x26, 0x74, 0xc9, 0x25, 0x67, 0xdd, 0xf6, 0xe0, 0x75, 0x22, 0xc8, 0x96,
+	0x41, 0xee, 0xb5, 0xcb, 0x20, 0x9f, 0x2d, 0x83, 0xb3, 0x44, 0xe3, 0xc8, 0x15, 0xd7, 0x33, 0xaa,
+	0xdc, 0x3c, 0x49, 0x35, 0x4e, 0xb7, 0x3d, 0x88, 0xb3, 0x33, 0x5e, 0xf1, 0x44, 0xdb, 0x84, 0x2b,
+	0x6b, 0x05, 0xd5, 0x21, 0xf5, 0x3c, 0xe2, 0xbc, 0x08, 0x03, 0xeb, 0xb9, 0x78, 0x41, 0x26, 0x82,
+	0xbe, 0x8d, 0x4c, 0x59, 0xbf, 0x18, 0x70, 0xbc, 0xd1, 0x76, 0x54, 0x75, 0x53, 0x28, 0x71, 0x25,
+	0x9e, 0xd2, 0x50, 0x14, 0x57, 0xde, 0xf3, 0xcc, 0xd8, 0xbc, 0x1b, 0xe1, 0x96, 0xcc, 0xde, 0xd7,
+	0x80, 0x6a, 0xe1, 0x57, 0x3f, 0x07, 0x33, 0xab, 0x81, 0xaa, 0xb0, 0x37, 0xa7, 0x4b, 0xe2, 0x61,
+	0x97, 0x44, 0x97, 0xda, 0x7a, 0x8d, 0x4c, 0xc8, 0x07, 0x82, 0x46, 0xdd, 0x18, 0x7e, 0x36, 0x7f,
+	0x2a, 0x82, 0xb9, 0x1e, 0x0b, 0xd1, 0x50, 0x40, 0xdf, 0xc1, 0x41, 0x66, 0x96, 0xa3, 0xf7, 0xef,
+	0x19, 0xf5, 0x8a, 0xed, 0xea, 0x07, 0x0f, 0xba, 0x10, 0x42, 0xfc, 0xcc, 0x28, 0xcb, 0xe2, 0x6f,
+	0x1e, 0xe2, 0x59, 0xfc, 0xbb, 0xe6, 0x21, 0x87, 0xf7, 0xba, 0x44, 0xce, 0xae, 0x36, 0x30, 0xeb,
+	0xa3, 0xda, 0x03, 0xd8, 0xd7, 0xd6, 0x3e, 0x7a, 0x70, 0x9e, 0xd0, 0x10, 0xde, 0x89, 0x9c, 0x09,
+	0x24, 0x0b, 0xbb, 0x54, 0x8d, 0x0b, 0x74, 0xbc, 0xc9, 0xdf, 0x18, 0xfe, 0x64, 0xb3, 0x30, 0x42,
+	0xfc, 0x32, 0x1e, 0x3d, 0xba, 0x77, 0x07, 0xa3, 0x16, 0xf3, 0xe6, 0x74, 0xb1, 0x0d, 0xe4, 0x17,
+	0x60, 0xea, 0x9d, 0x8e, 0xea, 0xd0, 0x0b, 0xb6, 0xd8, 0xca, 0xc3, 0x97, 0xf1, 0x94, 0xed, 0x52,
+	0xe1, 0xfe, 0x80, 0x05, 0xd9, 0x06, 0x6c, 0x4d, 0xa0, 0xa2, 0xf6, 0x4c, 0xcc, 0xae, 0xe8, 0x35,
+	0x79, 0x33, 0xee, 0x29, 0xc4, 0x57, 0x94, 0x6f, 0x03, 0xe6, 0xc0, 0x93, 0x28, 0xbf, 0xdd, 0xf6,
+	0xe0, 0x05, 0xf1, 0x88, 0xc0, 0x92, 0x32, 0xef, 0xa6, 0x7e, 0x37, 0x56, 0xe6, 0xad, 0xb1, 0x7b,
+	0x8f, 0x95, 0x71, 0x3c, 0xaf, 0xb3, 0xa5, 0xb6, 0x15, 0x11, 0xdf, 0xc0, 0xb1, 0xde, 0x19, 0x51,
+	0x97, 0xaf, 0x9d, 0x5a, 0x7b, 0xbe, 0x05, 0xf2, 0x45, 0xdc, 0xc7, 0x63, 0xfc, 0x06, 0x2a, 0x7e,
+	0x02, 0x95, 0x08, 0x8d, 0xf8, 0x72, 0xc2, 0x1d, 0x2c, 0xc9, 0x10, 0xaf, 0xc2, 0x3f, 0x97, 0x2d,
+	0x1b, 0xa9, 0x94, 0xba, 0xc3, 0x91, 0xb5, 0x49, 0x3d, 0x7d, 0xc1, 0xdf, 0x1f, 0x77, 0xe7, 0x47,
+	0xce, 0x84, 0x6c, 0x71, 0x62, 0x93, 0xf0, 0x63, 0x0b, 0x07, 0xab, 0xff, 0xff, 0xf5, 0xaf, 0x6a,
+	0x29, 0xf1, 0x7f, 0x62, 0xe6, 0xce, 0x3f, 0x7b, 0xf5, 0xe9, 0x82, 0xad, 0x6f, 0xaa, 0x3a, 0x13,
+	0x8b, 0x46, 0xe2, 0x2d, 0x43, 0xbd, 0xb9, 0xc0, 0x0d, 0xf5, 0x94, 0x69, 0x2c, 0x58, 0x23, 0xf9,
+	0x02, 0xba, 0xdc, 0x55, 0xdb, 0x9f, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x26, 0x47, 0xc1,
+	0x62, 0x0d, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -534,36 +804,53 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ArtifactsServiceClient interface {
+	// Prepare to build artifacts.
+	PrepareForBuild(ctx context.Context, in *PrepareForBuildRequest, opts ...grpc.CallOption) (*PrepareForBuildResponse, error)
+	// Bundle artifacts for build.
+	BundleArtifacts(ctx context.Context, in *BundleArtifactsRequest, opts ...grpc.CallOption) (*BundleArtifactsResponse, error)
+	// Fetch the pinned guest image locations.
+	FetchPinnedGuestImageUris(ctx context.Context, in *PinnedGuestImageUriRequest, opts ...grpc.CallOption) (*PinnedGuestImageUriResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all files needed for Autotest HW testing.
 	BundleAutotestFiles(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create the ChromeOS Config JSON payload.
 	BundleChromeOSConfig(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with ebuild logs.
 	BundleEbuildLogs(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with unsigned firmware images.
 	BundleFirmware(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar.xz archive for each image that has been created.
 	BundleImageArchives(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate zip containing all built images for the target.
 	BundleImageZip(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// DEPRECATED for recipes: crbug/1019868: This are being replaced by
 	// ToolchainService.Bundle{ArtifactType}()
 	// Create Chrome Benchmark AFDO builder artifacts.
 	BundleAFDOGenerationArtifacts(ctx context.Context, in *BundleChromeAFDORequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all guest images test bundles.
 	BundlePinnedGuestImages(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create the simple chrome artifacts.
 	BundleSimpleChromeArtifacts(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all files needed for Tast HW testing.
 	BundleTastFiles(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate minimal update payloads to be used in HW testing.
 	BundleTestUpdatePayloads(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with VM memory and disk images.
 	BundleVmFiles(ctx context.Context, in *BundleVmFilesRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate a CPE report to a file.
 	ExportCpeReport(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
-	// Fetch the pinned guest image locations.
-	FetchPinnedGuestImageUris(ctx context.Context, in *PinnedGuestImageUriRequest, opts ...grpc.CallOption) (*PinnedGuestImageUriResponse, error)
 }
 
 type artifactsServiceClient struct {
@@ -574,6 +861,33 @@
 	return &artifactsServiceClient{cc}
 }
 
+func (c *artifactsServiceClient) PrepareForBuild(ctx context.Context, in *PrepareForBuildRequest, opts ...grpc.CallOption) (*PrepareForBuildResponse, error) {
+	out := new(PrepareForBuildResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/PrepareForBuild", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *artifactsServiceClient) BundleArtifacts(ctx context.Context, in *BundleArtifactsRequest, opts ...grpc.CallOption) (*BundleArtifactsResponse, error) {
+	out := new(BundleArtifactsResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/BundleArtifacts", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *artifactsServiceClient) FetchPinnedGuestImageUris(ctx context.Context, in *PinnedGuestImageUriRequest, opts ...grpc.CallOption) (*PinnedGuestImageUriResponse, error) {
+	out := new(PinnedGuestImageUriResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/FetchPinnedGuestImageUris", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *artifactsServiceClient) BundleAutotestFiles(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error) {
 	out := new(BundleResponse)
 	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/BundleAutotestFiles", in, out, opts...)
@@ -691,53 +1005,70 @@
 	return out, nil
 }
 
-func (c *artifactsServiceClient) FetchPinnedGuestImageUris(ctx context.Context, in *PinnedGuestImageUriRequest, opts ...grpc.CallOption) (*PinnedGuestImageUriResponse, error) {
-	out := new(PinnedGuestImageUriResponse)
-	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/FetchPinnedGuestImageUris", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 // ArtifactsServiceServer is the server API for ArtifactsService service.
 type ArtifactsServiceServer interface {
+	// Prepare to build artifacts.
+	PrepareForBuild(context.Context, *PrepareForBuildRequest) (*PrepareForBuildResponse, error)
+	// Bundle artifacts for build.
+	BundleArtifacts(context.Context, *BundleArtifactsRequest) (*BundleArtifactsResponse, error)
+	// Fetch the pinned guest image locations.
+	FetchPinnedGuestImageUris(context.Context, *PinnedGuestImageUriRequest) (*PinnedGuestImageUriResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all files needed for Autotest HW testing.
 	BundleAutotestFiles(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create the ChromeOS Config JSON payload.
 	BundleChromeOSConfig(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with ebuild logs.
 	BundleEbuildLogs(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with unsigned firmware images.
 	BundleFirmware(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar.xz archive for each image that has been created.
 	BundleImageArchives(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate zip containing all built images for the target.
 	BundleImageZip(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// DEPRECATED for recipes: crbug/1019868: This are being replaced by
 	// ToolchainService.Bundle{ArtifactType}()
 	// Create Chrome Benchmark AFDO builder artifacts.
 	BundleAFDOGenerationArtifacts(context.Context, *BundleChromeAFDORequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all guest images test bundles.
 	BundlePinnedGuestImages(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create the simple chrome artifacts.
 	BundleSimpleChromeArtifacts(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with all files needed for Tast HW testing.
 	BundleTastFiles(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate minimal update payloads to be used in HW testing.
 	BundleTestUpdatePayloads(context.Context, *BundleRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Create a tar archive with VM memory and disk images.
 	BundleVmFiles(context.Context, *BundleVmFilesRequest) (*BundleResponse, error)
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate a CPE report to a file.
 	ExportCpeReport(context.Context, *BundleRequest) (*BundleResponse, error)
-	// Fetch the pinned guest image locations.
-	FetchPinnedGuestImageUris(context.Context, *PinnedGuestImageUriRequest) (*PinnedGuestImageUriResponse, error)
 }
 
 // UnimplementedArtifactsServiceServer can be embedded to have forward compatible implementations.
 type UnimplementedArtifactsServiceServer struct {
 }
 
+func (*UnimplementedArtifactsServiceServer) PrepareForBuild(ctx context.Context, req *PrepareForBuildRequest) (*PrepareForBuildResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PrepareForBuild not implemented")
+}
+func (*UnimplementedArtifactsServiceServer) BundleArtifacts(ctx context.Context, req *BundleArtifactsRequest) (*BundleArtifactsResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method BundleArtifacts not implemented")
+}
+func (*UnimplementedArtifactsServiceServer) FetchPinnedGuestImageUris(ctx context.Context, req *PinnedGuestImageUriRequest) (*PinnedGuestImageUriResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method FetchPinnedGuestImageUris not implemented")
+}
 func (*UnimplementedArtifactsServiceServer) BundleAutotestFiles(ctx context.Context, req *BundleRequest) (*BundleResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method BundleAutotestFiles not implemented")
 }
@@ -777,14 +1108,65 @@
 func (*UnimplementedArtifactsServiceServer) ExportCpeReport(ctx context.Context, req *BundleRequest) (*BundleResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ExportCpeReport not implemented")
 }
-func (*UnimplementedArtifactsServiceServer) FetchPinnedGuestImageUris(ctx context.Context, req *PinnedGuestImageUriRequest) (*PinnedGuestImageUriResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FetchPinnedGuestImageUris not implemented")
-}
 
 func RegisterArtifactsServiceServer(s *grpc.Server, srv ArtifactsServiceServer) {
 	s.RegisterService(&_ArtifactsService_serviceDesc, srv)
 }
 
+func _ArtifactsService_PrepareForBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PrepareForBuildRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ArtifactsServiceServer).PrepareForBuild(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.ArtifactsService/PrepareForBuild",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ArtifactsServiceServer).PrepareForBuild(ctx, req.(*PrepareForBuildRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ArtifactsService_BundleArtifacts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BundleArtifactsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ArtifactsServiceServer).BundleArtifacts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.ArtifactsService/BundleArtifacts",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ArtifactsServiceServer).BundleArtifacts(ctx, req.(*BundleArtifactsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ArtifactsService_FetchPinnedGuestImageUris_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PinnedGuestImageUriRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ArtifactsServiceServer).FetchPinnedGuestImageUris(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.ArtifactsService/FetchPinnedGuestImageUris",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ArtifactsServiceServer).FetchPinnedGuestImageUris(ctx, req.(*PinnedGuestImageUriRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _ArtifactsService_BundleAutotestFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(BundleRequest)
 	if err := dec(in); err != nil {
@@ -1019,29 +1401,23 @@
 	return interceptor(ctx, in, info, handler)
 }
 
-func _ArtifactsService_FetchPinnedGuestImageUris_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(PinnedGuestImageUriRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(ArtifactsServiceServer).FetchPinnedGuestImageUris(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/chromite.api.ArtifactsService/FetchPinnedGuestImageUris",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ArtifactsServiceServer).FetchPinnedGuestImageUris(ctx, req.(*PinnedGuestImageUriRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 var _ArtifactsService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "chromite.api.ArtifactsService",
 	HandlerType: (*ArtifactsServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
+			MethodName: "PrepareForBuild",
+			Handler:    _ArtifactsService_PrepareForBuild_Handler,
+		},
+		{
+			MethodName: "BundleArtifacts",
+			Handler:    _ArtifactsService_BundleArtifacts_Handler,
+		},
+		{
+			MethodName: "FetchPinnedGuestImageUris",
+			Handler:    _ArtifactsService_FetchPinnedGuestImageUris_Handler,
+		},
+		{
 			MethodName: "BundleAutotestFiles",
 			Handler:    _ArtifactsService_BundleAutotestFiles_Handler,
 		},
@@ -1093,10 +1469,6 @@
 			MethodName: "ExportCpeReport",
 			Handler:    _ArtifactsService_ExportCpeReport_Handler,
 		},
-		{
-			MethodName: "FetchPinnedGuestImageUris",
-			Handler:    _ArtifactsService_FetchPinnedGuestImageUris_Handler,
-		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "chromite/api/artifacts.proto",
diff --git a/go/chromiumos/builder_config.pb.go b/go/chromiumos/builder_config.pb.go
index 1a499e3..ebf95e6 100644
--- a/go/chromiumos/builder_config.pb.go
+++ b/go/chromiumos/builder_config.pb.go
@@ -232,7 +232,9 @@
 // Used to indicate artifact types that should be uploaded by the builder.
 // Must be kept in sync with the dictionary in:
 // https://chromium.googlesource.com/chromiumos/infra/recipes/+/refs/heads/master/recipe_modules/cros_artifacts/api.py
-// TODO(crbug/1027720): Migrate this to common.proto
+// TODO(crbug/1034529): Being replaced by common.ArtifactsByService, to
+// eliminate the need to update cros_artifacts every time an artifact type
+// is added.
 type BuilderConfig_Artifacts_ArtifactTypes int32
 
 const (
@@ -822,16 +824,20 @@
 	// Google storage bucket to upload prebuilts to.
 	PrebuiltsGsBucket string `protobuf:"bytes,3,opt,name=prebuilts_gs_bucket,json=prebuiltsGsBucket,proto3" json:"prebuilts_gs_bucket,omitempty"`
 	// Google storage bucket to upload artifacts to.
+	// TODO(crbug/1034529): DEPRECATED: see artifacts_info.
 	ArtifactsGsBucket string `protobuf:"bytes,4,opt,name=artifacts_gs_bucket,json=artifactsGsBucket,proto3" json:"artifacts_gs_bucket,omitempty"`
 	// There may be more than one set of publishing instructions.
 	PublishArtifacts []*BuilderConfig_Artifacts_PublishInfo `protobuf:"bytes,5,rep,name=publish_artifacts,json=publishArtifacts,proto3" json:"publish_artifacts,omitempty"`
 	// There may be more than one set of consumable artifacts.
 	InputArtifacts []*BuilderConfig_Artifacts_InputArtifactInfo `protobuf:"bytes,6,rep,name=input_artifacts,json=inputArtifacts,proto3" json:"input_artifacts,omitempty"`
 	// Profile information needed by artifact prepare/bundle endpoints.
-	ArtifactProfileInfo  *ArtifactProfileInfo `protobuf:"bytes,7,opt,name=artifact_profile_info,json=artifactProfileInfo,proto3" json:"artifact_profile_info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	// TODO(crbug/1034529): DEPRECATED: see artifacts_info.
+	ArtifactProfileInfo *ArtifactProfileInfo `protobuf:"bytes,7,opt,name=artifact_profile_info,json=artifactProfileInfo,proto3" json:"artifact_profile_info,omitempty"`
+	// Artifacts separated by service.
+	ArtifactsInfo        *ArtifactsByService `protobuf:"bytes,8,opt,name=artifacts_info,json=artifactsInfo,proto3" json:"artifacts_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
 func (m *BuilderConfig_Artifacts) Reset()         { *m = BuilderConfig_Artifacts{} }
@@ -908,6 +914,14 @@
 	return nil
 }
 
+func (m *BuilderConfig_Artifacts) GetArtifactsInfo() *ArtifactsByService {
+	if m != nil {
+		return m.ArtifactsInfo
+	}
+	return nil
+}
+
+// TODO(crbug/1034529): DEPRECATED: see artifacts_info.
 type BuilderConfig_Artifacts_PublishInfo struct {
 	// Artifact types to publish to this bucket.
 	PublishTypes []BuilderConfig_Artifacts_ArtifactTypes `protobuf:"varint,2,rep,packed,name=publish_types,json=publishTypes,proto3,enum=chromiumos.BuilderConfig_Artifacts_ArtifactTypes" json:"publish_types,omitempty"`
@@ -966,6 +980,7 @@
 	return ""
 }
 
+// TODO(crbug/1034529): DEPRECATED: see artifacts_info.
 type BuilderConfig_Artifacts_InputArtifactInfo struct {
 	// Artifact type to seek in these buckets.  Use the first instance of the
 	// artifact found in the list of locations.
@@ -1565,142 +1580,143 @@
 func init() { proto.RegisterFile("chromiumos/builder_config.proto", fileDescriptor_6fe67302c16003fb) }
 
 var fileDescriptor_6fe67302c16003fb = []byte{
-	// 2180 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x4d, 0x73, 0xdb, 0xc8,
-	0xd1, 0x7e, 0x49, 0x51, 0x12, 0xd9, 0xfc, 0x82, 0x46, 0xb2, 0xcd, 0xe5, 0xfa, 0xb5, 0x65, 0x79,
-	0x37, 0x6b, 0x6f, 0xb2, 0x94, 0xa3, 0x8d, 0x5d, 0x49, 0x6d, 0x52, 0xbb, 0x20, 0x08, 0x52, 0xb0,
-	0x29, 0x00, 0x3b, 0x04, 0xa5, 0xb5, 0xf3, 0x31, 0x05, 0x82, 0x20, 0x85, 0x12, 0x08, 0x20, 0x00,
-	0xb8, 0x2e, 0x9f, 0x53, 0xf9, 0x09, 0x39, 0xe5, 0x96, 0xff, 0x90, 0x5b, 0xaa, 0x72, 0xc8, 0x3d,
-	0xc7, 0x1c, 0xf3, 0x57, 0x92, 0x9a, 0xc1, 0x07, 0x01, 0x5a, 0xb2, 0x98, 0xe4, 0xc2, 0x42, 0xf7,
-	0x3c, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x0f, 0xe1, 0xa1, 0x71, 0xe9, 0xbb, 0x0b, 0x6b, 0xb9,
-	0x70, 0x83, 0xe3, 0xc9, 0xd2, 0xb2, 0xa7, 0xa6, 0x4f, 0x0c, 0xd7, 0x99, 0x59, 0xf3, 0x8e, 0xe7,
-	0xbb, 0xa1, 0x8b, 0x60, 0x05, 0x68, 0xdf, 0xcb, 0x80, 0x0d, 0x77, 0xb1, 0x70, 0x9d, 0x08, 0xd4,
-	0x7e, 0x38, 0x77, 0xdd, 0xb9, 0x6d, 0x1e, 0x33, 0x69, 0xb2, 0x9c, 0x1d, 0x87, 0xd6, 0xc2, 0x0c,
-	0x42, 0x7d, 0xe1, 0xc5, 0x80, 0x07, 0xeb, 0x80, 0xb7, 0xbe, 0xee, 0x79, 0xa6, 0x1f, 0x44, 0xe3,
-	0x47, 0xff, 0xfa, 0x0c, 0xea, 0xdd, 0x68, 0x7a, 0x81, 0xcd, 0x8e, 0x7e, 0x04, 0x45, 0x6b, 0xda,
-	0x2a, 0x1c, 0x16, 0x9e, 0x54, 0x4f, 0xee, 0x77, 0x56, 0x13, 0x77, 0x72, 0xb0, 0x8e, 0x34, 0xc5,
-	0x45, 0x6b, 0x8a, 0xbe, 0x82, 0xdd, 0xb9, 0xe9, 0x98, 0xbe, 0x6e, 0xb7, 0x8a, 0x8c, 0xf2, 0xe8,
-	0x66, 0xca, 0x20, 0x02, 0xe2, 0x84, 0x81, 0x5e, 0x42, 0xcd, 0xf5, 0x8d, 0x4b, 0x33, 0x08, 0x7d,
-	0x3d, 0x74, 0xfd, 0xd6, 0x16, 0xb3, 0xf0, 0x83, 0x9b, 0x2d, 0x28, 0x19, 0x34, 0xce, 0x71, 0x11,
-	0x0f, 0x15, 0xdd, 0x0f, 0xad, 0x99, 0x6e, 0x84, 0x41, 0xab, 0xc4, 0x0c, 0x3d, 0xbe, 0xd9, 0x10,
-	0x9f, 0x40, 0xf1, 0x8a, 0x85, 0x7e, 0x0a, 0x3b, 0x8c, 0x60, 0xb6, 0xb6, 0x19, 0xff, 0xf0, 0x66,
-	0xbe, 0xc0, 0x70, 0x38, 0xc6, 0xa3, 0xe7, 0xb0, 0xcd, 0xf6, 0xb0, 0xb5, 0xc3, 0x88, 0x0f, 0x6f,
-	0x26, 0x32, 0x09, 0x47, 0x68, 0xd4, 0x05, 0x58, 0x3a, 0x56, 0x48, 0x42, 0x33, 0x08, 0x83, 0xd6,
-	0xee, 0x6d, 0x4e, 0x8f, 0x1d, 0x2b, 0xd4, 0x28, 0x14, 0x57, 0x96, 0xc9, 0x67, 0xfb, 0xaf, 0x05,
-	0x28, 0x4a, 0x53, 0x84, 0xa0, 0xe4, 0xe8, 0x0b, 0x93, 0xed, 0x5b, 0x05, 0xb3, 0x6f, 0x74, 0x17,
-	0x76, 0x26, 0xbe, 0xee, 0x18, 0x97, 0x6c, 0x6b, 0x2a, 0x38, 0x96, 0xd0, 0x73, 0x28, 0x85, 0xef,
-	0x3c, 0x93, 0x85, 0xbb, 0xf1, 0xa1, 0x0d, 0x93, 0xa6, 0x1d, 0xed, 0x9d, 0x67, 0x62, 0x06, 0x3f,
-	0x3a, 0x87, 0x12, 0x95, 0xd0, 0x01, 0x70, 0xda, 0x6b, 0x55, 0x24, 0x63, 0x79, 0xa4, 0x8a, 0x82,
-	0xd4, 0x97, 0xc4, 0x1e, 0xf7, 0x7f, 0x68, 0x07, 0x8a, 0xc2, 0xb7, 0x5c, 0x01, 0x35, 0x00, 0x54,
-	0x65, 0xa4, 0x8d, 0xc6, 0xdd, 0x33, 0x49, 0xe3, 0x8a, 0xa8, 0x0e, 0x15, 0x4d, 0x51, 0x86, 0xc2,
-	0x29, 0x2f, 0xc9, 0xdc, 0x16, 0xda, 0x83, 0xba, 0x24, 0xf7, 0x15, 0x7c, 0xc6, 0x6b, 0x92, 0x22,
-	0xf3, 0x43, 0xae, 0xd4, 0xfe, 0xdd, 0x36, 0xec, 0xc6, 0xa9, 0x81, 0x5e, 0x40, 0xd9, 0xf0, 0xad,
-	0xd0, 0x32, 0x74, 0x3b, 0x4e, 0xc1, 0x76, 0x27, 0xca, 0xe0, 0x4e, 0x92, 0xc1, 0x9d, 0xae, 0xeb,
-	0xda, 0xe7, 0xba, 0xbd, 0x34, 0x71, 0x8a, 0x45, 0x0a, 0x54, 0x4d, 0xe7, 0x7b, 0xcb, 0x77, 0x9d,
-	0x85, 0xe9, 0x84, 0x6c, 0xbd, 0x8d, 0x93, 0x2f, 0x6e, 0x4d, 0xc5, 0x8e, 0xb8, 0x22, 0xe1, 0xac,
-	0x05, 0xd4, 0x83, 0xb2, 0xbf, 0x74, 0xc8, 0xdb, 0x4b, 0xd3, 0x89, 0xd3, 0xf2, 0xe9, 0xed, 0xd6,
-	0xf0, 0xd2, 0xb9, 0xb8, 0x34, 0x1d, 0xbc, 0xeb, 0x47, 0x1f, 0xe8, 0x6b, 0xa8, 0x4f, 0x7c, 0xf7,
-	0xca, 0x74, 0xc8, 0xc4, 0x9c, 0xb9, 0xbe, 0x19, 0x27, 0xe6, 0xfb, 0x6b, 0xd2, 0x92, 0x63, 0x8b,
-	0x6b, 0x11, 0xa1, 0xcb, 0xf0, 0xe8, 0x73, 0xd8, 0x0b, 0xa6, 0x57, 0xc4, 0xd0, 0x8d, 0x4b, 0x93,
-	0x7c, 0x6f, 0xfa, 0x81, 0xe5, 0x3a, 0x2c, 0x3b, 0xb7, 0x71, 0x33, 0x98, 0x5e, 0x09, 0x54, 0x7f,
-	0x1e, 0xa9, 0x51, 0x1b, 0xca, 0x4b, 0xc7, 0x5a, 0xe5, 0x61, 0x19, 0xa7, 0x72, 0xfb, 0x1f, 0x05,
-	0xd8, 0x8d, 0xbd, 0x43, 0x5d, 0x28, 0x2d, 0xdc, 0x69, 0x94, 0x2a, 0x8d, 0x93, 0xce, 0xc6, 0xcb,
-	0xea, 0x9c, 0xb9, 0x53, 0x13, 0x33, 0x2e, 0x7a, 0x0c, 0xf5, 0x99, 0x65, 0x9b, 0xc4, 0xd3, 0xc3,
-	0xd0, 0xf4, 0x9d, 0xa0, 0x55, 0x3c, 0xdc, 0x7a, 0x52, 0xc1, 0x35, 0xaa, 0x54, 0x63, 0xdd, 0xd1,
-	0x04, 0x4a, 0x94, 0x42, 0x13, 0xe6, 0x4c, 0xe9, 0xad, 0x27, 0x4c, 0x03, 0x80, 0x1f, 0x5e, 0xf0,
-	0xaf, 0x47, 0x04, 0x8f, 0x65, 0xae, 0x80, 0xda, 0x70, 0x57, 0x91, 0x87, 0xaf, 0xa9, 0x44, 0x14,
-	0x99, 0xf4, 0xa5, 0xa1, 0x48, 0xce, 0x78, 0x4d, 0x38, 0xe5, 0x8a, 0xa8, 0x05, 0x07, 0xb2, 0x72,
-	0xcd, 0xc8, 0xd6, 0xd1, 0x00, 0xaa, 0x99, 0x3d, 0x44, 0x1f, 0xc3, 0x3d, 0x51, 0x3e, 0x97, 0xb0,
-	0x22, 0x9f, 0x89, 0xb2, 0xf6, 0xfe, 0x8c, 0x2a, 0x56, 0x7a, 0x63, 0x81, 0xa6, 0x1e, 0x57, 0x40,
-	0x55, 0xd8, 0x1d, 0x69, 0xfc, 0x40, 0x92, 0x07, 0x5c, 0xb1, 0xfd, 0x87, 0x6d, 0xa8, 0x65, 0xcb,
-	0x0b, 0xfa, 0x16, 0xaa, 0xc6, 0xa5, 0x65, 0x4f, 0x49, 0xe0, 0x99, 0x46, 0xd0, 0xda, 0x3e, 0xdc,
-	0x7a, 0x52, 0x3d, 0x79, 0xb6, 0x59, 0x6d, 0xea, 0x08, 0x94, 0x39, 0xf2, 0x4c, 0x03, 0x83, 0x91,
-	0x7c, 0x06, 0xe8, 0x1b, 0x68, 0xcc, 0xad, 0xd0, 0xb2, 0xcd, 0x80, 0xd0, 0x2a, 0x6e, 0x85, 0x71,
-	0xcd, 0xfc, 0x28, 0x6b, 0x75, 0x10, 0x21, 0x04, 0x06, 0xc0, 0xf5, 0x79, 0x56, 0x44, 0x5f, 0x43,
-	0x63, 0x6e, 0xfa, 0xbe, 0x15, 0x12, 0xe3, 0x52, 0x77, 0xe6, 0x66, 0xd0, 0xda, 0x62, 0x7e, 0xb5,
-	0x72, 0x16, 0x18, 0x42, 0x60, 0x00, 0x5c, 0x9f, 0x67, 0xa4, 0x00, 0xfd, 0x16, 0xee, 0xce, 0x5c,
-	0xdb, 0x76, 0xdf, 0x12, 0xd7, 0x21, 0xb9, 0xe2, 0x1b, 0xa5, 0xe6, 0x57, 0x1b, 0x2e, 0xb0, 0xcf,
-	0x8c, 0x28, 0x4e, 0xae, 0x22, 0x1f, 0xcc, 0xae, 0xd1, 0xb6, 0xff, 0x59, 0x80, 0x4a, 0x1a, 0x8f,
-	0x6b, 0x0b, 0xd5, 0x15, 0x70, 0x86, 0x6b, 0xdb, 0xa6, 0x11, 0x92, 0x4b, 0xdd, 0x99, 0xda, 0x96,
-	0x33, 0x8f, 0x8f, 0xf0, 0x37, 0xff, 0x69, 0xbc, 0x3b, 0x42, 0x64, 0xe8, 0x34, 0xb6, 0x83, 0x9b,
-	0x46, 0x5e, 0x71, 0xa4, 0x42, 0x73, 0x0d, 0x83, 0x0e, 0xe1, 0xbe, 0xa0, 0x0c, 0x87, 0xa2, 0xa0,
-	0x91, 0x53, 0x5e, 0xee, 0x0d, 0x25, 0x79, 0xb0, 0x96, 0x3a, 0x55, 0xd8, 0x8d, 0x11, 0x51, 0x89,
-	0x93, 0x15, 0x92, 0xc8, 0xc5, 0xf6, 0x18, 0x0e, 0xae, 0x0b, 0xc7, 0xb5, 0x4b, 0x7d, 0x0a, 0x9c,
-	0xfe, 0x56, 0xa7, 0xfb, 0xe7, 0x2e, 0x3c, 0xdb, 0x0c, 0xe9, 0x79, 0x2e, 0xb2, 0xc3, 0xda, 0x64,
-	0x7a, 0x21, 0x55, 0xbf, 0x2c, 0x95, 0x0b, 0x5c, 0xb1, 0xfd, 0xfb, 0x3a, 0x54, 0xd2, 0xdb, 0x0a,
-	0xbd, 0x82, 0x8a, 0xe7, 0x9b, 0xf4, 0x4c, 0x87, 0x41, 0x7c, 0x80, 0xbf, 0xd8, 0xe0, 0x96, 0xeb,
-	0xa8, 0x09, 0x09, 0xaf, 0xf8, 0xe8, 0x3b, 0x68, 0x24, 0x97, 0x1f, 0xa1, 0x15, 0x3e, 0x3a, 0xc5,
-	0x8d, 0x93, 0x1f, 0x6f, 0x62, 0x31, 0xf9, 0xa2, 0x57, 0x42, 0x80, 0xeb, 0x7a, 0x56, 0x44, 0x1d,
-	0xd8, 0x4f, 0xa7, 0x21, 0xf3, 0x80, 0x4c, 0x96, 0xc6, 0x95, 0x19, 0xb2, 0x42, 0x5a, 0xc1, 0x7b,
-	0xe9, 0xd0, 0x20, 0xe8, 0xb2, 0x01, 0x8a, 0x4f, 0xaf, 0xe1, 0x0c, 0xbe, 0x14, 0xe1, 0xd3, 0xa1,
-	0x14, 0xff, 0x2b, 0xd8, 0xf3, 0x96, 0x13, 0xdb, 0x0a, 0x2e, 0xc9, 0xea, 0xd2, 0x8f, 0x4e, 0xe8,
-	0xf1, 0x46, 0xe1, 0x88, 0xc8, 0x92, 0x33, 0x73, 0x31, 0x17, 0x5b, 0x5a, 0x05, 0xf9, 0x37, 0xd0,
-	0xb4, 0x1c, 0x6f, 0x19, 0x66, 0x6c, 0xef, 0x30, 0xdb, 0xcf, 0x37, 0xb1, 0x2d, 0x51, 0x6a, 0x22,
-	0xb2, 0x19, 0x1a, 0x56, 0x56, 0x15, 0xa0, 0x11, 0xdc, 0x49, 0xe3, 0xee, 0xf9, 0x2e, 0x2b, 0xa4,
-	0x96, 0x33, 0x73, 0xe3, 0x0e, 0x20, 0xd7, 0x3d, 0x24, 0x2c, 0x35, 0xc2, 0x31, 0x7b, 0x69, 0xac,
-	0x32, 0xca, 0xf6, 0x1f, 0x0b, 0x50, 0xcd, 0x2c, 0x0b, 0x9d, 0x43, 0x3d, 0x09, 0xd1, 0xff, 0xb8,
-	0xb7, 0xb5, 0xd8, 0xce, 0x6a, 0x6b, 0x63, 0xbb, 0xf3, 0x80, 0xd8, 0xae, 0xa1, 0xb3, 0x1c, 0x4e,
-	0xb6, 0x36, 0x1a, 0x1a, 0x04, 0xc3, 0x78, 0x20, 0xce, 0xe2, 0x3f, 0x17, 0x60, 0xef, 0xbd, 0xc0,
-	0x20, 0x1d, 0xf6, 0xf3, 0x81, 0x66, 0xae, 0xc6, 0x79, 0xfd, 0x5f, 0x78, 0xba, 0x97, 0x0b, 0x34,
-	0x6b, 0x56, 0x7e, 0x01, 0x1f, 0xaf, 0x4d, 0x91, 0xf1, 0x3a, 0xb9, 0xb6, 0x5a, 0x39, 0xde, 0xca,
-	0xf9, 0xe0, 0x48, 0x82, 0x4a, 0x7a, 0x74, 0xd0, 0x47, 0x70, 0x47, 0xc5, 0x62, 0x77, 0x2c, 0x0d,
-	0xb5, 0xd1, 0x5a, 0x7d, 0x00, 0xd8, 0x51, 0xc7, 0xdd, 0xa1, 0x24, 0x44, 0xd7, 0x8a, 0x8a, 0xa5,
-	0x73, 0x5e, 0x13, 0xb9, 0x22, 0x2a, 0x43, 0x49, 0x56, 0x64, 0x91, 0xdb, 0x3a, 0xfa, 0xcb, 0x36,
-	0xd4, 0x73, 0xee, 0xa2, 0x07, 0xd0, 0xe6, 0xb1, 0x26, 0xf5, 0x79, 0x41, 0x23, 0xb4, 0xa3, 0x5a,
-	0x37, 0x5a, 0x87, 0x8a, 0x74, 0xc6, 0x0f, 0x44, 0xf2, 0x46, 0x52, 0xb9, 0x02, 0xba, 0x07, 0xfb,
-	0x9a, 0x38, 0xd2, 0xc8, 0x58, 0xed, 0xf1, 0x9a, 0x48, 0x54, 0xfe, 0xf5, 0x50, 0xe1, 0x7b, 0x5c,
-	0x11, 0x21, 0x68, 0xf0, 0x63, 0x4d, 0x61, 0x83, 0xf4, 0x72, 0x1c, 0x71, 0x5b, 0xb4, 0x46, 0x69,
-	0x7c, 0x2a, 0x97, 0x28, 0x59, 0x95, 0x64, 0x59, 0xec, 0x91, 0xc1, 0x98, 0xe2, 0x98, 0xe1, 0x11,
-	0xb7, 0x8d, 0x6a, 0x50, 0xee, 0x4b, 0xf8, 0xec, 0x82, 0xc7, 0x22, 0xb7, 0x83, 0x9a, 0x50, 0x65,
-	0x0b, 0xec, 0x91, 0xa1, 0x32, 0x18, 0x71, 0xbb, 0x68, 0x1f, 0x9a, 0xc2, 0x29, 0x56, 0xce, 0x44,
-	0x65, 0x44, 0x04, 0x45, 0xee, 0x4b, 0x03, 0xae, 0x4c, 0x8d, 0x0b, 0xaa, 0x48, 0xb0, 0xa8, 0x2a,
-	0x58, 0xe3, 0x2a, 0xd4, 0x81, 0xc8, 0x51, 0x1e, 0x0b, 0xa7, 0xd2, 0xb9, 0x38, 0xe2, 0x00, 0x7d,
-	0x02, 0x87, 0x63, 0xf9, 0x5c, 0xc4, 0x6c, 0x31, 0x24, 0xb2, 0x41, 0x86, 0xc3, 0xf3, 0x33, 0xa2,
-	0xe0, 0x9e, 0x88, 0xa9, 0x5f, 0x5c, 0x15, 0x1d, 0xc1, 0x83, 0x5b, 0x30, 0x35, 0x1a, 0xa6, 0x78,
-	0x48, 0x18, 0xf2, 0xf2, 0x80, 0x5c, 0xf0, 0x58, 0x96, 0xe4, 0xc1, 0x88, 0xad, 0x8d, 0xab, 0xa3,
-	0xfb, 0xd0, 0xca, 0xcc, 0xc4, 0xe8, 0xea, 0x40, 0x89, 0x46, 0x1b, 0xe8, 0x29, 0x7c, 0xfa, 0xbe,
-	0x1f, 0x5d, 0x51, 0x16, 0x4e, 0xcf, 0x78, 0xfc, 0x8a, 0xf0, 0xfd, 0x5e, 0x0c, 0x6d, 0xa2, 0xcf,
-	0xe0, 0xf1, 0x26, 0x40, 0x0e, 0x3d, 0x82, 0xff, 0x4f, 0x81, 0xaf, 0x44, 0x2c, 0x8b, 0x43, 0x22,
-	0x5c, 0xa8, 0x19, 0xc8, 0x1e, 0x7a, 0x0c, 0x0f, 0x33, 0xd3, 0x5e, 0x0b, 0x42, 0x6b, 0xa0, 0x64,
-	0x91, 0x39, 0xd0, 0x7e, 0x6e, 0xb2, 0x6b, 0x21, 0x07, 0x34, 0x42, 0x29, 0x04, 0x8b, 0x43, 0x91,
-	0x1f, 0x89, 0x99, 0xf1, 0x3b, 0xb7, 0xc5, 0x40, 0x15, 0x71, 0x3f, 0x82, 0xde, 0xa5, 0x79, 0x12,
-	0x8f, 0xf7, 0xc4, 0xee, 0x78, 0x40, 0xba, 0x92, 0xcc, 0xe3, 0xd7, 0xdc, 0xbd, 0xf6, 0x27, 0xb0,
-	0x13, 0x3d, 0x7a, 0x68, 0x9f, 0x69, 0x39, 0xb4, 0xc3, 0x8b, 0x7b, 0xf4, 0x32, 0x4e, 0xe5, 0xf6,
-	0x9f, 0x2a, 0xb0, 0xcd, 0xce, 0x2a, 0x7a, 0x06, 0x95, 0x65, 0x60, 0x92, 0x99, 0xad, 0xcf, 0xe9,
-	0x4d, 0x45, 0xcb, 0xe7, 0x7e, 0xf6, 0x44, 0x8f, 0x03, 0xb3, 0x6f, 0xeb, 0x73, 0x5c, 0x5e, 0x46,
-	0x1f, 0x01, 0xba, 0x80, 0xa6, 0xe7, 0xfa, 0xa1, 0x3e, 0x37, 0x93, 0xaa, 0x18, 0xb7, 0x47, 0x9d,
-	0x5b, 0x9e, 0x53, 0x1d, 0x35, 0xa2, 0xc5, 0xe5, 0x10, 0x37, 0xbc, 0x9c, 0x8c, 0x9e, 0xc1, 0x81,
-	0xee, 0x79, 0xf6, 0x3b, 0xb2, 0xd6, 0x3a, 0x45, 0x4d, 0x32, 0x62, 0x63, 0x83, 0x5c, 0x97, 0xf4,
-	0x4b, 0xa0, 0x97, 0x94, 0xa7, 0xfb, 0x26, 0x99, 0xb9, 0x3e, 0x89, 0x7a, 0xea, 0x3d, 0xe6, 0xcc,
-	0xf1, 0xad, 0xce, 0x44, 0xc4, 0xbe, 0xeb, 0x47, 0x6f, 0xbd, 0xa6, 0x97, 0x57, 0xa0, 0x53, 0x00,
-	0xda, 0xd3, 0x2f, 0xbd, 0xa9, 0x1e, 0x9a, 0xad, 0xda, 0x6d, 0x8f, 0x8b, 0xc8, 0xea, 0x68, 0x7a,
-	0x35, 0x66, 0x04, 0x5c, 0x09, 0x92, 0x4f, 0xf4, 0x6b, 0xd8, 0xb3, 0x9c, 0x20, 0xd4, 0x6d, 0x9b,
-	0x84, 0xae, 0x6b, 0x1b, 0x97, 0xba, 0xe5, 0xb4, 0xea, 0xcc, 0xe0, 0xb3, 0xdb, 0x0c, 0x4a, 0x11,
-	0x51, 0x4b, 0x78, 0x98, 0xb3, 0xd6, 0x34, 0xe8, 0x0d, 0x24, 0x3a, 0xe2, 0xe9, 0xc6, 0x95, 0x4e,
-	0x63, 0xc6, 0x6d, 0x16, 0x84, 0xd8, 0xba, 0x1a, 0xd3, 0x70, 0xd3, 0xca, 0x2b, 0x90, 0x0c, 0x35,
-	0x16, 0x55, 0x62, 0x2d, 0x98, 0xdd, 0x26, 0xb3, 0xfb, 0xc3, 0xdb, 0xec, 0xb2, 0x5f, 0x89, 0x51,
-	0x70, 0x75, 0xb2, 0x12, 0xda, 0x9f, 0x43, 0x23, 0x9f, 0x05, 0xa8, 0x05, 0xbb, 0x49, 0x1a, 0x45,
-	0x0d, 0x58, 0x22, 0xb6, 0x4d, 0x68, 0xae, 0x6d, 0x12, 0xc2, 0xd0, 0xd4, 0xa7, 0x53, 0x8b, 0x16,
-	0x7d, 0xdd, 0x26, 0xba, 0x3f, 0x0f, 0xe2, 0xe7, 0x67, 0x6e, 0x63, 0xd6, 0x58, 0x7c, 0xca, 0xe0,
-	0xfd, 0x79, 0x80, 0x1b, 0x7a, 0x4e, 0x6e, 0x9f, 0x40, 0x25, 0xdd, 0x35, 0xf4, 0x29, 0x34, 0x68,
-	0xc7, 0x47, 0xaf, 0xfa, 0xc0, 0x5d, 0xfa, 0x86, 0x19, 0x1f, 0x9d, 0x7a, 0xac, 0x1d, 0x31, 0x65,
-	0xfb, 0x67, 0xc0, 0xad, 0x6f, 0xcc, 0xa6, 0xd4, 0xbf, 0x17, 0xa0, 0xb9, 0x16, 0xf6, 0x0d, 0xa9,
-	0xe8, 0xe7, 0xd1, 0x63, 0x97, 0x3e, 0x74, 0xe2, 0xbe, 0xfb, 0x03, 0x7f, 0x0a, 0xe0, 0xa5, 0xc3,
-	0x1e, 0x36, 0xf4, 0x91, 0xcb, 0x3a, 0xfa, 0x2f, 0xa1, 0x9c, 0xa6, 0x47, 0xf4, 0x1a, 0xb9, 0x97,
-	0x0b, 0x5a, 0x34, 0xc6, 0x3a, 0x97, 0x14, 0x88, 0x1e, 0x41, 0x6d, 0x6a, 0x05, 0xfa, 0xc4, 0x36,
-	0xc9, 0xdc, 0x5d, 0xe8, 0xac, 0xd5, 0x2b, 0xe3, 0x6a, 0xac, 0x1b, 0xb8, 0x0b, 0xbd, 0x2d, 0x42,
-	0x35, 0xb3, 0xdd, 0xe8, 0x05, 0x54, 0x59, 0xae, 0xc4, 0xed, 0x4c, 0x81, 0xb5, 0x33, 0x77, 0xb2,
-	0x33, 0x31, 0x20, 0xfb, 0xc3, 0x02, 0xac, 0xe4, 0x33, 0x78, 0x59, 0x2a, 0x6f, 0x71, 0x3b, 0x2f,
-	0x4b, 0xe5, 0x5d, 0xae, 0xf6, 0xb2, 0x54, 0x6e, 0x70, 0xcd, 0xf6, 0xdf, 0x0a, 0x50, 0x49, 0xff,
-	0x4b, 0x41, 0x3d, 0xd8, 0x8b, 0xbd, 0x22, 0x13, 0x5b, 0x37, 0xae, 0x6c, 0x2b, 0xa0, 0x9d, 0xe7,
-	0x07, 0xd7, 0xc1, 0xc5, 0x8c, 0x6e, 0x42, 0x40, 0xaf, 0x80, 0x63, 0x6d, 0xc2, 0x34, 0x20, 0x69,
-	0x28, 0xb7, 0x37, 0x0d, 0x65, 0x23, 0xa6, 0xc6, 0x32, 0x7d, 0x5d, 0x9b, 0x0b, 0x2f, 0x7c, 0x47,
-	0x82, 0x77, 0x81, 0xef, 0xba, 0x61, 0x5c, 0xa9, 0x6a, 0x4c, 0x39, 0x8a, 0x74, 0x47, 0x7d, 0xf6,
-	0xa2, 0x67, 0xf8, 0x16, 0x1c, 0xd0, 0xb7, 0x31, 0xed, 0x1d, 0xde, 0xef, 0x4b, 0xa2, 0x87, 0x33,
-	0x57, 0x40, 0xbb, 0xb0, 0x45, 0x3f, 0x8a, 0xf4, 0xca, 0xa7, 0x70, 0xf1, 0x3b, 0x49, 0xe3, 0xb6,
-	0x8e, 0x34, 0x68, 0xe4, 0xbc, 0x0a, 0x50, 0x17, 0x9a, 0xf9, 0x7f, 0x24, 0x93, 0x02, 0xfe, 0xd1,
-	0x8d, 0x4b, 0xc1, 0x8d, 0x49, 0xce, 0x46, 0xf7, 0xc5, 0x9b, 0x9f, 0xcc, 0xdd, 0x14, 0xde, 0x71,
-	0xfd, 0xf9, 0x71, 0xe6, 0x3f, 0x4c, 0xcb, 0x99, 0xf9, 0x7a, 0xf4, 0x9f, 0xe4, 0xf1, 0xdc, 0xcd,
-	0x8c, 0x4c, 0x76, 0x98, 0xf2, 0xcb, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xdd, 0x28, 0xd2, 0x3a,
-	0x1f, 0x15, 0x00, 0x00,
+	// 2207 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x72, 0xdb, 0xc8,
+	0x11, 0x0e, 0x29, 0x4a, 0x22, 0x9b, 0x7f, 0xd0, 0x48, 0xb6, 0x69, 0xae, 0x63, 0xcb, 0xf2, 0x6e,
+	0x62, 0x6f, 0xb2, 0x94, 0xa3, 0x8d, 0x5d, 0x49, 0x6d, 0x52, 0xbb, 0x20, 0x08, 0x52, 0xb0, 0x29,
+	0x80, 0x3b, 0x04, 0xa5, 0xb5, 0xf3, 0x33, 0x05, 0x82, 0x20, 0x89, 0x12, 0x08, 0x20, 0x00, 0x68,
+	0x97, 0xce, 0x79, 0x86, 0x9c, 0x72, 0xcb, 0x3b, 0xe4, 0x96, 0xaa, 0x1c, 0x52, 0x95, 0x53, 0x2a,
+	0xc7, 0x1c, 0xf3, 0x2c, 0xa9, 0x19, 0xfc, 0x10, 0xa0, 0x25, 0x8b, 0x49, 0x2e, 0x2c, 0x4c, 0xcf,
+	0xf7, 0x7d, 0x33, 0xd3, 0xd3, 0xd3, 0xd3, 0x43, 0x78, 0xa4, 0xcf, 0x3d, 0x67, 0x61, 0x2e, 0x17,
+	0x8e, 0x7f, 0x3c, 0x5e, 0x9a, 0xd6, 0xc4, 0xf0, 0x88, 0xee, 0xd8, 0x53, 0x73, 0xd6, 0x72, 0x3d,
+	0x27, 0x70, 0x10, 0xac, 0x00, 0xcd, 0x7b, 0x29, 0xb0, 0xee, 0x2c, 0x16, 0x8e, 0x1d, 0x82, 0x9a,
+	0x8f, 0x66, 0x8e, 0x33, 0xb3, 0x8c, 0x63, 0xd6, 0x1a, 0x2f, 0xa7, 0xc7, 0x81, 0xb9, 0x30, 0xfc,
+	0x40, 0x5b, 0xb8, 0x11, 0xe0, 0xe1, 0x3a, 0xe0, 0xbd, 0xa7, 0xb9, 0xae, 0xe1, 0xf9, 0x61, 0xff,
+	0xd1, 0xdf, 0x9f, 0x42, 0xb5, 0x1d, 0x0e, 0x2f, 0xb0, 0xd1, 0xd1, 0x8f, 0x21, 0x6f, 0x4e, 0x1a,
+	0xb9, 0xc3, 0xdc, 0xd3, 0xf2, 0xc9, 0x83, 0xd6, 0x6a, 0xe0, 0x56, 0x06, 0xd6, 0x92, 0x26, 0x38,
+	0x6f, 0x4e, 0xd0, 0x57, 0xb0, 0x3b, 0x33, 0x6c, 0xc3, 0xd3, 0xac, 0x46, 0x9e, 0x51, 0x1e, 0xdf,
+	0x4c, 0xe9, 0x85, 0x40, 0x1c, 0x33, 0xd0, 0x2b, 0xa8, 0x38, 0x9e, 0x3e, 0x37, 0xfc, 0xc0, 0xd3,
+	0x02, 0xc7, 0x6b, 0x6c, 0x31, 0x85, 0x1f, 0xdc, 0xac, 0xa0, 0xa4, 0xd0, 0x38, 0xc3, 0x45, 0x3c,
+	0x94, 0x34, 0x2f, 0x30, 0xa7, 0x9a, 0x1e, 0xf8, 0x8d, 0x02, 0x13, 0x7a, 0x72, 0xb3, 0x10, 0x1f,
+	0x43, 0xf1, 0x8a, 0x85, 0x7e, 0x06, 0x3b, 0x8c, 0x60, 0x34, 0xb6, 0x19, 0xff, 0xf0, 0x66, 0xbe,
+	0xc0, 0x70, 0x38, 0xc2, 0xa3, 0x17, 0xb0, 0xcd, 0xf6, 0xb0, 0xb1, 0xc3, 0x88, 0x8f, 0x6e, 0x26,
+	0xb2, 0x16, 0x0e, 0xd1, 0xa8, 0x0d, 0xb0, 0xb4, 0xcd, 0x80, 0x04, 0x86, 0x1f, 0xf8, 0x8d, 0xdd,
+	0xdb, 0x26, 0x3d, 0xb2, 0xcd, 0x40, 0xa5, 0x50, 0x5c, 0x5a, 0xc6, 0x9f, 0xcd, 0xbf, 0xe6, 0x20,
+	0x2f, 0x4d, 0x10, 0x82, 0x82, 0xad, 0x2d, 0x0c, 0xb6, 0x6f, 0x25, 0xcc, 0xbe, 0xd1, 0x5d, 0xd8,
+	0x19, 0x7b, 0x9a, 0xad, 0xcf, 0xd9, 0xd6, 0x94, 0x70, 0xd4, 0x42, 0x2f, 0xa0, 0x10, 0x5c, 0xb9,
+	0x06, 0x73, 0x77, 0xed, 0x63, 0x1b, 0x26, 0x4d, 0x5a, 0xea, 0x95, 0x6b, 0x60, 0x06, 0x3f, 0x3a,
+	0x87, 0x02, 0x6d, 0xa1, 0x03, 0xe0, 0xd4, 0x37, 0x03, 0x91, 0x8c, 0xe4, 0xe1, 0x40, 0x14, 0xa4,
+	0xae, 0x24, 0x76, 0xb8, 0xef, 0xa1, 0x1d, 0xc8, 0x0b, 0xdf, 0x72, 0x39, 0x54, 0x03, 0x18, 0x28,
+	0x43, 0x75, 0x38, 0x6a, 0x9f, 0x49, 0x2a, 0x97, 0x47, 0x55, 0x28, 0xa9, 0x8a, 0xd2, 0x17, 0x4e,
+	0x79, 0x49, 0xe6, 0xb6, 0xd0, 0x1e, 0x54, 0x25, 0xb9, 0xab, 0xe0, 0x33, 0x5e, 0x95, 0x14, 0x99,
+	0xef, 0x73, 0x85, 0xe6, 0xef, 0xb7, 0x61, 0x37, 0x0a, 0x0d, 0xf4, 0x12, 0x8a, 0xba, 0x67, 0x06,
+	0xa6, 0xae, 0x59, 0x51, 0x08, 0x36, 0x5b, 0x61, 0x04, 0xb7, 0xe2, 0x08, 0x6e, 0xb5, 0x1d, 0xc7,
+	0x3a, 0xd7, 0xac, 0xa5, 0x81, 0x13, 0x2c, 0x52, 0xa0, 0x6c, 0xd8, 0xef, 0x4c, 0xcf, 0xb1, 0x17,
+	0x86, 0x1d, 0xb0, 0xf5, 0xd6, 0x4e, 0xbe, 0xb8, 0x35, 0x14, 0x5b, 0xe2, 0x8a, 0x84, 0xd3, 0x0a,
+	0xa8, 0x03, 0x45, 0x6f, 0x69, 0x93, 0xf7, 0x73, 0xc3, 0x8e, 0xc2, 0xf2, 0xd9, 0xed, 0x6a, 0x78,
+	0x69, 0x5f, 0xcc, 0x0d, 0x1b, 0xef, 0x7a, 0xe1, 0x07, 0xfa, 0x1a, 0xaa, 0x63, 0xcf, 0xb9, 0x34,
+	0x6c, 0x32, 0x36, 0xa6, 0x8e, 0x67, 0x44, 0x81, 0xf9, 0xe1, 0x9a, 0xd4, 0xf8, 0xd8, 0xe2, 0x4a,
+	0x48, 0x68, 0x33, 0x3c, 0xfa, 0x1c, 0xf6, 0xfc, 0xc9, 0x25, 0xd1, 0x35, 0x7d, 0x6e, 0x90, 0x77,
+	0x86, 0xe7, 0x9b, 0x8e, 0xcd, 0xa2, 0x73, 0x1b, 0xd7, 0xfd, 0xc9, 0xa5, 0x40, 0xed, 0xe7, 0xa1,
+	0x19, 0x35, 0xa1, 0xb8, 0xb4, 0xcd, 0x55, 0x1c, 0x16, 0x71, 0xd2, 0x6e, 0xfe, 0x2b, 0x07, 0xbb,
+	0xd1, 0xec, 0x50, 0x1b, 0x0a, 0x0b, 0x67, 0x12, 0x86, 0x4a, 0xed, 0xa4, 0xb5, 0xf1, 0xb2, 0x5a,
+	0x67, 0xce, 0xc4, 0xc0, 0x8c, 0x8b, 0x9e, 0x40, 0x75, 0x6a, 0x5a, 0x06, 0x71, 0xb5, 0x20, 0x30,
+	0x3c, 0xdb, 0x6f, 0xe4, 0x0f, 0xb7, 0x9e, 0x96, 0x70, 0x85, 0x1a, 0x07, 0x91, 0xed, 0x68, 0x0c,
+	0x05, 0x4a, 0xa1, 0x01, 0x73, 0xa6, 0x74, 0xd6, 0x03, 0xa6, 0x06, 0xc0, 0xf7, 0x2f, 0xf8, 0x37,
+	0x43, 0x82, 0x47, 0x32, 0x97, 0x43, 0x4d, 0xb8, 0xab, 0xc8, 0xfd, 0x37, 0xb4, 0x45, 0x14, 0x99,
+	0x74, 0xa5, 0xbe, 0x48, 0xce, 0x78, 0x55, 0x38, 0xe5, 0xf2, 0xa8, 0x01, 0x07, 0xb2, 0x72, 0x4d,
+	0xcf, 0xd6, 0x51, 0x0f, 0xca, 0xa9, 0x3d, 0x44, 0x9f, 0xc0, 0x3d, 0x51, 0x3e, 0x97, 0xb0, 0x22,
+	0x9f, 0x89, 0xb2, 0xfa, 0xe1, 0x88, 0x03, 0xac, 0x74, 0x46, 0x02, 0x0d, 0x3d, 0x2e, 0x87, 0xca,
+	0xb0, 0x3b, 0x54, 0xf9, 0x9e, 0x24, 0xf7, 0xb8, 0x7c, 0xf3, 0x0f, 0xdb, 0x50, 0x49, 0xa7, 0x17,
+	0xf4, 0x2d, 0x94, 0xf5, 0xb9, 0x69, 0x4d, 0x88, 0xef, 0x1a, 0xba, 0xdf, 0xd8, 0x3e, 0xdc, 0x7a,
+	0x5a, 0x3e, 0x79, 0xbe, 0x59, 0x6e, 0x6a, 0x09, 0x94, 0x39, 0x74, 0x0d, 0x1d, 0x83, 0x1e, 0x7f,
+	0xfa, 0xe8, 0x1b, 0xa8, 0xcd, 0xcc, 0xc0, 0xb4, 0x0c, 0x9f, 0xd0, 0x2c, 0x6e, 0x06, 0x51, 0xce,
+	0xbc, 0x9f, 0x56, 0xed, 0x85, 0x08, 0x81, 0x01, 0x70, 0x75, 0x96, 0x6e, 0xa2, 0xaf, 0xa1, 0x36,
+	0x33, 0x3c, 0xcf, 0x0c, 0x88, 0x3e, 0xd7, 0xec, 0x99, 0xe1, 0x37, 0xb6, 0xd8, 0xbc, 0x1a, 0x19,
+	0x05, 0x86, 0x10, 0x18, 0x00, 0x57, 0x67, 0xa9, 0x96, 0x8f, 0x7e, 0x07, 0x77, 0xa7, 0x8e, 0x65,
+	0x39, 0xef, 0x89, 0x63, 0x93, 0x4c, 0xf2, 0x0d, 0x43, 0xf3, 0xab, 0x0d, 0x17, 0xd8, 0x65, 0x22,
+	0x8a, 0x9d, 0xc9, 0xc8, 0x07, 0xd3, 0x6b, 0xac, 0xcd, 0x7f, 0xe7, 0xa0, 0x94, 0xf8, 0xe3, 0xda,
+	0x44, 0x75, 0x09, 0x9c, 0xee, 0x58, 0x96, 0xa1, 0x07, 0x64, 0xae, 0xd9, 0x13, 0xcb, 0xb4, 0x67,
+	0xd1, 0x11, 0xfe, 0xe6, 0xbf, 0xf5, 0x77, 0x4b, 0x08, 0x85, 0x4e, 0x23, 0x1d, 0x5c, 0xd7, 0xb3,
+	0x86, 0xa3, 0x01, 0xd4, 0xd7, 0x30, 0xe8, 0x10, 0x1e, 0x08, 0x4a, 0xbf, 0x2f, 0x0a, 0x2a, 0x39,
+	0xe5, 0xe5, 0x4e, 0x5f, 0x92, 0x7b, 0x6b, 0xa1, 0x53, 0x86, 0xdd, 0x08, 0x11, 0xa6, 0x38, 0x59,
+	0x21, 0x71, 0x3b, 0xdf, 0x1c, 0xc1, 0xc1, 0x75, 0xee, 0xb8, 0x76, 0xa9, 0xcf, 0x80, 0xd3, 0xde,
+	0x6b, 0x74, 0xff, 0x9c, 0x85, 0x6b, 0x19, 0x01, 0x3d, 0xcf, 0x79, 0x76, 0x58, 0xeb, 0xcc, 0x2e,
+	0x24, 0xe6, 0x57, 0x85, 0x62, 0x8e, 0xcb, 0x37, 0xff, 0x51, 0x85, 0x52, 0x72, 0x5b, 0xa1, 0xd7,
+	0x50, 0x72, 0x3d, 0x83, 0x9e, 0xe9, 0xc0, 0x8f, 0x0e, 0xf0, 0x17, 0x1b, 0xdc, 0x72, 0xad, 0x41,
+	0x4c, 0xc2, 0x2b, 0x3e, 0xfa, 0x0e, 0x6a, 0xf1, 0xe5, 0x47, 0x68, 0x86, 0x0f, 0x4f, 0x71, 0xed,
+	0xe4, 0x27, 0x9b, 0x28, 0xc6, 0x5f, 0xf4, 0x4a, 0xf0, 0x71, 0x55, 0x4b, 0x37, 0x51, 0x0b, 0xf6,
+	0x93, 0x61, 0xc8, 0xcc, 0x27, 0xe3, 0xa5, 0x7e, 0x69, 0x04, 0x2c, 0x91, 0x96, 0xf0, 0x5e, 0xd2,
+	0xd5, 0xf3, 0xdb, 0xac, 0x83, 0xe2, 0x93, 0x6b, 0x38, 0x85, 0x2f, 0x84, 0xf8, 0xa4, 0x2b, 0xc1,
+	0xff, 0x1a, 0xf6, 0xdc, 0xe5, 0xd8, 0x32, 0xfd, 0x39, 0x59, 0x5d, 0xfa, 0xe1, 0x09, 0x3d, 0xde,
+	0xc8, 0x1d, 0x21, 0x59, 0xb2, 0xa7, 0x0e, 0xe6, 0x22, 0xa5, 0x95, 0x93, 0x7f, 0x0b, 0x75, 0xd3,
+	0x76, 0x97, 0x41, 0x4a, 0x7b, 0x87, 0x69, 0xbf, 0xd8, 0x44, 0x5b, 0xa2, 0xd4, 0xb8, 0xc9, 0x46,
+	0xa8, 0x99, 0x69, 0x93, 0x8f, 0x86, 0x70, 0x27, 0xf1, 0xbb, 0xeb, 0x39, 0x2c, 0x91, 0x9a, 0xf6,
+	0xd4, 0x89, 0x2a, 0x80, 0x4c, 0xf5, 0x10, 0xb3, 0x06, 0x21, 0x8e, 0xe9, 0x25, 0xbe, 0x4a, 0x19,
+	0x91, 0xb8, 0xda, 0x4c, 0x3f, 0x54, 0x2b, 0x32, 0xb5, 0x87, 0xd7, 0xa9, 0xf9, 0xed, 0xab, 0xa1,
+	0xe1, 0xbd, 0x33, 0x75, 0x63, 0xb5, 0x73, 0x3e, 0x95, 0x69, 0xfe, 0x31, 0x07, 0xe5, 0x94, 0x77,
+	0xd0, 0x39, 0x54, 0x63, 0x4f, 0xff, 0x9f, 0x21, 0x52, 0x89, 0x74, 0x56, 0x11, 0x12, 0xe9, 0xce,
+	0x7c, 0x62, 0x39, 0xba, 0xc6, 0x8e, 0x42, 0x1c, 0x21, 0x61, 0x57, 0xcf, 0xef, 0x47, 0x1d, 0xd1,
+	0x61, 0xf8, 0x73, 0x0e, 0xf6, 0x3e, 0xf0, 0x2f, 0xd2, 0x60, 0x3f, 0xbb, 0x5f, 0x6c, 0xaa, 0xd1,
+	0xf1, 0xf8, 0x1f, 0x66, 0xba, 0x97, 0xd9, 0x2f, 0x56, 0xf3, 0xfc, 0x12, 0x3e, 0x59, 0x1b, 0x22,
+	0x35, 0xeb, 0xf8, 0xf6, 0x6b, 0x64, 0x78, 0xab, 0xc9, 0xfb, 0x47, 0x12, 0x94, 0x92, 0x13, 0x88,
+	0xee, 0xc3, 0x9d, 0x01, 0x16, 0xdb, 0x23, 0xa9, 0xaf, 0x0e, 0xd7, 0xd2, 0x0c, 0xc0, 0xce, 0x60,
+	0xd4, 0xee, 0x4b, 0x42, 0x78, 0x3b, 0x0d, 0xb0, 0x74, 0xce, 0xab, 0x22, 0x97, 0x47, 0x45, 0x28,
+	0xc8, 0x8a, 0x2c, 0x72, 0x5b, 0x47, 0x7f, 0xd9, 0x86, 0x6a, 0x66, 0xba, 0xe8, 0x21, 0x34, 0x79,
+	0xac, 0x4a, 0x5d, 0x5e, 0x50, 0x09, 0x2d, 0xcc, 0xd6, 0x45, 0xab, 0x50, 0x92, 0xce, 0xf8, 0x9e,
+	0x48, 0xde, 0x4a, 0x03, 0x2e, 0x87, 0xee, 0xc1, 0xbe, 0x2a, 0x0e, 0x55, 0x32, 0x1a, 0x74, 0x78,
+	0x55, 0x24, 0x03, 0xfe, 0x4d, 0x5f, 0xe1, 0x3b, 0x5c, 0x1e, 0x21, 0xa8, 0xf1, 0x23, 0x55, 0x61,
+	0x9d, 0xf4, 0x8e, 0x1d, 0x72, 0x5b, 0x34, 0xd5, 0xa9, 0x7c, 0xd2, 0x2e, 0x50, 0xf2, 0x40, 0x92,
+	0x65, 0xb1, 0x43, 0x7a, 0x23, 0x8a, 0x63, 0xc2, 0x43, 0x6e, 0x1b, 0x55, 0xa0, 0xd8, 0x95, 0xf0,
+	0xd9, 0x05, 0x8f, 0x45, 0x6e, 0x07, 0xd5, 0xa1, 0xcc, 0x16, 0xd8, 0x21, 0x7d, 0xa5, 0x37, 0xe4,
+	0x76, 0xd1, 0x3e, 0xd4, 0x85, 0x53, 0xac, 0x9c, 0x89, 0xca, 0x90, 0x08, 0x8a, 0xdc, 0x95, 0x7a,
+	0x5c, 0x91, 0x8a, 0x0b, 0x03, 0x91, 0x60, 0x71, 0xa0, 0x60, 0x95, 0x2b, 0xd1, 0x09, 0x84, 0x13,
+	0xe5, 0xb1, 0x70, 0x2a, 0x9d, 0x8b, 0x43, 0x0e, 0xd0, 0xa7, 0x70, 0x38, 0x92, 0xcf, 0x45, 0xcc,
+	0x16, 0x43, 0x42, 0x0d, 0xd2, 0xef, 0x9f, 0x9f, 0x11, 0x05, 0x77, 0x44, 0x4c, 0xe7, 0xc5, 0x95,
+	0xd1, 0x11, 0x3c, 0xbc, 0x05, 0x53, 0xa1, 0x6e, 0x8a, 0xba, 0x84, 0x3e, 0x2f, 0xf7, 0xc8, 0x05,
+	0x8f, 0x65, 0x49, 0xee, 0x0d, 0xd9, 0xda, 0xb8, 0x2a, 0x7a, 0x00, 0x8d, 0xd4, 0x48, 0x8c, 0x3e,
+	0xe8, 0x29, 0x61, 0x6f, 0x0d, 0x3d, 0x83, 0xcf, 0x3e, 0x9c, 0x47, 0x5b, 0x94, 0x85, 0xd3, 0x33,
+	0x1e, 0xbf, 0x26, 0x7c, 0xb7, 0x13, 0x41, 0xeb, 0xe8, 0x87, 0xf0, 0x64, 0x13, 0x20, 0x87, 0x1e,
+	0xc3, 0xf7, 0x13, 0xe0, 0x6b, 0x11, 0xcb, 0x62, 0x9f, 0x08, 0x17, 0x83, 0x14, 0x64, 0x0f, 0x3d,
+	0x81, 0x47, 0xa9, 0x61, 0xaf, 0x05, 0xa1, 0x35, 0x50, 0xbc, 0xc8, 0x0c, 0x68, 0x3f, 0x33, 0xd8,
+	0xb5, 0x90, 0x03, 0xea, 0xa1, 0x04, 0x82, 0xc5, 0xbe, 0xc8, 0x0f, 0xc5, 0x54, 0xff, 0x9d, 0xdb,
+	0x7c, 0x30, 0x10, 0x71, 0x37, 0x84, 0xde, 0xa5, 0x71, 0x12, 0xf5, 0x77, 0xc4, 0xf6, 0xa8, 0x47,
+	0xda, 0x92, 0xcc, 0xe3, 0x37, 0xdc, 0xbd, 0xe6, 0xa7, 0xb0, 0x13, 0xbe, 0x9d, 0x68, 0xb9, 0x6a,
+	0xda, 0xb4, 0x50, 0x8c, 0x4a, 0xfd, 0x22, 0x4e, 0xda, 0xcd, 0x3f, 0x95, 0x60, 0x9b, 0x9d, 0x55,
+	0xf4, 0x1c, 0x4a, 0x4b, 0xdf, 0x20, 0x53, 0x4b, 0x9b, 0xd1, 0x0b, 0x8f, 0x66, 0xe1, 0xfd, 0xf4,
+	0x89, 0x1e, 0xf9, 0x46, 0xd7, 0xd2, 0x66, 0xb8, 0xb8, 0x0c, 0x3f, 0x7c, 0x74, 0x01, 0x75, 0xd7,
+	0xf1, 0x02, 0x6d, 0x66, 0xc4, 0xc9, 0x35, 0xaa, 0xb2, 0x5a, 0xb7, 0xbc, 0xca, 0x5a, 0x83, 0x90,
+	0x16, 0x65, 0x55, 0x5c, 0x73, 0x33, 0x6d, 0xf4, 0x1c, 0x0e, 0x34, 0xd7, 0xb5, 0xae, 0xc8, 0x5a,
+	0x05, 0x16, 0xd6, 0xda, 0x88, 0xf5, 0xf5, 0x32, 0xc5, 0xd6, 0xaf, 0x80, 0xde, 0x75, 0xae, 0xe6,
+	0x19, 0x64, 0xea, 0x78, 0x24, 0x2c, 0xcd, 0xf7, 0xd8, 0x64, 0x8e, 0x6f, 0x9d, 0x4c, 0x48, 0xec,
+	0x3a, 0x5e, 0xf8, 0x64, 0xac, 0xbb, 0x59, 0x03, 0x3a, 0x05, 0xa0, 0x4f, 0x83, 0xa5, 0x3b, 0xd1,
+	0x02, 0xa3, 0x51, 0xb9, 0xed, 0x8d, 0x12, 0xaa, 0x0e, 0x27, 0x97, 0x23, 0x46, 0xc0, 0x25, 0x3f,
+	0xfe, 0x44, 0xbf, 0x81, 0x3d, 0xd3, 0xf6, 0x03, 0xcd, 0xb2, 0x48, 0xe0, 0x38, 0x96, 0x3e, 0xd7,
+	0x4c, 0xbb, 0x51, 0x65, 0x82, 0xcf, 0x6f, 0x13, 0x94, 0x42, 0xa2, 0x1a, 0xf3, 0x30, 0x67, 0xae,
+	0x59, 0xd0, 0x5b, 0x88, 0x6d, 0xc4, 0xd5, 0xf4, 0x4b, 0x8d, 0xfa, 0x8c, 0xdb, 0xcc, 0x09, 0x91,
+	0xfa, 0x20, 0xa2, 0xe1, 0xba, 0x99, 0x35, 0x20, 0x19, 0x2a, 0xcc, 0xab, 0xc4, 0x5c, 0x30, 0xdd,
+	0x3a, 0xd3, 0xfd, 0xd1, 0x6d, 0xba, 0xec, 0x57, 0x62, 0x14, 0x5c, 0x1e, 0xaf, 0x1a, 0xcd, 0xcf,
+	0xa1, 0x96, 0x8d, 0x02, 0xd4, 0x80, 0xdd, 0x38, 0x8c, 0xc2, 0x3a, 0x2e, 0x6e, 0x36, 0x0d, 0xa8,
+	0xaf, 0x6d, 0x12, 0xc2, 0x50, 0xd7, 0x26, 0x13, 0x93, 0x26, 0x7d, 0xcd, 0x22, 0x9a, 0x37, 0xf3,
+	0xa3, 0x57, 0x6c, 0x66, 0x63, 0xd6, 0x58, 0x7c, 0xc2, 0xe0, 0xbd, 0x99, 0x8f, 0x6b, 0x5a, 0xa6,
+	0xdd, 0x3c, 0x81, 0x52, 0xb2, 0x6b, 0xe8, 0x33, 0xa8, 0xd1, 0xc2, 0x91, 0x56, 0x0c, 0xbe, 0xb3,
+	0xf4, 0x74, 0x23, 0x3a, 0x3a, 0xd5, 0xc8, 0x3a, 0x64, 0xc6, 0xe6, 0xcf, 0x81, 0x5b, 0xdf, 0x98,
+	0x4d, 0xa9, 0xff, 0xcc, 0x41, 0x7d, 0xcd, 0xed, 0x1b, 0x52, 0xd1, 0x2f, 0xc2, 0x37, 0x33, 0x7d,
+	0x2f, 0x45, 0xe5, 0xfb, 0x47, 0xfe, 0x5b, 0xc0, 0x4b, 0x9b, 0xbd, 0x8f, 0xe8, 0x5b, 0x99, 0x3d,
+	0x0c, 0xbe, 0x84, 0x62, 0x12, 0x1e, 0xe1, 0xa3, 0xe6, 0x5e, 0xc6, 0x69, 0x61, 0x1f, 0x2b, 0x80,
+	0x12, 0x20, 0x7a, 0x0c, 0x95, 0x89, 0xe9, 0x6b, 0x63, 0xcb, 0x20, 0x33, 0x67, 0xa1, 0xb1, 0x8a,
+	0xb1, 0x88, 0xcb, 0x91, 0xad, 0xe7, 0x2c, 0xb4, 0xa6, 0x08, 0xe5, 0xd4, 0x76, 0xa3, 0x97, 0x50,
+	0x66, 0xb1, 0x12, 0x95, 0x33, 0x39, 0x56, 0xce, 0xdc, 0x49, 0x8f, 0xc4, 0x80, 0xec, 0x7f, 0x0f,
+	0x30, 0xe3, 0x4f, 0xff, 0x55, 0xa1, 0xb8, 0xc5, 0xed, 0xbc, 0x2a, 0x14, 0x77, 0xb9, 0xca, 0xab,
+	0x42, 0xb1, 0xc6, 0xd5, 0x9b, 0x7f, 0xcb, 0x41, 0x29, 0xf9, 0x4b, 0x06, 0x75, 0x60, 0x2f, 0x9a,
+	0x15, 0x19, 0x5b, 0x9a, 0x7e, 0x69, 0x99, 0x3e, 0x2d, 0x60, 0x3f, 0xba, 0x0e, 0x2e, 0x62, 0xb4,
+	0x63, 0x02, 0x7a, 0x0d, 0x1c, 0x2b, 0x13, 0x26, 0x3e, 0x49, 0x5c, 0xb9, 0xbd, 0xa9, 0x2b, 0x6b,
+	0x11, 0x35, 0x6a, 0xd3, 0x47, 0xba, 0xb1, 0x70, 0x83, 0x2b, 0xe2, 0x5f, 0xf9, 0x9e, 0xe3, 0x04,
+	0x51, 0xa6, 0xaa, 0x30, 0xe3, 0x30, 0xb4, 0x1d, 0x75, 0xd9, 0x1f, 0x03, 0x0c, 0xdf, 0x80, 0x03,
+	0xfa, 0xc4, 0xa6, 0xb5, 0xc3, 0x87, 0x75, 0x49, 0xf8, 0xfe, 0xe6, 0x72, 0x68, 0x17, 0xb6, 0xe8,
+	0x47, 0x9e, 0x5e, 0xf9, 0x14, 0x2e, 0x7e, 0x27, 0xa9, 0xdc, 0xd6, 0x91, 0x0a, 0xb5, 0xcc, 0xac,
+	0x7c, 0xd4, 0x86, 0x7a, 0xf6, 0x8f, 0xcd, 0x38, 0x81, 0xdf, 0xbf, 0x71, 0x29, 0xb8, 0x36, 0xce,
+	0x68, 0xb4, 0x5f, 0xbe, 0xfd, 0xe9, 0xcc, 0x49, 0xe0, 0x2d, 0xc7, 0x9b, 0x1d, 0xa7, 0xfe, 0x0a,
+	0x35, 0xed, 0xa9, 0xa7, 0x85, 0x7f, 0x6d, 0x1e, 0xcf, 0x9c, 0x54, 0xcf, 0x78, 0x87, 0x19, 0xbf,
+	0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, 0x33, 0xbb, 0xb2, 0x66, 0x15, 0x00, 0x00,
 }
diff --git a/go/chromiumos/common.pb.go b/go/chromiumos/common.pb.go
index 057799a..d07f617 100644
--- a/go/chromiumos/common.pb.go
+++ b/go/chromiumos/common.pb.go
@@ -218,40 +218,144 @@
 	return fileDescriptor_fa0b57c3d7d4c63b, []int{6, 0}
 }
 
-// Does this artifact require a build?
-type PrepareForBuildResponse_BuildRelevance int32
+// TODO(crbug/1034529): Drop this message.
+// Legacy artifacts, handled in cros_artifacts.  DO NOT ADD TO THIS.
+type ArtifactsByService_Legacy_ArtifactType 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
+	ArtifactsByService_Legacy_UNSPECIFIED ArtifactsByService_Legacy_ArtifactType = 0
+	// Indicates wanting a zip file of everything in the image directory.
+	ArtifactsByService_Legacy_IMAGE_ZIP ArtifactsByService_Legacy_ArtifactType = 1
+	// Indicates wanting update payloads.
+	ArtifactsByService_Legacy_TEST_UPDATE_PAYLOAD ArtifactsByService_Legacy_ArtifactType = 2
+	// Indicates wanting the autotest tarballs.
+	ArtifactsByService_Legacy_AUTOTEST_FILES ArtifactsByService_Legacy_ArtifactType = 3
+	// Indicates wanting a tarball containing private TAST test bundles.
+	ArtifactsByService_Legacy_TAST_FILES ArtifactsByService_Legacy_ArtifactType = 4
+	// Indicates wanting a tarball containing guest images and test bundles.
+	ArtifactsByService_Legacy_PINNED_GUEST_IMAGES ArtifactsByService_Legacy_ArtifactType = 5
+	// Indicates wanting an archive of firmware images built from source.
+	ArtifactsByService_Legacy_FIRMWARE ArtifactsByService_Legacy_ArtifactType = 6
+	// Indicates wanting a tarball of the Ebuilds logs.
+	ArtifactsByService_Legacy_EBUILD_LOGS ArtifactsByService_Legacy_ArtifactType = 7
+	// Indicates wanting an archive of the ChromeOS Config.
+	ArtifactsByService_Legacy_CHROMEOS_CONFIG ArtifactsByService_Legacy_ArtifactType = 8
+	// Indicates wanting the CPE report.
+	ArtifactsByService_Legacy_CPE_REPORT ArtifactsByService_Legacy_ArtifactType = 9
+	// Indicates wanting a tar.xz archive for each image that has been created.
+	ArtifactsByService_Legacy_IMAGE_ARCHIVES ArtifactsByService_Legacy_ArtifactType = 10
 )
 
-var PrepareForBuildResponse_BuildRelevance_name = map[int32]string{
-	0: "UNSPECIFIED",
-	1: "NEEDED",
-	2: "UNKNOWN",
-	3: "POINTLESS",
+var ArtifactsByService_Legacy_ArtifactType_name = map[int32]string{
+	0:  "UNSPECIFIED",
+	1:  "IMAGE_ZIP",
+	2:  "TEST_UPDATE_PAYLOAD",
+	3:  "AUTOTEST_FILES",
+	4:  "TAST_FILES",
+	5:  "PINNED_GUEST_IMAGES",
+	6:  "FIRMWARE",
+	7:  "EBUILD_LOGS",
+	8:  "CHROMEOS_CONFIG",
+	9:  "CPE_REPORT",
+	10: "IMAGE_ARCHIVES",
 }
 
-var PrepareForBuildResponse_BuildRelevance_value = map[string]int32{
-	"UNSPECIFIED": 0,
-	"NEEDED":      1,
-	"UNKNOWN":     2,
-	"POINTLESS":   3,
+var ArtifactsByService_Legacy_ArtifactType_value = map[string]int32{
+	"UNSPECIFIED":         0,
+	"IMAGE_ZIP":           1,
+	"TEST_UPDATE_PAYLOAD": 2,
+	"AUTOTEST_FILES":      3,
+	"TAST_FILES":          4,
+	"PINNED_GUEST_IMAGES": 5,
+	"FIRMWARE":            6,
+	"EBUILD_LOGS":         7,
+	"CHROMEOS_CONFIG":     8,
+	"CPE_REPORT":          9,
+	"IMAGE_ARCHIVES":      10,
 }
 
-func (x PrepareForBuildResponse_BuildRelevance) String() string {
-	return proto.EnumName(PrepareForBuildResponse_BuildRelevance_name, int32(x))
+func (x ArtifactsByService_Legacy_ArtifactType) String() string {
+	return proto.EnumName(ArtifactsByService_Legacy_ArtifactType_name, int32(x))
 }
 
-func (PrepareForBuildResponse_BuildRelevance) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_fa0b57c3d7d4c63b, []int{13, 0}
+func (ArtifactsByService_Legacy_ArtifactType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 0, 0}
+}
+
+// Artifacts handled by ToolchainService.
+type ArtifactsByService_Toolchain_ArtifactType int32
+
+const (
+	ArtifactsByService_Toolchain_UNSPECIFIED ArtifactsByService_Toolchain_ArtifactType = 0
+	// Indicates an unvetted orderfile for Chrome.
+	ArtifactsByService_Toolchain_UNVERIFIED_CHROME_LLVM_ORDERFILE ArtifactsByService_Toolchain_ArtifactType = 11
+	// Indicates a vetted orderfile for Chrome.
+	ArtifactsByService_Toolchain_VERIFIED_CHROME_LLVM_ORDERFILE ArtifactsByService_Toolchain_ArtifactType = 12
+	// Indicates a clang-tidy artifact.
+	ArtifactsByService_Toolchain_CHROME_CLANG_WARNINGS_FILE ArtifactsByService_Toolchain_ArtifactType = 13
+	// Indicates a PGO artifact for the compiler.
+	ArtifactsByService_Toolchain_UNVERIFIED_LLVM_PGO_FILE ArtifactsByService_Toolchain_ArtifactType = 14
+	// Indicates an unvetted AFDO Chrome profile.  (Generated by HW Tests in
+	// the benchmark-afdo-generate builder.)
+	ArtifactsByService_Toolchain_UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 15
+	// Indicates a vetted AFDO Chrome profile.
+	ArtifactsByService_Toolchain_VERIFIED_CHROME_BENCHMARK_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 16
+	// Indicates a vetted AFDO Kernel profile.
+	ArtifactsByService_Toolchain_VERIFIED_KERNEL_CWP_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 17
+	// Indicates an unvetted AFDO Kernel CWP profile.
+	ArtifactsByService_Toolchain_UNVERIFIED_KERNEL_CWP_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 18
+	// Indicates an unvetted AFDO Chrome CWP profile.
+	ArtifactsByService_Toolchain_UNVERIFIED_CHROME_CWP_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 19
+	// Indicates a vetted AFDO Chrome CWP profile.
+	ArtifactsByService_Toolchain_VERIFIED_CHROME_CWP_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 20
+	// Indicates a vetted AFDO profile for release.
+	ArtifactsByService_Toolchain_VERIFIED_RELEASE_AFDO_FILE ArtifactsByService_Toolchain_ArtifactType = 21
+	// Indicates an unvetted AFDO perf data file (from HW Test).
+	ArtifactsByService_Toolchain_UNVERIFIED_CHROME_BENCHMARK_PERF_FILE ArtifactsByService_Toolchain_ArtifactType = 22
+	// Indicates an unstripped Chrome binary.
+	ArtifactsByService_Toolchain_CHROME_DEBUG_BINARY ArtifactsByService_Toolchain_ArtifactType = 23
+)
+
+var ArtifactsByService_Toolchain_ArtifactType_name = map[int32]string{
+	0:  "UNSPECIFIED",
+	11: "UNVERIFIED_CHROME_LLVM_ORDERFILE",
+	12: "VERIFIED_CHROME_LLVM_ORDERFILE",
+	13: "CHROME_CLANG_WARNINGS_FILE",
+	14: "UNVERIFIED_LLVM_PGO_FILE",
+	15: "UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE",
+	16: "VERIFIED_CHROME_BENCHMARK_AFDO_FILE",
+	17: "VERIFIED_KERNEL_CWP_AFDO_FILE",
+	18: "UNVERIFIED_KERNEL_CWP_AFDO_FILE",
+	19: "UNVERIFIED_CHROME_CWP_AFDO_FILE",
+	20: "VERIFIED_CHROME_CWP_AFDO_FILE",
+	21: "VERIFIED_RELEASE_AFDO_FILE",
+	22: "UNVERIFIED_CHROME_BENCHMARK_PERF_FILE",
+	23: "CHROME_DEBUG_BINARY",
+}
+
+var ArtifactsByService_Toolchain_ArtifactType_value = map[string]int32{
+	"UNSPECIFIED":                           0,
+	"UNVERIFIED_CHROME_LLVM_ORDERFILE":      11,
+	"VERIFIED_CHROME_LLVM_ORDERFILE":        12,
+	"CHROME_CLANG_WARNINGS_FILE":            13,
+	"UNVERIFIED_LLVM_PGO_FILE":              14,
+	"UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE": 15,
+	"VERIFIED_CHROME_BENCHMARK_AFDO_FILE":   16,
+	"VERIFIED_KERNEL_CWP_AFDO_FILE":         17,
+	"UNVERIFIED_KERNEL_CWP_AFDO_FILE":       18,
+	"UNVERIFIED_CHROME_CWP_AFDO_FILE":       19,
+	"VERIFIED_CHROME_CWP_AFDO_FILE":         20,
+	"VERIFIED_RELEASE_AFDO_FILE":            21,
+	"UNVERIFIED_CHROME_BENCHMARK_PERF_FILE": 22,
+	"CHROME_DEBUG_BINARY":                   23,
+}
+
+func (x ArtifactsByService_Toolchain_ArtifactType) String() string {
+	return proto.EnumName(ArtifactsByService_Toolchain_ArtifactType_name, int32(x))
+}
+
+func (ArtifactsByService_Toolchain_ArtifactType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 1, 0}
 }
 
 // BuildTarget encapsulates a number of related arguments. At the moment, the
@@ -1035,47 +1139,6 @@
 	return nil
 }
 
-// TODO(crbug/1019868): Consider migrating
-// chromite.api.toolchain.PrepareForToolchainBuildRequest as well.
-type PrepareForBuildResponse struct {
-	BuildRelevance       PrepareForBuildResponse_BuildRelevance `protobuf:"varint,1,opt,name=build_relevance,json=buildRelevance,proto3,enum=chromiumos.PrepareForBuildResponse_BuildRelevance" json:"build_relevance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
-	XXX_unrecognized     []byte                                 `json:"-"`
-	XXX_sizecache        int32                                  `json:"-"`
-}
-
-func (m *PrepareForBuildResponse) Reset()         { *m = PrepareForBuildResponse{} }
-func (m *PrepareForBuildResponse) String() string { return proto.CompactTextString(m) }
-func (*PrepareForBuildResponse) ProtoMessage()    {}
-func (*PrepareForBuildResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fa0b57c3d7d4c63b, []int{13}
-}
-
-func (m *PrepareForBuildResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PrepareForBuildResponse.Unmarshal(m, b)
-}
-func (m *PrepareForBuildResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PrepareForBuildResponse.Marshal(b, m, deterministic)
-}
-func (m *PrepareForBuildResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PrepareForBuildResponse.Merge(m, src)
-}
-func (m *PrepareForBuildResponse) XXX_Size() int {
-	return xxx_messageInfo_PrepareForBuildResponse.Size(m)
-}
-func (m *PrepareForBuildResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_PrepareForBuildResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PrepareForBuildResponse proto.InternalMessageInfo
-
-func (m *PrepareForBuildResponse) GetBuildRelevance() PrepareForBuildResponse_BuildRelevance {
-	if m != nil {
-		return m.BuildRelevance
-	}
-	return PrepareForBuildResponse_UNSPECIFIED
-}
-
 // Additional information about artifacts used by PrepareForBuild endpoints.
 // TODO(crbug/1019868): This is migrating to ArtifactProfileInfo.
 type PrepareForBuildAdditionalArgs struct {
@@ -1092,7 +1155,7 @@
 func (m *PrepareForBuildAdditionalArgs) String() string { return proto.CompactTextString(m) }
 func (*PrepareForBuildAdditionalArgs) ProtoMessage()    {}
 func (*PrepareForBuildAdditionalArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fa0b57c3d7d4c63b, []int{14}
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{13}
 }
 
 func (m *PrepareForBuildAdditionalArgs) XXX_Unmarshal(b []byte) error {
@@ -1178,7 +1241,7 @@
 func (m *AfdoRelease) String() string { return proto.CompactTextString(m) }
 func (*AfdoRelease) ProtoMessage()    {}
 func (*AfdoRelease) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fa0b57c3d7d4c63b, []int{15}
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{14}
 }
 
 func (m *AfdoRelease) XXX_Unmarshal(b []byte) error {
@@ -1230,7 +1293,7 @@
 func (m *ArtifactProfileInfo) String() string { return proto.CompactTextString(m) }
 func (*ArtifactProfileInfo) ProtoMessage()    {}
 func (*ArtifactProfileInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fa0b57c3d7d4c63b, []int{16}
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{15}
 }
 
 func (m *ArtifactProfileInfo) XXX_Unmarshal(b []byte) error {
@@ -1310,13 +1373,540 @@
 	}
 }
 
+type ArtifactsByService struct {
+	Legacy               *ArtifactsByService_Legacy    `protobuf:"bytes,1,opt,name=legacy,proto3" json:"legacy,omitempty"`
+	Toolchain            *ArtifactsByService_Toolchain `protobuf:"bytes,2,opt,name=toolchain,proto3" json:"toolchain,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
+	XXX_unrecognized     []byte                        `json:"-"`
+	XXX_sizecache        int32                         `json:"-"`
+}
+
+func (m *ArtifactsByService) Reset()         { *m = ArtifactsByService{} }
+func (m *ArtifactsByService) String() string { return proto.CompactTextString(m) }
+func (*ArtifactsByService) ProtoMessage()    {}
+func (*ArtifactsByService) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16}
+}
+
+func (m *ArtifactsByService) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactsByService.Unmarshal(m, b)
+}
+func (m *ArtifactsByService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactsByService.Marshal(b, m, deterministic)
+}
+func (m *ArtifactsByService) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactsByService.Merge(m, src)
+}
+func (m *ArtifactsByService) XXX_Size() int {
+	return xxx_messageInfo_ArtifactsByService.Size(m)
+}
+func (m *ArtifactsByService) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactsByService.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactsByService proto.InternalMessageInfo
+
+func (m *ArtifactsByService) GetLegacy() *ArtifactsByService_Legacy {
+	if m != nil {
+		return m.Legacy
+	}
+	return nil
+}
+
+func (m *ArtifactsByService) GetToolchain() *ArtifactsByService_Toolchain {
+	if m != nil {
+		return m.Toolchain
+	}
+	return nil
+}
+
+type ArtifactsByService_Legacy struct {
+	// Input artifact information
+	InputArtifacts []*ArtifactsByService_Legacy_ArtifactInfo `protobuf:"bytes,1,rep,name=input_artifacts,json=inputArtifacts,proto3" json:"input_artifacts,omitempty"`
+	// Output artifact information
+	OutputArtifacts      []*ArtifactsByService_Legacy_ArtifactInfo `protobuf:"bytes,2,rep,name=output_artifacts,json=outputArtifacts,proto3" json:"output_artifacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
+	XXX_unrecognized     []byte                                    `json:"-"`
+	XXX_sizecache        int32                                     `json:"-"`
+}
+
+func (m *ArtifactsByService_Legacy) Reset()         { *m = ArtifactsByService_Legacy{} }
+func (m *ArtifactsByService_Legacy) String() string { return proto.CompactTextString(m) }
+func (*ArtifactsByService_Legacy) ProtoMessage()    {}
+func (*ArtifactsByService_Legacy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 0}
+}
+
+func (m *ArtifactsByService_Legacy) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactsByService_Legacy.Unmarshal(m, b)
+}
+func (m *ArtifactsByService_Legacy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactsByService_Legacy.Marshal(b, m, deterministic)
+}
+func (m *ArtifactsByService_Legacy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactsByService_Legacy.Merge(m, src)
+}
+func (m *ArtifactsByService_Legacy) XXX_Size() int {
+	return xxx_messageInfo_ArtifactsByService_Legacy.Size(m)
+}
+func (m *ArtifactsByService_Legacy) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactsByService_Legacy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactsByService_Legacy proto.InternalMessageInfo
+
+func (m *ArtifactsByService_Legacy) GetInputArtifacts() []*ArtifactsByService_Legacy_ArtifactInfo {
+	if m != nil {
+		return m.InputArtifacts
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Legacy) GetOutputArtifacts() []*ArtifactsByService_Legacy_ArtifactInfo {
+	if m != nil {
+		return m.OutputArtifacts
+	}
+	return nil
+}
+
+// Information about one or more artifacts.
+type ArtifactsByService_Legacy_ArtifactInfo struct {
+	// The ArtifactType.  One or more types to which the rest of the fields
+	// apply.
+	ArtifactType []ArtifactsByService_Legacy_ArtifactType `protobuf:"varint,1,rep,packed,name=artifact_type,json=artifactType,proto3,enum=chromiumos.ArtifactsByService_Legacy_ArtifactType" json:"artifact_type,omitempty"`
+	// GS location in which to upload artifacts ("gs://" is prepended).
+	// Several fields can be logically specified:
+	//   %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
+	//   %(version)s: Chromeos version (e.g., R81-12813.0.0)
+	//   %(build_id)s: Buildbucket job ID.
+	//   %(target)s: build target name.
+	//   %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
+	//       underscores turned into hyphens.
+	//   %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
+	//   %(artifact_name)s: The name of the artifact being published.
+	GsLocations []string `protobuf:"bytes,2,rep,name=gs_locations,json=gsLocations,proto3" json:"gs_locations,omitempty"`
+	// Profile information needed by the artifact handler.
+	ProfileInfo          *ArtifactProfileInfo `protobuf:"bytes,3,opt,name=profile_info,json=profileInfo,proto3" json:"profile_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *ArtifactsByService_Legacy_ArtifactInfo) Reset() {
+	*m = ArtifactsByService_Legacy_ArtifactInfo{}
+}
+func (m *ArtifactsByService_Legacy_ArtifactInfo) String() string { return proto.CompactTextString(m) }
+func (*ArtifactsByService_Legacy_ArtifactInfo) ProtoMessage()    {}
+func (*ArtifactsByService_Legacy_ArtifactInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 0, 0}
+}
+
+func (m *ArtifactsByService_Legacy_ArtifactInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo.Unmarshal(m, b)
+}
+func (m *ArtifactsByService_Legacy_ArtifactInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo.Marshal(b, m, deterministic)
+}
+func (m *ArtifactsByService_Legacy_ArtifactInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo.Merge(m, src)
+}
+func (m *ArtifactsByService_Legacy_ArtifactInfo) XXX_Size() int {
+	return xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo.Size(m)
+}
+func (m *ArtifactsByService_Legacy_ArtifactInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactsByService_Legacy_ArtifactInfo proto.InternalMessageInfo
+
+func (m *ArtifactsByService_Legacy_ArtifactInfo) GetArtifactType() []ArtifactsByService_Legacy_ArtifactType {
+	if m != nil {
+		return m.ArtifactType
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Legacy_ArtifactInfo) GetGsLocations() []string {
+	if m != nil {
+		return m.GsLocations
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Legacy_ArtifactInfo) GetProfileInfo() *ArtifactProfileInfo {
+	if m != nil {
+		return m.ProfileInfo
+	}
+	return nil
+}
+
+type ArtifactsByService_Toolchain struct {
+	// Input artifact information
+	InputArtifacts []*ArtifactsByService_Toolchain_ArtifactInfo `protobuf:"bytes,1,rep,name=input_artifacts,json=inputArtifacts,proto3" json:"input_artifacts,omitempty"`
+	// Output artifact information
+	OutputArtifacts      []*ArtifactsByService_Toolchain_ArtifactInfo `protobuf:"bytes,2,rep,name=output_artifacts,json=outputArtifacts,proto3" json:"output_artifacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                     `json:"-"`
+	XXX_unrecognized     []byte                                       `json:"-"`
+	XXX_sizecache        int32                                        `json:"-"`
+}
+
+func (m *ArtifactsByService_Toolchain) Reset()         { *m = ArtifactsByService_Toolchain{} }
+func (m *ArtifactsByService_Toolchain) String() string { return proto.CompactTextString(m) }
+func (*ArtifactsByService_Toolchain) ProtoMessage()    {}
+func (*ArtifactsByService_Toolchain) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 1}
+}
+
+func (m *ArtifactsByService_Toolchain) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactsByService_Toolchain.Unmarshal(m, b)
+}
+func (m *ArtifactsByService_Toolchain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactsByService_Toolchain.Marshal(b, m, deterministic)
+}
+func (m *ArtifactsByService_Toolchain) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactsByService_Toolchain.Merge(m, src)
+}
+func (m *ArtifactsByService_Toolchain) XXX_Size() int {
+	return xxx_messageInfo_ArtifactsByService_Toolchain.Size(m)
+}
+func (m *ArtifactsByService_Toolchain) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactsByService_Toolchain.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactsByService_Toolchain proto.InternalMessageInfo
+
+func (m *ArtifactsByService_Toolchain) GetInputArtifacts() []*ArtifactsByService_Toolchain_ArtifactInfo {
+	if m != nil {
+		return m.InputArtifacts
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Toolchain) GetOutputArtifacts() []*ArtifactsByService_Toolchain_ArtifactInfo {
+	if m != nil {
+		return m.OutputArtifacts
+	}
+	return nil
+}
+
+// Information about one or more artifacts.  This should match the rest of
+// the ArtifactInfo definitions in ArtifactsByService, other than having
+// it's own (service-specific) definition for ArtifactType.
+type ArtifactsByService_Toolchain_ArtifactInfo struct {
+	// The ArtifactType.  One or more types to which the rest of the fields
+	// apply.
+	ArtifactType []ArtifactsByService_Toolchain_ArtifactType `protobuf:"varint,1,rep,packed,name=artifact_type,json=artifactType,proto3,enum=chromiumos.ArtifactsByService_Toolchain_ArtifactType" json:"artifact_type,omitempty"`
+	// GS location in which to upload artifacts ("gs://" is prepended).
+	// Several fields can be logically specified:
+	//   %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
+	//   %(version)s: Chromeos version (e.g., R81-12813.0.0)
+	//   %(build_id)s: Buildbucket job ID.
+	//   %(target)s: build target name.
+	//   %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
+	//       underscores turned into hyphens.
+	//   %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
+	//   %(artifact_name)s: The name of the artifact being published.
+	//
+	// At least one location must be specified.  (This will typically be
+	// 'chromeos-image-archive/%(gs_path)s' to match the behavior of
+	// 'artifacts_gs_location'.
+	GsLocations []string `protobuf:"bytes,2,rep,name=gs_locations,json=gsLocations,proto3" json:"gs_locations,omitempty"`
+	// Profile information needed by the artifact handler, if any.
+	ProfileInfo          *ArtifactProfileInfo `protobuf:"bytes,3,opt,name=profile_info,json=profileInfo,proto3" json:"profile_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) Reset() {
+	*m = ArtifactsByService_Toolchain_ArtifactInfo{}
+}
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) String() string { return proto.CompactTextString(m) }
+func (*ArtifactsByService_Toolchain_ArtifactInfo) ProtoMessage()    {}
+func (*ArtifactsByService_Toolchain_ArtifactInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{16, 1, 0}
+}
+
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo.Unmarshal(m, b)
+}
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo.Marshal(b, m, deterministic)
+}
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo.Merge(m, src)
+}
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) XXX_Size() int {
+	return xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo.Size(m)
+}
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactsByService_Toolchain_ArtifactInfo proto.InternalMessageInfo
+
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) GetArtifactType() []ArtifactsByService_Toolchain_ArtifactType {
+	if m != nil {
+		return m.ArtifactType
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) GetGsLocations() []string {
+	if m != nil {
+		return m.GsLocations
+	}
+	return nil
+}
+
+func (m *ArtifactsByService_Toolchain_ArtifactInfo) GetProfileInfo() *ArtifactProfileInfo {
+	if m != nil {
+		return m.ProfileInfo
+	}
+	return nil
+}
+
+type UploadedArtifactsByService struct {
+	Legacy               *UploadedArtifactsByService_Legacy    `protobuf:"bytes,1,opt,name=legacy,proto3" json:"legacy,omitempty"`
+	Toolchain            *UploadedArtifactsByService_Toolchain `protobuf:"bytes,2,opt,name=toolchain,proto3" json:"toolchain,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
+	XXX_unrecognized     []byte                                `json:"-"`
+	XXX_sizecache        int32                                 `json:"-"`
+}
+
+func (m *UploadedArtifactsByService) Reset()         { *m = UploadedArtifactsByService{} }
+func (m *UploadedArtifactsByService) String() string { return proto.CompactTextString(m) }
+func (*UploadedArtifactsByService) ProtoMessage()    {}
+func (*UploadedArtifactsByService) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{17}
+}
+
+func (m *UploadedArtifactsByService) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadedArtifactsByService.Unmarshal(m, b)
+}
+func (m *UploadedArtifactsByService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadedArtifactsByService.Marshal(b, m, deterministic)
+}
+func (m *UploadedArtifactsByService) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadedArtifactsByService.Merge(m, src)
+}
+func (m *UploadedArtifactsByService) XXX_Size() int {
+	return xxx_messageInfo_UploadedArtifactsByService.Size(m)
+}
+func (m *UploadedArtifactsByService) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadedArtifactsByService.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadedArtifactsByService proto.InternalMessageInfo
+
+func (m *UploadedArtifactsByService) GetLegacy() *UploadedArtifactsByService_Legacy {
+	if m != nil {
+		return m.Legacy
+	}
+	return nil
+}
+
+func (m *UploadedArtifactsByService) GetToolchain() *UploadedArtifactsByService_Toolchain {
+	if m != nil {
+		return m.Toolchain
+	}
+	return nil
+}
+
+// TODO(crbug/1034529): Drop this UploadedArtifactsByService.Legacy.
+// Legacy artifacts, handled by ArtifactsService.
+type UploadedArtifactsByService_Legacy struct {
+	Artifacts            []*UploadedArtifactsByService_Legacy_ArtifactPaths `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                           `json:"-"`
+	XXX_unrecognized     []byte                                             `json:"-"`
+	XXX_sizecache        int32                                              `json:"-"`
+}
+
+func (m *UploadedArtifactsByService_Legacy) Reset()         { *m = UploadedArtifactsByService_Legacy{} }
+func (m *UploadedArtifactsByService_Legacy) String() string { return proto.CompactTextString(m) }
+func (*UploadedArtifactsByService_Legacy) ProtoMessage()    {}
+func (*UploadedArtifactsByService_Legacy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{17, 0}
+}
+
+func (m *UploadedArtifactsByService_Legacy) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy.Unmarshal(m, b)
+}
+func (m *UploadedArtifactsByService_Legacy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy.Marshal(b, m, deterministic)
+}
+func (m *UploadedArtifactsByService_Legacy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadedArtifactsByService_Legacy.Merge(m, src)
+}
+func (m *UploadedArtifactsByService_Legacy) XXX_Size() int {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy.Size(m)
+}
+func (m *UploadedArtifactsByService_Legacy) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadedArtifactsByService_Legacy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadedArtifactsByService_Legacy proto.InternalMessageInfo
+
+func (m *UploadedArtifactsByService_Legacy) GetArtifacts() []*UploadedArtifactsByService_Legacy_ArtifactPaths {
+	if m != nil {
+		return m.Artifacts
+	}
+	return nil
+}
+
+type UploadedArtifactsByService_Legacy_ArtifactPaths struct {
+	// The ArtifactType.
+	ArtifactType ArtifactsByService_Legacy_ArtifactType `protobuf:"varint,1,opt,name=artifact_type,json=artifactType,proto3,enum=chromiumos.ArtifactsByService_Legacy_ArtifactType" json:"artifact_type,omitempty"`
+	// Absolute path to the artifact file.
+	Paths                []string `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) Reset() {
+	*m = UploadedArtifactsByService_Legacy_ArtifactPaths{}
+}
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) String() string {
+	return proto.CompactTextString(m)
+}
+func (*UploadedArtifactsByService_Legacy_ArtifactPaths) ProtoMessage() {}
+func (*UploadedArtifactsByService_Legacy_ArtifactPaths) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{17, 0, 0}
+}
+
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths.Unmarshal(m, b)
+}
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths.Marshal(b, m, deterministic)
+}
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths.Merge(m, src)
+}
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) XXX_Size() int {
+	return xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths.Size(m)
+}
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadedArtifactsByService_Legacy_ArtifactPaths proto.InternalMessageInfo
+
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) GetArtifactType() ArtifactsByService_Legacy_ArtifactType {
+	if m != nil {
+		return m.ArtifactType
+	}
+	return ArtifactsByService_Legacy_UNSPECIFIED
+}
+
+func (m *UploadedArtifactsByService_Legacy_ArtifactPaths) GetPaths() []string {
+	if m != nil {
+		return m.Paths
+	}
+	return nil
+}
+
+type UploadedArtifactsByService_Toolchain struct {
+	Artifacts            []*UploadedArtifactsByService_Toolchain_ArtifactPaths `protobuf:"bytes,1,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                              `json:"-"`
+	XXX_unrecognized     []byte                                                `json:"-"`
+	XXX_sizecache        int32                                                 `json:"-"`
+}
+
+func (m *UploadedArtifactsByService_Toolchain) Reset()         { *m = UploadedArtifactsByService_Toolchain{} }
+func (m *UploadedArtifactsByService_Toolchain) String() string { return proto.CompactTextString(m) }
+func (*UploadedArtifactsByService_Toolchain) ProtoMessage()    {}
+func (*UploadedArtifactsByService_Toolchain) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{17, 1}
+}
+
+func (m *UploadedArtifactsByService_Toolchain) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain.Unmarshal(m, b)
+}
+func (m *UploadedArtifactsByService_Toolchain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain.Marshal(b, m, deterministic)
+}
+func (m *UploadedArtifactsByService_Toolchain) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadedArtifactsByService_Toolchain.Merge(m, src)
+}
+func (m *UploadedArtifactsByService_Toolchain) XXX_Size() int {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain.Size(m)
+}
+func (m *UploadedArtifactsByService_Toolchain) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadedArtifactsByService_Toolchain.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadedArtifactsByService_Toolchain proto.InternalMessageInfo
+
+func (m *UploadedArtifactsByService_Toolchain) GetArtifacts() []*UploadedArtifactsByService_Toolchain_ArtifactPaths {
+	if m != nil {
+		return m.Artifacts
+	}
+	return nil
+}
+
+type UploadedArtifactsByService_Toolchain_ArtifactPaths struct {
+	// The ArtifactType.
+	ArtifactType ArtifactsByService_Toolchain_ArtifactType `protobuf:"varint,1,opt,name=artifact_type,json=artifactType,proto3,enum=chromiumos.ArtifactsByService_Toolchain_ArtifactType" json:"artifact_type,omitempty"`
+	// Absolute path to the artifact file.
+	Paths                []string `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) Reset() {
+	*m = UploadedArtifactsByService_Toolchain_ArtifactPaths{}
+}
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) String() string {
+	return proto.CompactTextString(m)
+}
+func (*UploadedArtifactsByService_Toolchain_ArtifactPaths) ProtoMessage() {}
+func (*UploadedArtifactsByService_Toolchain_ArtifactPaths) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fa0b57c3d7d4c63b, []int{17, 1, 0}
+}
+
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths.Unmarshal(m, b)
+}
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths.Marshal(b, m, deterministic)
+}
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths.Merge(m, src)
+}
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) XXX_Size() int {
+	return xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths.Size(m)
+}
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadedArtifactsByService_Toolchain_ArtifactPaths proto.InternalMessageInfo
+
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) GetArtifactType() ArtifactsByService_Toolchain_ArtifactType {
+	if m != nil {
+		return m.ArtifactType
+	}
+	return ArtifactsByService_Toolchain_UNSPECIFIED
+}
+
+func (m *UploadedArtifactsByService_Toolchain_ArtifactPaths) GetPaths() []string {
+	if m != nil {
+		return m.Paths
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterEnum("chromiumos.ImageType", ImageType_name, ImageType_value)
 	proto.RegisterEnum("chromiumos.Channel", Channel_name, Channel_value)
 	proto.RegisterEnum("chromiumos.AFDOArtifactType", AFDOArtifactType_name, AFDOArtifactType_value)
 	proto.RegisterEnum("chromiumos.GomaConfig_GomaApproach", GomaConfig_GomaApproach_name, GomaConfig_GomaApproach_value)
 	proto.RegisterEnum("chromiumos.Path_Location", Path_Location_name, Path_Location_value)
-	proto.RegisterEnum("chromiumos.PrepareForBuildResponse_BuildRelevance", PrepareForBuildResponse_BuildRelevance_name, PrepareForBuildResponse_BuildRelevance_value)
+	proto.RegisterEnum("chromiumos.ArtifactsByService_Legacy_ArtifactType", ArtifactsByService_Legacy_ArtifactType_name, ArtifactsByService_Legacy_ArtifactType_value)
+	proto.RegisterEnum("chromiumos.ArtifactsByService_Toolchain_ArtifactType", ArtifactsByService_Toolchain_ArtifactType_name, ArtifactsByService_Toolchain_ArtifactType_value)
 	proto.RegisterType((*BuildTarget)(nil), "chromiumos.BuildTarget")
 	proto.RegisterType((*Chroot)(nil), "chromiumos.Chroot")
 	proto.RegisterType((*Chroot_ChrootEnv)(nil), "chromiumos.Chroot.ChrootEnv")
@@ -1331,97 +1921,141 @@
 	proto.RegisterType((*GitilesCommit)(nil), "chromiumos.GitilesCommit")
 	proto.RegisterType((*UseFlag)(nil), "chromiumos.UseFlag")
 	proto.RegisterType((*ProtoBytes)(nil), "chromiumos.ProtoBytes")
-	proto.RegisterType((*PrepareForBuildResponse)(nil), "chromiumos.PrepareForBuildResponse")
 	proto.RegisterType((*PrepareForBuildAdditionalArgs)(nil), "chromiumos.PrepareForBuildAdditionalArgs")
 	proto.RegisterType((*AfdoRelease)(nil), "chromiumos.AfdoRelease")
 	proto.RegisterType((*ArtifactProfileInfo)(nil), "chromiumos.ArtifactProfileInfo")
+	proto.RegisterType((*ArtifactsByService)(nil), "chromiumos.ArtifactsByService")
+	proto.RegisterType((*ArtifactsByService_Legacy)(nil), "chromiumos.ArtifactsByService.Legacy")
+	proto.RegisterType((*ArtifactsByService_Legacy_ArtifactInfo)(nil), "chromiumos.ArtifactsByService.Legacy.ArtifactInfo")
+	proto.RegisterType((*ArtifactsByService_Toolchain)(nil), "chromiumos.ArtifactsByService.Toolchain")
+	proto.RegisterType((*ArtifactsByService_Toolchain_ArtifactInfo)(nil), "chromiumos.ArtifactsByService.Toolchain.ArtifactInfo")
+	proto.RegisterType((*UploadedArtifactsByService)(nil), "chromiumos.UploadedArtifactsByService")
+	proto.RegisterType((*UploadedArtifactsByService_Legacy)(nil), "chromiumos.UploadedArtifactsByService.Legacy")
+	proto.RegisterType((*UploadedArtifactsByService_Legacy_ArtifactPaths)(nil), "chromiumos.UploadedArtifactsByService.Legacy.ArtifactPaths")
+	proto.RegisterType((*UploadedArtifactsByService_Toolchain)(nil), "chromiumos.UploadedArtifactsByService.Toolchain")
+	proto.RegisterType((*UploadedArtifactsByService_Toolchain_ArtifactPaths)(nil), "chromiumos.UploadedArtifactsByService.Toolchain.ArtifactPaths")
 }
 
 func init() { proto.RegisterFile("chromiumos/common.proto", fileDescriptor_fa0b57c3d7d4c63b) }
 
 var fileDescriptor_fa0b57c3d7d4c63b = []byte{
-	// 1327 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcb, 0x6e, 0xdb, 0xc6,
-	0x1a, 0xb6, 0x44, 0x45, 0x97, 0x5f, 0x17, 0x33, 0x93, 0x93, 0x58, 0xc9, 0x39, 0x06, 0x1c, 0x26,
-	0xc0, 0xf1, 0x31, 0x0e, 0xe4, 0x40, 0x4d, 0xda, 0x4d, 0x37, 0x14, 0x45, 0xc9, 0x4c, 0x6c, 0x52,
-	0x18, 0xc9, 0x0e, 0xdc, 0x2e, 0x88, 0x09, 0x35, 0xa2, 0x98, 0x50, 0x1c, 0x62, 0x48, 0x3b, 0x70,
-	0xfa, 0x00, 0xdd, 0x77, 0xd1, 0xc7, 0x29, 0xd0, 0x45, 0x5f, 0xab, 0x28, 0x66, 0x48, 0x4a, 0xb2,
-	0x93, 0xa2, 0xe8, 0xa2, 0x2b, 0xcd, 0xff, 0xfd, 0xf7, 0x2b, 0x05, 0x7b, 0xde, 0x92, 0xb3, 0x55,
-	0x70, 0xb5, 0x62, 0xc9, 0xb1, 0xc7, 0x56, 0x2b, 0x16, 0xf5, 0x62, 0xce, 0x52, 0x86, 0x60, 0xc3,
-	0xd0, 0x9e, 0x42, 0x73, 0x70, 0x15, 0x84, 0xf3, 0x19, 0xe1, 0x3e, 0x4d, 0x11, 0x82, 0x4a, 0x44,
-	0x56, 0xb4, 0x5b, 0x3a, 0x28, 0x1d, 0x36, 0xb0, 0x7c, 0x6b, 0xbf, 0x97, 0xa0, 0x6a, 0x2c, 0x39,
-	0x63, 0x92, 0x1d, 0x93, 0x74, 0x59, 0xb0, 0xc5, 0x1b, 0xfd, 0x1b, 0x1a, 0x1e, 0xf1, 0x96, 0xd4,
-	0x9d, 0x07, 0xbc, 0x5b, 0x96, 0x8c, 0xba, 0x04, 0x86, 0x01, 0x47, 0x3d, 0x50, 0x68, 0x74, 0xdd,
-	0x55, 0x0e, 0x4a, 0x87, 0xcd, 0xfe, 0x7f, 0x7a, 0x1b, 0xc7, 0xbd, 0xcc, 0x62, 0xfe, 0x63, 0x46,
-	0xd7, 0x58, 0x08, 0xa2, 0x7d, 0xc8, 0x82, 0xcb, 0xac, 0x55, 0xa4, 0xb5, 0x46, 0x86, 0x0c, 0x03,
-	0xfe, 0x24, 0x82, 0xc6, 0x5a, 0x01, 0xbd, 0x80, 0xc6, 0x55, 0x42, 0xdd, 0x45, 0x48, 0xfc, 0xa4,
-	0x5b, 0x3a, 0x50, 0x0e, 0x9b, 0xfd, 0x07, 0xdb, 0x1e, 0xce, 0x13, 0x3a, 0x0a, 0x89, 0x8f, 0xeb,
-	0x57, 0xd9, 0x23, 0x41, 0xc7, 0x50, 0x5f, 0x50, 0x92, 0x5e, 0x71, 0x9a, 0x74, 0xcb, 0x9f, 0x2b,
-	0x8c, 0x32, 0x1e, 0x5e, 0x0b, 0xbd, 0xae, 0xd4, 0xef, 0xa9, 0x55, 0xed, 0x19, 0xd4, 0x72, 0x16,
-	0xea, 0x42, 0x2d, 0x67, 0xe6, 0x35, 0x28, 0x48, 0xed, 0x67, 0x05, 0x60, 0xcc, 0x56, 0xc4, 0x60,
-	0xd1, 0x22, 0xf0, 0xd1, 0x63, 0xa8, 0xfb, 0x6c, 0x45, 0x64, 0x1a, 0xb9, 0xa4, 0xa0, 0x45, 0x4d,
-	0x0e, 0x41, 0x95, 0x2c, 0x2f, 0x0c, 0x68, 0x94, 0xba, 0xef, 0x13, 0x16, 0xe5, 0x75, 0xeb, 0x08,
-	0xdc, 0x90, 0xf0, 0xeb, 0x84, 0x45, 0xe8, 0x08, 0xee, 0x67, 0xb9, 0xb3, 0xc4, 0x5d, 0x5b, 0x53,
-	0xa4, 0xe8, 0x6e, 0xc1, 0x18, 0xe7, 0x56, 0x4f, 0xa0, 0x2d, 0x45, 0x48, 0x1c, 0x73, 0x46, 0xbc,
-	0xa5, 0x2c, 0x5e, 0xa7, 0xff, 0x6c, 0x3b, 0xc1, 0x4d, 0x7c, 0xf2, 0xa9, 0xe7, 0xa2, 0xb8, 0xe5,
-	0x6f, 0x51, 0xa8, 0x07, 0xb5, 0x90, 0xf9, 0xd2, 0xd7, 0x3d, 0xd9, 0xb7, 0x87, 0xdb, 0x36, 0xa6,
-	0x37, 0x91, 0x47, 0xe7, 0xc3, 0x80, 0xe3, 0x6a, 0xc8, 0x7c, 0xe1, 0x79, 0x1f, 0x20, 0x49, 0x49,
-	0x9a, 0xb8, 0x8b, 0x20, 0xa4, 0xdd, 0x6a, 0xd6, 0x33, 0x89, 0x8c, 0x82, 0x90, 0xa2, 0x67, 0xd0,
-	0xf6, 0xd8, 0x55, 0x94, 0x52, 0xfe, 0x29, 0x93, 0xa8, 0x49, 0x89, 0x56, 0x01, 0x0a, 0x21, 0xed,
-	0x12, 0x5a, 0xdb, 0x11, 0xa1, 0x7d, 0x78, 0x3c, 0x76, 0xce, 0x74, 0x57, 0x9f, 0x4c, 0xb0, 0xa3,
-	0x1b, 0x27, 0xee, 0xb9, 0x3d, 0x9d, 0x98, 0x86, 0x35, 0xb2, 0xcc, 0xa1, 0xba, 0x83, 0x9a, 0x50,
-	0x1b, 0x9a, 0x23, 0xfd, 0xfc, 0x74, 0xa6, 0x96, 0x50, 0x0b, 0xea, 0x78, 0x60, 0xba, 0x13, 0xec,
-	0x0c, 0xd5, 0x32, 0xda, 0x85, 0xa6, 0xa0, 0xa6, 0x33, 0x7d, 0x6c, 0xd9, 0x63, 0x55, 0xd1, 0x62,
-	0x68, 0x4b, 0xd3, 0x3c, 0x0d, 0x16, 0xc4, 0x4b, 0x93, 0x3b, 0xf1, 0x96, 0xfe, 0x32, 0xde, 0xf2,
-	0xe7, 0xf1, 0x8a, 0xa1, 0x17, 0x35, 0x12, 0xfc, 0xa4, 0xab, 0x1c, 0x28, 0x62, 0xe8, 0x43, 0xe6,
-	0x0b, 0x5e, 0xa2, 0x2d, 0xa0, 0x39, 0x21, 0xde, 0x07, 0xe2, 0x53, 0x2b, 0x5a, 0x30, 0xf4, 0x14,
-	0x5a, 0x71, 0x46, 0xba, 0x5b, 0xbb, 0xd5, 0xcc, 0x31, 0x9b, 0xac, 0x28, 0x7a, 0x02, 0x75, 0x8f,
-	0xa4, 0xd4, 0x67, 0xfc, 0x66, 0xb3, 0x42, 0x19, 0x2d, 0x46, 0xee, 0x9a, 0xf2, 0x24, 0x60, 0x51,
-	0xde, 0xfa, 0x82, 0xd4, 0x7e, 0x2c, 0x41, 0x65, 0x22, 0x56, 0xf0, 0x4b, 0x6b, 0xf9, 0x0a, 0xea,
-	0x21, 0xf3, 0x48, 0x1a, 0xe4, 0xd3, 0xd5, 0xe9, 0x3f, 0xde, 0x6e, 0xa3, 0xd0, 0xeb, 0x9d, 0xe6,
-	0x02, 0x78, 0x2d, 0xaa, 0xbd, 0x84, 0x7a, 0x81, 0x8a, 0x52, 0xda, 0x8e, 0x7b, 0xea, 0x18, 0xfa,
-	0xcc, 0x72, 0x6c, 0x75, 0x07, 0x01, 0x54, 0x2d, 0x7b, 0x6a, 0x0d, 0x4d, 0xb5, 0x24, 0x5a, 0xe0,
-	0x9c, 0xcf, 0x24, 0x51, 0xd6, 0xfa, 0x00, 0x98, 0x26, 0x57, 0x61, 0x2a, 0xc3, 0x79, 0xbe, 0x15,
-	0x4e, 0xb3, 0xaf, 0xde, 0x75, 0x9b, 0x05, 0xa8, 0xed, 0x43, 0x63, 0x3d, 0x4b, 0x48, 0x05, 0x65,
-	0xb3, 0x29, 0xe2, 0xa9, 0xc5, 0xd0, 0x1a, 0x53, 0xce, 0x83, 0xd4, 0x58, 0x92, 0xc8, 0xa7, 0x22,
-	0xc7, 0x25, 0x4b, 0xd2, 0x22, 0x47, 0xf1, 0x16, 0xa5, 0x89, 0x39, 0x7b, 0x4f, 0xbd, 0x34, 0xaf,
-	0x5a, 0x41, 0xa2, 0x47, 0x50, 0xf5, 0xa4, 0x9e, 0xac, 0x99, 0x82, 0x73, 0x4a, 0x14, 0x3a, 0x26,
-	0xa9, 0xb7, 0x4c, 0x68, 0x2a, 0x17, 0x44, 0xc1, 0x6b, 0x5a, 0xfb, 0x01, 0xda, 0xe3, 0x20, 0x15,
-	0x1d, 0x34, 0xd8, 0x6a, 0x15, 0xa4, 0x7f, 0xd3, 0x65, 0x07, 0xca, 0xc1, 0x3c, 0x6f, 0x51, 0x39,
-	0x98, 0x8b, 0x94, 0x38, 0x5d, 0xe4, 0x37, 0x4c, 0x3c, 0xa5, 0x73, 0x96, 0x04, 0xb2, 0x25, 0x62,
-	0xb3, 0xda, 0x78, 0x4d, 0x6b, 0xfb, 0x50, 0xcb, 0xef, 0x95, 0x70, 0x2b, 0x6e, 0x5a, 0xe1, 0x56,
-	0xbc, 0xb5, 0x6f, 0x00, 0x26, 0xe2, 0x76, 0x0f, 0x6e, 0x52, 0x9a, 0xa0, 0xff, 0x81, 0x9a, 0x50,
-	0x1e, 0x90, 0x30, 0xf8, 0x44, 0xe7, 0xae, 0x3c, 0xea, 0x52, 0xba, 0x85, 0x77, 0x37, 0xb8, 0x94,
-	0xd7, 0x7e, 0x2d, 0xc1, 0xde, 0x84, 0xd3, 0x98, 0x70, 0x3a, 0x62, 0x5c, 0x9e, 0x7a, 0x4c, 0x93,
-	0x98, 0x45, 0x09, 0x45, 0xdf, 0xc3, 0xee, 0x3b, 0x01, 0xb8, 0x9c, 0x86, 0xf4, 0x9a, 0x44, 0x5e,
-	0x36, 0x9b, 0x9d, 0x7e, 0xff, 0x56, 0xcb, 0xbe, 0xac, 0xdd, 0xcb, 0xa9, 0x5c, 0x13, 0x77, 0xde,
-	0xdd, 0xa2, 0x35, 0x0b, 0x3a, 0xb7, 0x25, 0xc4, 0x38, 0xdd, 0xde, 0x62, 0x80, 0xaa, 0x6d, 0x9a,
-	0x43, 0x73, 0x98, 0x8d, 0xd3, 0xb9, 0xfd, 0xc6, 0x76, 0xde, 0xda, 0x6a, 0x19, 0xb5, 0xa1, 0x31,
-	0x71, 0x2c, 0x7b, 0x76, 0x6a, 0x4e, 0xa7, 0xaa, 0xa2, 0xfd, 0x54, 0x82, 0xfd, 0x3b, 0x51, 0xe8,
-	0xf3, 0xb9, 0xac, 0x1b, 0x09, 0x75, 0xee, 0x27, 0xa8, 0x07, 0x28, 0xff, 0x6c, 0x78, 0x1f, 0x63,
-	0x51, 0x90, 0xcd, 0x6a, 0x9f, 0xec, 0x60, 0x35, 0xe3, 0x19, 0x1f, 0xe3, 0x49, 0xc6, 0x41, 0xff,
-	0x85, 0xce, 0x07, 0xca, 0x23, 0x1a, 0xba, 0xc5, 0x6a, 0x95, 0x73, 0xd9, 0x76, 0x86, 0x5f, 0x64,
-	0xf0, 0xa0, 0x0b, 0x8f, 0xe2, 0xcc, 0xb3, 0xbb, 0x60, 0xdc, 0xcd, 0xca, 0x45, 0xb8, 0x9f, 0x68,
-	0x04, 0x9a, 0xfa, 0x62, 0xce, 0x44, 0x7a, 0x24, 0xa1, 0xe8, 0xff, 0x7f, 0x1e, 0xc1, 0x17, 0xfc,
-	0x3f, 0x87, 0x4e, 0xb0, 0x12, 0x07, 0x21, 0x33, 0x18, 0xcc, 0xa5, 0x7f, 0x05, 0xb7, 0x24, 0x2a,
-	0x33, 0xb4, 0xe6, 0xda, 0x6f, 0x25, 0x78, 0x50, 0x9c, 0xad, 0x5c, 0x53, 0x1e, 0x94, 0x7f, 0x2a,
-	0x5b, 0xf4, 0x2d, 0xb4, 0xc8, 0x62, 0xce, 0xe4, 0x3c, 0x90, 0x84, 0xe6, 0x9f, 0xed, 0xbd, 0xed,
-	0x69, 0xd8, 0xca, 0xf9, 0x64, 0x07, 0x37, 0xc9, 0x86, 0x1c, 0xec, 0xc1, 0x43, 0x92, 0x47, 0x5b,
-	0x04, 0xe5, 0x06, 0xd1, 0x82, 0x1d, 0xfd, 0x52, 0x82, 0x86, 0x25, 0x12, 0x9b, 0xdd, 0xc4, 0xe2,
-	0x13, 0xfa, 0x2f, 0xeb, 0x4c, 0x1f, 0x9b, 0xee, 0xec, 0x72, 0x62, 0xba, 0xe7, 0xf6, 0xd0, 0x1c,
-	0x59, 0xb6, 0x9c, 0x87, 0x3a, 0x54, 0x06, 0xfa, 0x54, 0x1c, 0x97, 0x1a, 0x28, 0x43, 0xf3, 0x42,
-	0x2d, 0x0b, 0x68, 0x66, 0x4e, 0x67, 0xaa, 0x22, 0x06, 0x44, 0x30, 0xdd, 0x8b, 0x33, 0xb5, 0x22,
-	0x08, 0x01, 0x0b, 0xe2, 0x9e, 0xbc, 0xff, 0xa6, 0xe1, 0x5c, 0x98, 0xf8, 0x52, 0xad, 0x0a, 0xd6,
-	0x48, 0x37, 0x66, 0x0e, 0xbe, 0x54, 0x6b, 0x82, 0x35, 0xb2, 0xf0, 0xd9, 0x5b, 0x1d, 0x9b, 0x6a,
-	0x1d, 0xdd, 0x87, 0xb6, 0x81, 0x5f, 0xbd, 0x70, 0xd7, 0x50, 0x43, 0x40, 0xd2, 0xea, 0xf8, 0x3c,
-	0x37, 0x07, 0x02, 0x92, 0xb6, 0xd7, 0x50, 0xf3, 0x68, 0x05, 0x35, 0x71, 0x85, 0x22, 0x1a, 0xa2,
-	0x3d, 0x78, 0x60, 0x9c, 0xe8, 0xb6, 0x6d, 0x9e, 0xde, 0xf9, 0x24, 0x21, 0xe8, 0x14, 0x8c, 0xe9,
-	0x4c, 0x1f, 0x9c, 0x8a, 0x34, 0x54, 0x68, 0x15, 0xd8, 0xc0, 0x9c, 0xe9, 0xd9, 0xd7, 0xa9, 0x40,
-	0x44, 0x82, 0xca, 0xb6, 0x9a, 0xa1, 0xdb, 0x3a, 0xbe, 0x54, 0x2b, 0x47, 0x0b, 0x50, 0xf5, 0xd1,
-	0xd0, 0x29, 0x5a, 0x2f, 0xab, 0xd6, 0x86, 0x86, 0xed, 0xd8, 0x59, 0xd1, 0xd4, 0x1d, 0x41, 0x3a,
-	0x78, 0x68, 0xe2, 0x91, 0x25, 0x1d, 0x21, 0xe8, 0x0c, 0x4c, 0xdb, 0x38, 0x39, 0xd3, 0xf1, 0x1b,
-	0x57, 0xe8, 0x66, 0xae, 0xde, 0x98, 0x58, 0x18, 0x96, 0x80, 0x92, 0xf9, 0xc6, 0xce, 0x99, 0x99,
-	0x01, 0x95, 0xc1, 0xd7, 0xdf, 0xbd, 0xf4, 0xd9, 0xba, 0xb9, 0x3d, 0xc6, 0xfd, 0xe3, 0xad, 0xbf,
-	0x8c, 0x41, 0xb4, 0xe0, 0xe4, 0x58, 0x1e, 0x97, 0x63, 0x9f, 0x6d, 0x71, 0xde, 0x55, 0x25, 0xf8,
-	0xd5, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x80, 0x8f, 0x99, 0x8b, 0x61, 0x0a, 0x00, 0x00,
+	// 1877 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcb, 0x6f, 0xe3, 0xc6,
+	0x19, 0x5f, 0x4a, 0x5a, 0x3d, 0x3e, 0x3d, 0xcc, 0xcc, 0x3e, 0xac, 0x75, 0xe3, 0xc4, 0x4b, 0x6f,
+	0x10, 0x67, 0xd1, 0xda, 0x0b, 0x37, 0xdb, 0x1e, 0xfa, 0x00, 0x28, 0x8a, 0x92, 0x99, 0xc8, 0x14,
+	0x31, 0x92, 0xbc, 0xf0, 0xf6, 0xc1, 0x32, 0xd4, 0x88, 0x62, 0x42, 0x71, 0x04, 0x92, 0xde, 0xc0,
+	0x29, 0x50, 0xa0, 0xa7, 0xa2, 0xd7, 0x1e, 0x0a, 0xf4, 0xff, 0xe8, 0xb9, 0xb7, 0x5e, 0x0b, 0xf4,
+	0x5f, 0x68, 0xcf, 0x3d, 0xf6, 0xd2, 0x43, 0x51, 0xcc, 0xf0, 0x21, 0xca, 0x96, 0xeb, 0x75, 0x90,
+	0xa2, 0x27, 0xcf, 0xf7, 0x7d, 0xbf, 0xf9, 0x5e, 0xf3, 0x3d, 0x44, 0xc3, 0xb6, 0x3d, 0x0f, 0xe8,
+	0xc2, 0xbd, 0x58, 0xd0, 0xf0, 0xc8, 0xa6, 0x8b, 0x05, 0xf5, 0x0f, 0x97, 0x01, 0x8d, 0x28, 0x82,
+	0x95, 0x40, 0x7a, 0x0a, 0xf5, 0xce, 0x85, 0xeb, 0x4d, 0xc7, 0x56, 0xe0, 0x90, 0x08, 0x21, 0x28,
+	0xf9, 0xd6, 0x82, 0xb4, 0x85, 0x3d, 0xe1, 0xa0, 0x86, 0xf9, 0x59, 0xfa, 0xb7, 0x00, 0x65, 0x65,
+	0x1e, 0x50, 0xca, 0xc5, 0x4b, 0x2b, 0x9a, 0xa7, 0x62, 0x76, 0x46, 0xdf, 0x82, 0x9a, 0x6d, 0xd9,
+	0x73, 0x62, 0x4e, 0xdd, 0xa0, 0x5d, 0xe0, 0x82, 0x2a, 0x67, 0x74, 0xdd, 0x00, 0x1d, 0x42, 0x91,
+	0xf8, 0x6f, 0xda, 0xc5, 0x3d, 0xe1, 0xa0, 0x7e, 0xfc, 0xee, 0xe1, 0xca, 0xf0, 0x61, 0xac, 0x31,
+	0xf9, 0xa3, 0xfa, 0x6f, 0x30, 0x03, 0xa2, 0x5d, 0x88, 0x9d, 0x8b, 0xb5, 0x95, 0xb8, 0xb6, 0x5a,
+	0xcc, 0xe9, 0xba, 0xc1, 0x8e, 0x0f, 0xb5, 0xec, 0x02, 0x7a, 0x01, 0xb5, 0x8b, 0x90, 0x98, 0x33,
+	0xcf, 0x72, 0xc2, 0xb6, 0xb0, 0x57, 0x3c, 0xa8, 0x1f, 0x3f, 0xc8, 0x5b, 0x98, 0x84, 0xa4, 0xe7,
+	0x59, 0x0e, 0xae, 0x5e, 0xc4, 0x87, 0x10, 0x1d, 0x41, 0x75, 0x46, 0xac, 0xe8, 0x22, 0x20, 0x61,
+	0xbb, 0x70, 0xfd, 0x42, 0x2f, 0x96, 0xe1, 0x0c, 0xf4, 0x49, 0xa9, 0x7a, 0x5f, 0x2c, 0x4b, 0xfb,
+	0x50, 0x49, 0x44, 0xa8, 0x0d, 0x95, 0x44, 0x98, 0xe4, 0x20, 0x25, 0xa5, 0xdf, 0x17, 0x01, 0xfa,
+	0x74, 0x61, 0x29, 0xd4, 0x9f, 0xb9, 0x0e, 0x7a, 0x02, 0x55, 0x87, 0x2e, 0x2c, 0x1e, 0x46, 0x82,
+	0x64, 0x34, 0xcb, 0xc9, 0x01, 0x88, 0x5c, 0x64, 0x7b, 0x2e, 0xf1, 0x23, 0xf3, 0xf3, 0x90, 0xfa,
+	0x49, 0xde, 0x5a, 0x8c, 0xaf, 0x70, 0xf6, 0x27, 0x21, 0xf5, 0xd1, 0x73, 0x78, 0x27, 0x8e, 0x9d,
+	0x86, 0x66, 0xa6, 0xad, 0xc8, 0xa1, 0x5b, 0xa9, 0xa0, 0x9f, 0x68, 0x3d, 0x81, 0x26, 0x87, 0x58,
+	0xcb, 0x65, 0x40, 0x2d, 0x7b, 0xce, 0x93, 0xd7, 0x3a, 0xde, 0xcf, 0x07, 0xb8, 0xf2, 0x8f, 0x1f,
+	0xe5, 0x04, 0x8a, 0x1b, 0x4e, 0x8e, 0x42, 0x87, 0x50, 0xf1, 0xa8, 0xc3, 0x6d, 0xdd, 0xe7, 0xef,
+	0xf6, 0x28, 0xaf, 0x63, 0x74, 0xe9, 0xdb, 0x64, 0xda, 0x75, 0x03, 0x5c, 0xf6, 0xa8, 0xc3, 0x2c,
+	0xef, 0x02, 0x84, 0x91, 0x15, 0x85, 0xe6, 0xcc, 0xf5, 0x48, 0xbb, 0x1c, 0xbf, 0x19, 0xe7, 0xf4,
+	0x5c, 0x8f, 0xa0, 0x7d, 0x68, 0xda, 0xf4, 0xc2, 0x8f, 0x48, 0xf0, 0x55, 0x8c, 0xa8, 0x70, 0x44,
+	0x23, 0x65, 0x32, 0x90, 0x74, 0x0e, 0x8d, 0xbc, 0x47, 0x68, 0x17, 0x9e, 0xf4, 0x87, 0xa7, 0xb2,
+	0x29, 0x1b, 0x06, 0x1e, 0xca, 0xca, 0x89, 0x39, 0xd1, 0x47, 0x86, 0xaa, 0x68, 0x3d, 0x4d, 0xed,
+	0x8a, 0xf7, 0x50, 0x1d, 0x2a, 0x5d, 0xb5, 0x27, 0x4f, 0x06, 0x63, 0x51, 0x40, 0x0d, 0xa8, 0xe2,
+	0x8e, 0x6a, 0x1a, 0x78, 0xd8, 0x15, 0x0b, 0x68, 0x0b, 0xea, 0x8c, 0x1a, 0x8d, 0xe5, 0xbe, 0xa6,
+	0xf7, 0xc5, 0xa2, 0xb4, 0x84, 0x26, 0x57, 0x1d, 0x44, 0xee, 0xcc, 0xb2, 0xa3, 0xf0, 0x8a, 0xbf,
+	0xc2, 0xad, 0xfe, 0x16, 0xae, 0xfb, 0xcb, 0x8a, 0x9e, 0xe5, 0x88, 0xc9, 0xc3, 0x76, 0x71, 0xaf,
+	0xc8, 0x8a, 0xde, 0xa3, 0x0e, 0x93, 0x85, 0xd2, 0x0c, 0xea, 0x86, 0x65, 0x7f, 0x61, 0x39, 0x44,
+	0xf3, 0x67, 0x14, 0x3d, 0x85, 0xc6, 0x32, 0x26, 0xcd, 0x5c, 0x6f, 0xd5, 0x13, 0x9e, 0x6e, 0x2d,
+	0x08, 0xda, 0x81, 0xaa, 0x6d, 0x45, 0xc4, 0xa1, 0xc1, 0xe5, 0xaa, 0x85, 0x62, 0x9a, 0x95, 0xdc,
+	0x1b, 0x12, 0x84, 0x2e, 0xf5, 0x93, 0xa7, 0x4f, 0x49, 0xe9, 0x37, 0x02, 0x94, 0x0c, 0xd6, 0x82,
+	0x9b, 0xda, 0xf2, 0x25, 0x54, 0x3d, 0x6a, 0x5b, 0x91, 0x9b, 0x54, 0x57, 0xeb, 0xf8, 0x49, 0xfe,
+	0x19, 0xd9, 0xbd, 0xc3, 0x41, 0x02, 0xc0, 0x19, 0x54, 0xfa, 0x18, 0xaa, 0x29, 0x97, 0xa5, 0x52,
+	0x1f, 0x9a, 0x83, 0xa1, 0x22, 0x8f, 0xb5, 0xa1, 0x2e, 0xde, 0x43, 0x00, 0x65, 0x4d, 0x1f, 0x69,
+	0x5d, 0x55, 0x14, 0xd8, 0x13, 0x0c, 0x27, 0x63, 0x4e, 0x14, 0xa4, 0x63, 0x00, 0x4c, 0xc2, 0x0b,
+	0x2f, 0xe2, 0xee, 0x3c, 0xcb, 0xb9, 0x53, 0x3f, 0x16, 0xaf, 0x9a, 0x8d, 0x1d, 0x94, 0x76, 0xa1,
+	0x96, 0xd5, 0x12, 0x12, 0xa1, 0xb8, 0xea, 0x14, 0x76, 0x94, 0x96, 0xd0, 0xe8, 0x93, 0x20, 0x70,
+	0x23, 0x65, 0x6e, 0xf9, 0x0e, 0x61, 0x31, 0xce, 0x69, 0x18, 0xa5, 0x31, 0xb2, 0x33, 0x4b, 0xcd,
+	0x32, 0xa0, 0x9f, 0x13, 0x3b, 0x4a, 0xb2, 0x96, 0x92, 0xe8, 0x31, 0x94, 0x6d, 0x7e, 0x8f, 0xe7,
+	0xac, 0x88, 0x13, 0x8a, 0x25, 0x7a, 0x69, 0x45, 0xf6, 0x3c, 0x24, 0x11, 0x6f, 0x90, 0x22, 0xce,
+	0x68, 0xe9, 0x97, 0xd0, 0xec, 0xbb, 0x11, 0x7b, 0x41, 0x85, 0x2e, 0x16, 0x6e, 0x74, 0x47, 0x93,
+	0x2d, 0x28, 0xb8, 0xd3, 0xe4, 0x89, 0x0a, 0xee, 0x94, 0x85, 0x14, 0x90, 0x59, 0x32, 0xc3, 0xd8,
+	0x91, 0x1b, 0xa7, 0xa1, 0xcb, 0x9f, 0x84, 0x75, 0x56, 0x13, 0x67, 0xb4, 0xb4, 0x0b, 0x95, 0x64,
+	0x5e, 0x31, 0xb3, 0x6c, 0xa6, 0xa5, 0x66, 0xd9, 0x59, 0xfa, 0x3e, 0x80, 0xc1, 0x66, 0x77, 0xe7,
+	0x32, 0x22, 0x21, 0xfa, 0x08, 0xc4, 0x90, 0x04, 0xae, 0xe5, 0xb9, 0x5f, 0x91, 0xa9, 0xc9, 0x87,
+	0x3a, 0x47, 0x37, 0xf0, 0xd6, 0x8a, 0xcf, 0xf1, 0xd2, 0xef, 0x04, 0xd8, 0x35, 0x02, 0xb2, 0xb4,
+	0x02, 0xd2, 0xa3, 0x01, 0x1f, 0xf5, 0xf2, 0x74, 0xca, 0x6d, 0x5a, 0x9e, 0x1c, 0x38, 0x21, 0x3a,
+	0x04, 0x94, 0x8c, 0x5c, 0xfb, 0xcb, 0x25, 0x53, 0xb6, 0x6a, 0x8b, 0x93, 0x7b, 0x58, 0x8c, 0x65,
+	0xca, 0x97, 0x4b, 0x23, 0x96, 0xa0, 0x0f, 0xa1, 0xf5, 0x05, 0x09, 0x7c, 0xe2, 0x99, 0x69, 0x59,
+	0x16, 0x12, 0x6c, 0x33, 0xe6, 0x9f, 0xc5, 0xec, 0x4e, 0x1b, 0x1e, 0x2f, 0x63, 0xcb, 0xe6, 0x8c,
+	0x06, 0xe6, 0x67, 0xcc, 0xb6, 0x69, 0x05, 0x4e, 0x28, 0x59, 0x50, 0x97, 0x67, 0x53, 0x8a, 0x89,
+	0x47, 0xac, 0x90, 0xa0, 0x6f, 0xdf, 0xec, 0xc1, 0x06, 0xfb, 0xcf, 0xa0, 0xe5, 0x2e, 0x58, 0x33,
+	0xc5, 0x0a, 0xdd, 0x29, 0xb7, 0x5f, 0xc4, 0x0d, 0xce, 0xe5, 0x11, 0x6a, 0x53, 0xe9, 0xcf, 0x02,
+	0x3c, 0x48, 0x5b, 0x3e, 0xb9, 0xc9, 0x9b, 0xf1, 0x7f, 0x15, 0x2d, 0xfa, 0x21, 0x34, 0xac, 0xd9,
+	0x94, 0x9a, 0x41, 0x1c, 0x54, 0xb2, 0xf2, 0xb6, 0xf3, 0xc5, 0x9f, 0x8b, 0xf9, 0xe4, 0x1e, 0xae,
+	0x5b, 0x2b, 0xb2, 0xb3, 0x0d, 0x8f, 0xac, 0xc4, 0xdb, 0xd4, 0x29, 0xd3, 0xf5, 0x67, 0x54, 0xfa,
+	0x63, 0x13, 0x50, 0x36, 0xba, 0x3a, 0x97, 0x23, 0x12, 0xbc, 0x71, 0x6d, 0x82, 0x7e, 0x04, 0x65,
+	0x8f, 0x38, 0x96, 0x7d, 0x99, 0x34, 0xd9, 0x07, 0x6b, 0x76, 0xae, 0xe1, 0x0f, 0x07, 0x1c, 0x8c,
+	0x93, 0x4b, 0xa8, 0x07, 0xb5, 0x88, 0x52, 0xcf, 0x9e, 0x5b, 0x6e, 0x1c, 0x50, 0xfd, 0xf8, 0xe0,
+	0x16, 0x0d, 0xe3, 0x14, 0x8f, 0x57, 0x57, 0x77, 0xfe, 0x55, 0x82, 0x72, 0xac, 0x1a, 0xfd, 0x04,
+	0xb6, 0x5c, 0x7f, 0x79, 0x11, 0x99, 0x69, 0x1c, 0xe9, 0x4e, 0x3e, 0x7e, 0x2b, 0xd7, 0x32, 0x09,
+	0x7b, 0x25, 0xdc, 0xe2, 0xaa, 0x56, 0x23, 0xfb, 0x67, 0x20, 0xd2, 0x8b, 0x68, 0x5d, 0x7b, 0xe1,
+	0x6b, 0x6b, 0xdf, 0x8a, 0x75, 0x65, 0xe8, 0x9d, 0xbf, 0x08, 0xd0, 0xc8, 0x23, 0xd0, 0x2b, 0x68,
+	0x66, 0xcf, 0x11, 0x5d, 0x2e, 0x09, 0x0f, 0xa5, 0x75, 0x57, 0x63, 0xe3, 0xcb, 0x25, 0xc1, 0x0d,
+	0x2b, 0x47, 0xb1, 0x5d, 0xe0, 0x84, 0x66, 0x3a, 0x6d, 0xe3, 0x20, 0x6a, 0xb8, 0xee, 0x84, 0xe9,
+	0xd0, 0x0d, 0x51, 0x07, 0x1a, 0xf9, 0x0a, 0x48, 0x0a, 0xe9, 0xfd, 0x4d, 0xa6, 0x73, 0x85, 0x8d,
+	0xeb, 0xcb, 0x15, 0x21, 0xfd, 0x2d, 0x17, 0x10, 0xb7, 0xbb, 0x05, 0xf5, 0xf5, 0x0d, 0xda, 0x84,
+	0x9a, 0x76, 0x2a, 0xf7, 0x55, 0xf3, 0xb5, 0x66, 0x88, 0x02, 0xda, 0x86, 0x07, 0x63, 0x75, 0x34,
+	0x36, 0x27, 0x46, 0x57, 0x1e, 0xab, 0xa6, 0x21, 0x9f, 0x0f, 0x86, 0x32, 0x5b, 0xa7, 0x08, 0x5a,
+	0xf2, 0x64, 0x3c, 0xe4, 0xc2, 0x9e, 0x36, 0x50, 0x47, 0x62, 0x11, 0xb5, 0x00, 0xc6, 0x72, 0x46,
+	0x97, 0xd8, 0x65, 0x43, 0xd3, 0x75, 0xb5, 0x6b, 0xf6, 0x27, 0x0c, 0xc7, 0x15, 0x8f, 0xc4, 0xfb,
+	0x6c, 0x33, 0xf7, 0x34, 0x7c, 0xfa, 0x4a, 0xc6, 0xaa, 0x58, 0x66, 0x3e, 0xa8, 0x9d, 0x89, 0x36,
+	0xe8, 0x9a, 0x83, 0x61, 0x7f, 0x24, 0x56, 0xd0, 0x03, 0xd8, 0x52, 0x4e, 0xf0, 0xf0, 0x54, 0x1d,
+	0x8e, 0x4c, 0x65, 0xa8, 0xf7, 0xb4, 0xbe, 0x58, 0x65, 0xca, 0x15, 0x43, 0x35, 0xb1, 0x6a, 0x0c,
+	0xf1, 0x58, 0xac, 0x31, 0x07, 0x62, 0x47, 0x65, 0xac, 0x9c, 0x68, 0x67, 0xea, 0x48, 0x04, 0xa9,
+	0x54, 0xad, 0x8b, 0xdb, 0x3b, 0x7f, 0xa8, 0x40, 0x2d, 0xab, 0x4a, 0xf4, 0xf3, 0x9b, 0xea, 0xef,
+	0xe5, 0xdb, 0x16, 0xf6, 0x7f, 0x2f, 0xc1, 0x5f, 0xdc, 0x58, 0x82, 0x5f, 0xd3, 0xc0, 0xb5, 0x2a,
+	0xfc, 0xeb, 0xd5, 0x2a, 0x7c, 0xbd, 0xb9, 0x0a, 0xef, 0x6e, 0xef, 0xff, 0x57, 0x88, 0xff, 0x2c,
+	0xde, 0x56, 0x88, 0xcf, 0x60, 0x6f, 0xa2, 0x9f, 0xa9, 0x98, 0xd3, 0x66, 0x5c, 0x0f, 0xe6, 0x60,
+	0x70, 0x76, 0x6a, 0x0e, 0x71, 0x57, 0xc5, 0xac, 0xc6, 0xc4, 0x3a, 0x92, 0xe0, 0xbd, 0x5b, 0x30,
+	0x0d, 0xf4, 0x1e, 0xec, 0x24, 0x22, 0x65, 0x20, 0xeb, 0x7d, 0xf3, 0x95, 0x8c, 0x75, 0x4d, 0xef,
+	0x8f, 0x78, 0x9d, 0x8a, 0x4d, 0xf4, 0x2e, 0xb4, 0x73, 0x96, 0xf8, 0x75, 0xa3, 0x3f, 0x8c, 0xa5,
+	0x2d, 0xf4, 0x11, 0x7c, 0x70, 0xdd, 0x8f, 0x8e, 0xaa, 0x2b, 0x27, 0xa7, 0x32, 0xfe, 0xd4, 0x94,
+	0x7b, 0xdd, 0x04, 0xba, 0x85, 0x3e, 0x84, 0xfd, 0xb7, 0x01, 0x8a, 0xe8, 0x29, 0xec, 0x66, 0xc0,
+	0x4f, 0x55, 0xac, 0xab, 0x03, 0x53, 0x79, 0x65, 0xe4, 0x20, 0xef, 0xa0, 0x7d, 0x78, 0x3f, 0x67,
+	0x76, 0x23, 0x08, 0x5d, 0x01, 0xa5, 0x41, 0xae, 0x81, 0x1e, 0xac, 0x19, 0xdb, 0x08, 0x79, 0xc8,
+	0x32, 0x94, 0x41, 0xb0, 0x3a, 0x50, 0xe5, 0x91, 0x9a, 0x93, 0x3f, 0xba, 0x2d, 0x07, 0x86, 0x8a,
+	0x7b, 0x31, 0xf4, 0x31, 0xeb, 0xf9, 0x44, 0xde, 0x55, 0x3b, 0x93, 0xbe, 0xd9, 0xd1, 0x74, 0x19,
+	0x9f, 0x8b, 0xdb, 0x52, 0xa9, 0x2a, 0x88, 0x20, 0xfd, 0xf6, 0x3e, 0xec, 0x4c, 0x96, 0x1e, 0xb5,
+	0xa6, 0x64, 0xba, 0x61, 0x7d, 0xa9, 0x57, 0xd6, 0xd7, 0x77, 0xd6, 0xbe, 0xdb, 0x6e, 0xbc, 0x77,
+	0x75, 0x8d, 0xe9, 0xd7, 0xd7, 0xd8, 0x8b, 0xb7, 0xd4, 0xb4, 0x71, 0x9d, 0xfd, 0x5d, 0xc8, 0xd6,
+	0xd9, 0x39, 0xd4, 0xae, 0x0e, 0x92, 0x1f, 0xdc, 0xc9, 0xc9, 0x55, 0x6f, 0x58, 0xd1, 0x3c, 0xc4,
+	0x2b, 0x6d, 0x3b, 0xbf, 0x82, 0xe6, 0x9a, 0x6c, 0xd3, 0xb6, 0x11, 0xbe, 0x91, 0x6d, 0xf3, 0x10,
+	0xee, 0xb3, 0x9f, 0xda, 0x69, 0x77, 0xc7, 0xc4, 0xce, 0x3f, 0x84, 0xfc, 0xdc, 0xfc, 0xe9, 0xf5,
+	0x40, 0x7f, 0x7c, 0xd7, 0x1c, 0xde, 0x1c, 0xeb, 0xaf, 0x85, 0xab, 0xc1, 0xbe, 0xde, 0x1c, 0xec,
+	0x37, 0x32, 0xd4, 0x36, 0xc6, 0xfb, 0xfc, 0x4f, 0x02, 0xd4, 0x34, 0xf6, 0xdb, 0x90, 0x63, 0xda,
+	0xf0, 0x30, 0xde, 0x27, 0xe3, 0x73, 0x43, 0x35, 0x27, 0x7a, 0x57, 0xed, 0x69, 0x3a, 0x9f, 0x44,
+	0x55, 0x28, 0x75, 0xe4, 0x11, 0xfb, 0xb6, 0xa9, 0x40, 0xb1, 0xab, 0x9e, 0x89, 0x05, 0xc6, 0x62,
+	0x9b, 0x4f, 0x2c, 0xb2, 0xcf, 0x1d, 0x26, 0x34, 0xcf, 0x4e, 0xc5, 0x12, 0x23, 0xf8, 0x42, 0x3c,
+	0x3b, 0x8d, 0x97, 0x1c, 0x56, 0x95, 0xe1, 0x99, 0x8a, 0xcf, 0xc5, 0x32, 0x13, 0xf5, 0x64, 0x65,
+	0x3c, 0xc4, 0xe7, 0x62, 0x65, 0x6d, 0xff, 0x55, 0xd1, 0x3b, 0xd0, 0x54, 0xf0, 0xcb, 0x17, 0x66,
+	0xc6, 0xaa, 0x31, 0x16, 0xd7, 0x1a, 0xef, 0xcd, 0xb3, 0x53, 0x11, 0x18, 0x8b, 0xeb, 0xce, 0x58,
+	0xf5, 0xe7, 0x0b, 0xa8, 0xb0, 0x8f, 0x20, 0x9f, 0x78, 0x71, 0xdb, 0xc9, 0x3a, 0x1b, 0x12, 0xeb,
+	0x63, 0x14, 0x41, 0x2b, 0x15, 0x8c, 0xc6, 0x72, 0x67, 0xc0, 0xc2, 0x10, 0xa1, 0x91, 0xf2, 0x3a,
+	0xea, 0x58, 0x8e, 0x3f, 0x8e, 0x53, 0x0e, 0x0b, 0xb0, 0x98, 0xbf, 0xa6, 0xc8, 0xbc, 0x83, 0x4b,
+	0xcf, 0x67, 0x20, 0xb2, 0xa1, 0xb0, 0x36, 0xb6, 0x9b, 0x50, 0xd3, 0x87, 0x7a, 0x9c, 0xb4, 0xf8,
+	0xd7, 0xc3, 0x6a, 0xf2, 0x0a, 0x4c, 0xcb, 0xfa, 0x00, 0x8c, 0x4d, 0x25, 0xd3, 0x8c, 0x33, 0x8a,
+	0xb1, 0x6d, 0x3e, 0x31, 0x38, 0xa3, 0xd4, 0xf9, 0xde, 0xeb, 0x8f, 0x1d, 0x9a, 0x3d, 0xfb, 0x21,
+	0x0d, 0x9c, 0xa3, 0xdc, 0x7f, 0xac, 0x5c, 0x7f, 0x16, 0x58, 0x47, 0xfc, 0xdb, 0xe6, 0xc8, 0xa1,
+	0x39, 0xc9, 0x67, 0x65, 0xce, 0xfc, 0xee, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x20, 0x21, 0xc3,
+	0xc1, 0xe0, 0x12, 0x00, 0x00,
 }
diff --git a/src/chromite/api/artifacts.proto b/src/chromite/api/artifacts.proto
index 90b7d81..350dbb8 100644
--- a/src/chromite/api/artifacts.proto
+++ b/src/chromite/api/artifacts.proto
@@ -13,8 +13,58 @@
   string path = 1;
 }
 
+message PrepareForBuildRequest {
+  // The chroot where the sysroot lives.
+  chromiumos.Chroot chroot = 1;
+
+  // The sysroot where the files live.
+  Sysroot sysroot = 2;
+
+  // Information about the artifacts.
+  chromiumos.ArtifactsByService artifact_info = 3;
+
+  // Whether we will proceed even if the build is POINTLESS.
+  bool forced_build_relevance = 4;
+}
+
+message PrepareForBuildResponse {
+  // Whether this artifact requires a build.
+  enum BuildRelevance {
+    UNSPECIFIED = 0;
+    // Build is necessary to generate artifacts.
+    NEEDED = 1;
+    // Defer to other artifacts.  Used primarily for aggregation of artifact
+    // results.
+    UNKNOWN = 2;
+    // Artifacts are already generated.  The build is pointless.
+    POINTLESS = 3;
+  }
+  BuildRelevance build_relevance = 1;
+}
+
+message BundleArtifactsRequest {
+  // The chroot where the sysroot lives.
+  chromiumos.Chroot chroot = 1;
+
+  // The sysroot where the files live.
+  Sysroot sysroot = 2;
+
+  // Artifact information.
+  chromiumos.ArtifactsByService artifact_info = 3;
+
+  // Absolute path to the directory in which artifacts should be dropped.
+  string output_dir = 4;
+}
+
+message BundleArtifactsResponse {
+  // The artifacts that were bundled.
+  chromiumos.UploadedArtifactsByService artifacts = 1;
+}
+
 // 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
 message BundleRequest {
   // The build target to bundle artifacts for.
   // Deprecated. Use sysroot instead.
@@ -89,49 +139,72 @@
     service_chroot_assert: OUTSIDE,
   };
 
+  // Prepare to build artifacts.
+  rpc PrepareForBuild(PrepareForBuildRequest) returns (PrepareForBuildResponse);
+
+  // Bundle artifacts for build.
+  rpc BundleArtifacts(BundleArtifactsRequest) returns (BundleArtifactsResponse);
+
+  // Fetch the pinned guest image locations.
+  rpc FetchPinnedGuestImageUris(PinnedGuestImageUriRequest)
+    returns (PinnedGuestImageUriResponse);
+
+  //
+  // EVERYTHING THAT FOLLOWS THIS LINE IS DEPRECATED.
+  //
+
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with all files needed for Autotest HW testing.
   rpc BundleAutotestFiles(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create the ChromeOS Config JSON payload.
   rpc BundleChromeOSConfig(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with ebuild logs.
   rpc BundleEbuildLogs(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with unsigned firmware images.
   rpc BundleFirmware(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar.xz archive for each image that has been created.
   rpc BundleImageArchives(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Generate zip containing all built images for the target.
   rpc BundleImageZip(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // DEPRECATED for recipes: crbug/1019868: This are being replaced by
   // ToolchainService.Bundle{ArtifactType}()
   // Create Chrome Benchmark AFDO builder artifacts.
   rpc BundleAFDOGenerationArtifacts(BundleChromeAFDORequest)
     returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with all guest images test bundles.
   rpc BundlePinnedGuestImages(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create the simple chrome artifacts.
   rpc BundleSimpleChromeArtifacts(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with all files needed for Tast HW testing.
   rpc BundleTastFiles(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Generate minimal update payloads to be used in HW testing.
   rpc BundleTestUpdatePayloads(BundleRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Create a tar archive with VM memory and disk images.
   rpc BundleVmFiles(BundleVmFilesRequest) returns (BundleResponse);
 
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Generate a CPE report to a file.
   rpc ExportCpeReport(BundleRequest) returns (BundleResponse);
-
-  // Fetch the pinned guest image locations.
-  rpc FetchPinnedGuestImageUris(PinnedGuestImageUriRequest)
-    returns (PinnedGuestImageUriResponse);
 }
diff --git a/src/chromiumos/builder_config.proto b/src/chromiumos/builder_config.proto
index 03a66d8..fe555b7 100644
--- a/src/chromiumos/builder_config.proto
+++ b/src/chromiumos/builder_config.proto
@@ -172,7 +172,9 @@
     // Used to indicate artifact types that should be uploaded by the builder.
     // Must be kept in sync with the dictionary in:
     // https://chromium.googlesource.com/chromiumos/infra/recipes/+/refs/heads/master/recipe_modules/cros_artifacts/api.py
-    // TODO(crbug/1027720): Migrate this to common.proto
+    // TODO(crbug/1034529): Being replaced by common.ArtifactsByService, to
+    // eliminate the need to update cros_artifacts every time an artifact type
+    // is added.
     enum ArtifactTypes {
       ARTIFACT_TYPES_UNSPECIFIED = 0;
       // Indicates wanting a zip file of everything in the image directory.
@@ -236,8 +238,10 @@
     string prebuilts_gs_bucket = 3;
 
     // Google storage bucket to upload artifacts to.
+    // TODO(crbug/1034529): DEPRECATED: see artifacts_info.
     string artifacts_gs_bucket = 4;
 
+    // TODO(crbug/1034529): DEPRECATED: see artifacts_info.
     message PublishInfo {
       reserved 1;
 
@@ -259,6 +263,7 @@
     // There may be more than one set of publishing instructions.
     repeated PublishInfo publish_artifacts = 5;
 
+    // TODO(crbug/1034529): DEPRECATED: see artifacts_info.
     message InputArtifactInfo {
       // Artifact type to seek in these buckets.  Use the first instance of the
       // artifact found in the list of locations.
@@ -271,7 +276,11 @@
     repeated InputArtifactInfo input_artifacts = 6;
 
     // Profile information needed by artifact prepare/bundle endpoints.
+    // TODO(crbug/1034529): DEPRECATED: see artifacts_info.
     ArtifactProfileInfo artifact_profile_info = 7;
+
+    // Artifacts separated by service.
+    ArtifactsByService artifacts_info = 8;
   }
   Artifacts artifacts = 4;
 
diff --git a/src/chromiumos/common.proto b/src/chromiumos/common.proto
index f0a4926..e32b12b 100644
--- a/src/chromiumos/common.proto
+++ b/src/chromiumos/common.proto
@@ -196,23 +196,6 @@
   bytes serialized_proto = 1;
 }
 
-// TODO(crbug/1019868): Consider migrating
-// chromite.api.toolchain.PrepareForToolchainBuildRequest as well.
-message PrepareForBuildResponse {
-  // Does this artifact require a build?
-  enum BuildRelevance {
-    UNSPECIFIED = 0;
-    // Build is necessary to generate artifacts.
-    NEEDED = 1;
-    // Defer to other artifacts.  Used primarily for aggregation of artifact
-    // results.
-    UNKNOWN = 2;
-    // Artifacts are already generated.  The build is pointless.
-    POINTLESS = 3;
-  }
-  BuildRelevance build_relevance = 1;
-}
-
 // TODO(crbug.com/1020615): Drop this from chromite/api/toolchain.proto (and
 // here) once usage has migrated to BuilderConfig.Artifacts.ArtifactType.
 // Meanwhile, keep this in sync with chromite/api/toolchain.proto.  The various
@@ -272,3 +255,170 @@
     AfdoRelease afdo_release = 3;
   }
 }
+
+message ArtifactsByService {
+  message Legacy {
+    // TODO(crbug/1034529): Drop this message.
+    // Legacy artifacts, handled in cros_artifacts.  DO NOT ADD TO THIS.
+    enum ArtifactType {
+      UNSPECIFIED = 0;
+      // Indicates wanting a zip file of everything in the image directory.
+      IMAGE_ZIP = 1;
+      // Indicates wanting update payloads.
+      TEST_UPDATE_PAYLOAD = 2;
+      // Indicates wanting the autotest tarballs.
+      AUTOTEST_FILES = 3;
+      // Indicates wanting a tarball containing private TAST test bundles.
+      TAST_FILES = 4;
+      // Indicates wanting a tarball containing guest images and test bundles.
+      PINNED_GUEST_IMAGES = 5;
+      // Indicates wanting an archive of firmware images built from source.
+      FIRMWARE = 6;
+      // Indicates wanting a tarball of the Ebuilds logs.
+      EBUILD_LOGS = 7;
+      // Indicates wanting an archive of the ChromeOS Config.
+      CHROMEOS_CONFIG = 8;
+      // Indicates wanting the CPE report.
+      CPE_REPORT = 9;
+      // Indicates wanting a tar.xz archive for each image that has been created.
+      IMAGE_ARCHIVES = 10;
+
+      // TODO(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
+      // namespace for all services.  We must reserve numbers until that is
+      // gone.
+      reserved 11 to 23;
+    }
+    // Information about one or more artifacts.
+    message ArtifactInfo {
+      // The ArtifactType.  One or more types to which the rest of the fields
+      // apply.
+      repeated ArtifactType artifact_type = 1;
+
+      // GS location in which to upload artifacts ("gs://" is prepended).
+      // Several fields can be logically specified:
+      //   %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
+      //   %(version)s: Chromeos version (e.g., R81-12813.0.0)
+      //   %(build_id)s: Buildbucket job ID.
+      //   %(target)s: build target name.
+      //   %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
+      //       underscores turned into hyphens.
+      //   %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
+      //   %(artifact_name)s: The name of the artifact being published.
+      repeated string gs_locations = 2;
+
+      // Profile information needed by the artifact handler.
+      ArtifactProfileInfo profile_info = 3;
+    }
+    // Input artifact information
+    repeated ArtifactInfo input_artifacts = 1;
+
+    // Output artifact information
+    repeated ArtifactInfo output_artifacts = 2;
+  }
+  Legacy legacy = 1;
+
+  message Toolchain {
+    // Artifacts handled by ToolchainService.
+    enum ArtifactType {
+      UNSPECIFIED = 0;
+
+      // TODO(crbug/1034529): BuilderConfig.Artifacts.ArtifactTypes is a common
+      // namespace for all services.  We must reserve numbers until that is
+      // gone.
+      reserved 1 to 10;
+
+      // Indicates an unvetted orderfile for Chrome.
+      UNVERIFIED_CHROME_LLVM_ORDERFILE = 11;
+      // Indicates a vetted orderfile for Chrome.
+      VERIFIED_CHROME_LLVM_ORDERFILE = 12;
+      // Indicates a clang-tidy artifact.
+      CHROME_CLANG_WARNINGS_FILE = 13;
+      // Indicates a PGO artifact for the compiler.
+      UNVERIFIED_LLVM_PGO_FILE = 14;
+
+      // Indicates an unvetted AFDO Chrome profile.  (Generated by HW Tests in
+      // the benchmark-afdo-generate builder.)
+      UNVERIFIED_CHROME_BENCHMARK_AFDO_FILE = 15;
+      // Indicates a vetted AFDO Chrome profile.
+      VERIFIED_CHROME_BENCHMARK_AFDO_FILE = 16;
+
+      // Indicates a vetted AFDO Kernel profile.
+      VERIFIED_KERNEL_CWP_AFDO_FILE = 17;
+      // Indicates an unvetted AFDO Kernel CWP profile.
+      UNVERIFIED_KERNEL_CWP_AFDO_FILE = 18;
+
+      // Indicates an unvetted AFDO Chrome CWP profile.
+      UNVERIFIED_CHROME_CWP_AFDO_FILE = 19;
+      // Indicates a vetted AFDO Chrome CWP profile.
+      VERIFIED_CHROME_CWP_AFDO_FILE = 20;
+      // Indicates a vetted AFDO profile for release.
+      VERIFIED_RELEASE_AFDO_FILE = 21;
+
+      // Indicates an unvetted AFDO perf data file (from HW Test).
+      UNVERIFIED_CHROME_BENCHMARK_PERF_FILE = 22;
+      // Indicates an unstripped Chrome binary.
+      CHROME_DEBUG_BINARY = 23;
+    }
+    // Information about one or more artifacts.  This should match the rest of
+    // the ArtifactInfo definitions in ArtifactsByService, other than having
+    // it's own (service-specific) definition for ArtifactType.
+    message ArtifactInfo {
+      // The ArtifactType.  One or more types to which the rest of the fields
+      // apply.
+      repeated ArtifactType artifact_type = 1;
+
+      // GS location in which to upload artifacts ("gs://" is prepended).
+      // Several fields can be logically specified:
+      //   %(kind)s: BuilderConfig.Id.Type with underscores turned into hyphens.
+      //   %(version)s: Chromeos version (e.g., R81-12813.0.0)
+      //   %(build_id)s: Buildbucket job ID.
+      //   %(target)s: build target name.
+      //   %(builder_name)s: The builder name (e.g. octopus-cq), lowercase with
+      //       underscores turned into hyphens.
+      //   %(gs_path)s: "%(builder_name)s/%(version)s-%(build_id)s".
+      //   %(artifact_name)s: The name of the artifact being published.
+      //
+      // At least one location must be specified.  (This will typically be
+      // 'chromeos-image-archive/%(gs_path)s' to match the behavior of
+      // 'artifacts_gs_location'.
+      repeated string gs_locations = 2;
+
+      // Profile information needed by the artifact handler, if any.
+      ArtifactProfileInfo profile_info = 3;
+    }
+    // Input artifact information
+    repeated ArtifactInfo input_artifacts = 1;
+
+    // Output artifact information
+    repeated ArtifactInfo output_artifacts = 2;
+  }
+  Toolchain toolchain = 2;
+}
+
+message UploadedArtifactsByService {
+  // TODO(crbug/1034529): Drop this UploadedArtifactsByService.Legacy.
+  // Legacy artifacts, handled by ArtifactsService.
+  message Legacy {
+    message ArtifactPaths {
+      // The ArtifactType.
+      ArtifactsByService.Legacy.ArtifactType artifact_type = 1;
+
+      // Absolute path to the artifact file.
+      repeated string paths = 2;
+    }
+    repeated ArtifactPaths artifacts = 1;
+  }
+  Legacy legacy = 1;
+
+  message Toolchain {
+    message ArtifactPaths {
+      // The ArtifactType.
+      ArtifactsByService.Toolchain.ArtifactType artifact_type = 1;
+
+      // Absolute path to the artifact file.
+      repeated string paths = 2;
+    }
+    repeated ArtifactPaths artifacts = 1;
+  }
+  Toolchain toolchain = 2;
+}
