beam-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Work logged] (BEAM-4290) ArtifactStagingService that stages to a distributed filesystem
Date Mon, 04 Jun 2018 22:23:01 GMT

     [ https://issues.apache.org/jira/browse/BEAM-4290?focusedWorklogId=108791&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-108791 ]

ASF GitHub Bot logged work on BEAM-4290:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 04/Jun/18 22:22
            Start Date: 04/Jun/18 22:22
    Worklog Time Spent: 10m 
      Work Description: jkff closed pull request #5489: [BEAM-4290] proto changes to support staging_session_token
URL: https://github.com/apache/beam/pull/5489
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/model/job-management/src/main/proto/beam_artifact_api.proto b/model/job-management/src/main/proto/beam_artifact_api.proto
index 387e63fb9b4..b709482ffd2 100644
--- a/model/job-management/src/main/proto/beam_artifact_api.proto
+++ b/model/job-management/src/main/proto/beam_artifact_api.proto
@@ -30,9 +30,6 @@ option java_package = "org.apache.beam.model.jobmanagement.v1";
 option java_outer_classname = "ArtifactApi";
 
 // A service to stage artifacts for use in a Job.
-//
-// RPCs made to an ArtifactStagingService endpoint should include some form of identification for
-// the job as a header.
 service ArtifactStagingService {
   // Stage an artifact to be available during job execution. The first request must contain the
   // name of the artifact. All future requests must contain sequential chunks of the content of
@@ -102,13 +99,20 @@ message ArtifactChunk {
   bytes data = 1;
 }
 
+message PutArtifactMetadata {
+  // (Required) A token for artifact staging session. This token can be obtained
+  // from PrepareJob request in JobService
+  string staging_session_token = 1;
+  // (Required) The Artifact metadata.
+  ArtifactMetadata metadata = 2;
+}
+
 // A request to stage an artifact.
 message PutArtifactRequest {
   // (Required)
   oneof content {
-    // The Artifact metadata. The first message in a PutArtifact call must contain the name
-    // of the artifact.
-    ArtifactMetadata metadata = 1;
+    // The first message in a PutArtifact call must contain this field.
+    PutArtifactMetadata metadata = 1;
 
     // A chunk of the artifact. All messages after the first in a PutArtifact call must contain a
     // chunk.
@@ -124,6 +128,9 @@ message PutArtifactResponse {
 message CommitManifestRequest {
   // (Required) The manifest to commit.
   Manifest manifest = 1;
+  // (Required) A token for artifact staging session. This token can be obtained
+  // from PrepareJob request in JobService
+  string staging_session_token = 2;
 }
 
 // The result of committing a manifest.
diff --git a/model/job-management/src/main/proto/beam_job_api.proto b/model/job-management/src/main/proto/beam_job_api.proto
index a045ad31c98..6da345ab8ec 100644
--- a/model/job-management/src/main/proto/beam_job_api.proto
+++ b/model/job-management/src/main/proto/beam_job_api.proto
@@ -69,12 +69,16 @@ message PrepareJobRequest {
 
 message PrepareJobResponse {
   // (required) The ID used to associate calls made while preparing the job. preparationId is used
-  // to run the job, as well as in other pre-execution APIs such as Artifact staging.
+  // to run the job.
   string preparation_id = 1;
 
   // An endpoint which exposes the Beam Artifact Staging API. Artifacts used by the job should be
   // staged to this endpoint, and will be available during job execution.
   org.apache.beam.model.pipeline.v1.ApiServiceDescriptor artifact_staging_endpoint = 2;
+
+  // (required) Token for the artifact staging. This token also represent an artifact
+  // staging session with the artifact staging service.
+  string staging_session_token = 3;
 }
 
 
diff --git a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/ArtifactServiceStager.java b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/ArtifactServiceStager.java
index 63cc50810c3..66aa9b14afc 100644
--- a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/ArtifactServiceStager.java
+++ b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/ArtifactServiceStager.java
@@ -49,6 +49,7 @@
 import org.apache.beam.model.jobmanagement.v1.ArtifactApi.CommitManifestRequest;
 import org.apache.beam.model.jobmanagement.v1.ArtifactApi.CommitManifestResponse;
 import org.apache.beam.model.jobmanagement.v1.ArtifactApi.Manifest;
+import org.apache.beam.model.jobmanagement.v1.ArtifactApi.PutArtifactMetadata;
 import org.apache.beam.model.jobmanagement.v1.ArtifactApi.PutArtifactRequest;
 import org.apache.beam.model.jobmanagement.v1.ArtifactApi.PutArtifactResponse;
 import org.apache.beam.model.jobmanagement.v1.ArtifactStagingServiceGrpc;
@@ -145,7 +146,10 @@ public ArtifactMetadata get() throws Exception {
       StreamObserver<PutArtifactRequest> requestObserver = stub.putArtifact(responseObserver);
       ArtifactMetadata metadata =
           ArtifactMetadata.newBuilder().setName(file.getStagingName()).build();
-      requestObserver.onNext(PutArtifactRequest.newBuilder().setMetadata(metadata).build());
+      // TODO: Pass a valid StagingSessionToken. The token can be obtained in PrepareJob request.
+      PutArtifactMetadata putMetadata = PutArtifactMetadata.newBuilder().setMetadata(metadata)
+          .setStagingSessionToken("token").build();
+      requestObserver.onNext(PutArtifactRequest.newBuilder().setMetadata(putMetadata).build());
 
       MessageDigest md5Digest = MessageDigest.getInstance("MD5");
       FileChannel channel = new FileInputStream(file.getFile()).getChannel();
diff --git a/runners/core-construction-java/src/test/java/org/apache/beam/runners/core/construction/InMemoryArtifactStagerService.java b/runners/core-construction-java/src/test/java/org/apache/beam/runners/core/construction/InMemoryArtifactStagerService.java
index eaf0e2f9895..17db235e4c3 100644
--- a/runners/core-construction-java/src/test/java/org/apache/beam/runners/core/construction/InMemoryArtifactStagerService.java
+++ b/runners/core-construction-java/src/test/java/org/apache/beam/runners/core/construction/InMemoryArtifactStagerService.java
@@ -94,7 +94,7 @@ public void onNext(PutArtifactRequest value) {
       if (writer == null) {
         checkArgument(value.getContentCase().equals(ContentCase.METADATA));
         writer = new BufferWritingObserver();
-        destination = value.getMetadata();
+        destination = value.getMetadata().getMetadata();
       } else {
         writer.onNext(value);
       }
diff --git a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerService.java b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerService.java
index 6e72737bb84..43c8055369c 100644
--- a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerService.java
+++ b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerService.java
@@ -142,7 +142,7 @@ public void onNext(ArtifactApi.PutArtifactRequest value) {
                         value.getContentCase()))
                 .asRuntimeException();
           }
-          writer = createFile(value.getMetadata());
+          writer = createFile(value.getMetadata().getMetadata());
         } else {
           writer.onNext(value);
         }
diff --git a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/job/ReferenceRunnerJobService.java b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/job/ReferenceRunnerJobService.java
index 274088e8ca2..48681117150 100644
--- a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/job/ReferenceRunnerJobService.java
+++ b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/portable/job/ReferenceRunnerJobService.java
@@ -97,6 +97,9 @@ public void prepare(
           PrepareJobResponse.newBuilder()
               .setPreparationId(preparationId)
               .setArtifactStagingEndpoint(artifactStagingService.getApiServiceDescriptor())
+              // ReferenceRunner uses LocalFileSystemArtifactStagerService which only need local
+              // artifact directory.
+              .setStagingSessionToken(tempDir.toFile().getAbsolutePath())
               .build());
       responseObserver.onCompleted();
     } catch (Exception e) {
diff --git a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerServiceTest.java b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerServiceTest.java
index 2bc8f1285de..83e494c0617 100644
--- a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerServiceTest.java
+++ b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/portable/artifact/LocalFileSystemArtifactStagerServiceTest.java
@@ -88,7 +88,11 @@ public void singleDataPutArtifactSucceeds() throws Exception {
     String name = "my-artifact";
     requestObserver.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
-            .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+            .setMetadata(
+                ArtifactApi.PutArtifactMetadata.newBuilder()
+                    .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+                    .setStagingSessionToken("token")
+                    .build())
             .build());
     requestObserver.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
@@ -119,7 +123,11 @@ public void multiPartPutArtifactSucceeds() throws Exception {
     String name = "my-artifact";
     requestObserver.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
-            .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+            .setMetadata(
+                ArtifactApi.PutArtifactMetadata.newBuilder()
+                    .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+                    .setStagingSessionToken("token")
+                    .build())
             .build());
     requestObserver.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
@@ -245,7 +253,11 @@ public void commitManifestWithMissingArtifactFails() {
         stub.putArtifact(new RecordingStreamObserver<>());
     requests.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
-            .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+            .setMetadata(
+                ArtifactApi.PutArtifactMetadata.newBuilder()
+                    .setMetadata(ArtifactApi.ArtifactMetadata.newBuilder().setName(name).build())
+                    .setStagingSessionToken("token")
+                    .build())
             .build());
     requests.onNext(
         ArtifactApi.PutArtifactRequest.newBuilder()
diff --git a/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/jobsubmission/InMemoryJobService.java b/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/jobsubmission/InMemoryJobService.java
index fde34826e14..774f525a03b 100644
--- a/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/jobsubmission/InMemoryJobService.java
+++ b/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/jobsubmission/InMemoryJobService.java
@@ -114,6 +114,9 @@ public void prepare(
               .newBuilder()
               .setPreparationId(preparationId)
               .setArtifactStagingEndpoint(stagingServiceDescriptor)
+              // TODO: Pass the correct token for staging. The token depends on the
+              // ArtifactStagingService implementation.
+              .setStagingSessionToken("token")
               .build();
       responseObserver.onNext(response);
       responseObserver.onCompleted();
diff --git a/runners/reference/java/src/main/java/org/apache/beam/runners/reference/testing/TestJobService.java b/runners/reference/java/src/main/java/org/apache/beam/runners/reference/testing/TestJobService.java
index c0317143ddc..36112a5a53a 100644
--- a/runners/reference/java/src/main/java/org/apache/beam/runners/reference/testing/TestJobService.java
+++ b/runners/reference/java/src/main/java/org/apache/beam/runners/reference/testing/TestJobService.java
@@ -59,6 +59,7 @@ public void prepare(
         PrepareJobResponse.newBuilder()
             .setPreparationId(preparationId)
             .setArtifactStagingEndpoint(stagingEndpoint)
+            .setStagingSessionToken("TestStagingToken")
             .build());
     responseObserver.onCompleted();
   }
diff --git a/sdks/go/gogradle.lock b/sdks/go/gogradle.lock
index fdf7b1901cf..9ab419c4a8b 100644
--- a/sdks/go/gogradle.lock
+++ b/sdks/go/gogradle.lock
@@ -200,7 +200,7 @@ dependencies:
     - "git@github.com:golang/protobuf.git"
     vcs: "git"
     name: "github.com/golang/protobuf"
-    commit: "bbd03ef6da3a115852eaf24c8a1c46aeb39aa175"
+    commit: "3a3da3a4e26776cc22a79ef46d5d58477532dede"
     transitive: false
   - urls:
     - "https://github.com/golang/snappy.git"
diff --git a/sdks/go/pkg/beam/artifact/materialize_test.go b/sdks/go/pkg/beam/artifact/materialize_test.go
index 144d80346ca..a94947229bb 100644
--- a/sdks/go/pkg/beam/artifact/materialize_test.go
+++ b/sdks/go/pkg/beam/artifact/materialize_test.go
@@ -142,6 +142,10 @@ func stage(ctx context.Context, scl pb.ArtifactStagingServiceClient, t *testing.
 	md5W.Write(data)
 	hash := base64.StdEncoding.EncodeToString(md5W.Sum(nil))
 	md := makeArtifact(key, hash)
+	pmd := &pb.PutArtifactMetadata{
+	  Metadata           : md,
+	  StagingSessionToken: "token",
+	}
 
 	stream, err := scl.PutArtifact(ctx)
 	if err != nil {
@@ -149,7 +153,7 @@ func stage(ctx context.Context, scl pb.ArtifactStagingServiceClient, t *testing.
 	}
 	header := &pb.PutArtifactRequest{
 		Content: &pb.PutArtifactRequest_Metadata{
-			Metadata: md,
+			Metadata: pmd,
 		},
 	}
 	if err := stream.Send(header); err != nil {
diff --git a/sdks/go/pkg/beam/artifact/server_test.go b/sdks/go/pkg/beam/artifact/server_test.go
index 85f54a2385a..b215539d2b4 100644
--- a/sdks/go/pkg/beam/artifact/server_test.go
+++ b/sdks/go/pkg/beam/artifact/server_test.go
@@ -87,7 +87,7 @@ func (s *server) PutArtifact(ps pb.ArtifactStagingService_PutArtifactServer) err
 	if header.GetMetadata() == nil {
 		return fmt.Errorf("expected header as first message: %v", header)
 	}
-	key := header.GetMetadata().Name
+	key := header.GetMetadata().GetMetadata().Name
 
 	// Read chunks
 
diff --git a/sdks/go/pkg/beam/artifact/stage.go b/sdks/go/pkg/beam/artifact/stage.go
index b87b3208d01..333a205cc9a 100644
--- a/sdks/go/pkg/beam/artifact/stage.go
+++ b/sdks/go/pkg/beam/artifact/stage.go
@@ -132,6 +132,11 @@ func Stage(ctx context.Context, client pb.ArtifactStagingServiceClient, key, fil
 		Permissions: uint32(stat.Mode()),
 		Md5:         hash,
 	}
+	// TODO (angoenka): Pass the appropriate staging_session_token. The token can be obtained in PrepareJobReponse.
+	pmd := &pb.PutArtifactMetadata{
+		Metadata:            md,
+		StagingSessionToken: "token",
+	}
 
 	fd, err := os.Open(filename)
 	if err != nil {
@@ -146,7 +151,7 @@ func Stage(ctx context.Context, client pb.ArtifactStagingServiceClient, key, fil
 
 	header := &pb.PutArtifactRequest{
 		Content: &pb.PutArtifactRequest_Metadata{
-			Metadata: md,
+			Metadata: pmd,
 		},
 	}
 	if err := stream.Send(header); err != nil {
diff --git a/sdks/go/pkg/beam/model/fnexecution_v1/beam_fn_api.pb.go b/sdks/go/pkg/beam/model/fnexecution_v1/beam_fn_api.pb.go
index e3147f5e031..7ad7b5ee8be 100644
--- a/sdks/go/pkg/beam/model/fnexecution_v1/beam_fn_api.pb.go
+++ b/sdks/go/pkg/beam/model/fnexecution_v1/beam_fn_api.pb.go
@@ -1,55 +1,14 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: beam_fn_api.proto
 
-/*
-Package fnexecution_v1 is a generated protocol buffer package.
-
-It is generated from these files:
-	beam_fn_api.proto
-	beam_provision_api.proto
-
-It has these top-level messages:
-	Target
-	RemoteGrpcPort
-	InstructionRequest
-	InstructionResponse
-	RegisterRequest
-	RegisterResponse
-	ProcessBundleDescriptor
-	BundleSplit
-	ProcessBundleRequest
-	ProcessBundleResponse
-	ProcessBundleProgressRequest
-	Metrics
-	ProcessBundleProgressResponse
-	ProcessBundleSplitRequest
-	ProcessBundleSplitResponse
-	Elements
-	StateRequest
-	StateResponse
-	StateKey
-	StateGetRequest
-	StateGetResponse
-	StateAppendRequest
-	StateAppendResponse
-	StateClearRequest
-	StateClearResponse
-	LogEntry
-	LogControl
-	GetProvisionInfoRequest
-	GetProvisionInfoResponse
-	ProvisionInfo
-	Resources
-*/
 package fnexecution_v1
 
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
-import org_apache_beam_model_pipeline_v1 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
-import org_apache_beam_model_pipeline_v11 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
-import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
-import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers"
+import pipeline_v1 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
+import wrappers "github.com/golang/protobuf/ptypes/wrappers"
 
 import (
 	context "golang.org/x/net/context"
@@ -115,7 +74,7 @@ func (x LogEntry_Severity_Enum) String() string {
 	return proto.EnumName(LogEntry_Severity_Enum_name, int32(x))
 }
 func (LogEntry_Severity_Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{25, 1, 0}
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{25, 1, 0}
 }
 
 // A representation of an input or output definition on a primitive transform.
@@ -125,13 +84,35 @@ type Target struct {
 	PrimitiveTransformReference string `protobuf:"bytes,1,opt,name=primitive_transform_reference,json=primitiveTransformReference" json:"primitive_transform_reference,omitempty"`
 	// (Required) The local name of an input or output defined on the primitive
 	// transform.
-	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	Name                 string   `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Target) Reset()                    { *m = Target{} }
-func (m *Target) String() string            { return proto.CompactTextString(m) }
-func (*Target) ProtoMessage()               {}
-func (*Target) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *Target) Reset()         { *m = Target{} }
+func (m *Target) String() string { return proto.CompactTextString(m) }
+func (*Target) ProtoMessage()    {}
+func (*Target) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{0}
+}
+func (m *Target) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Target.Unmarshal(m, b)
+}
+func (m *Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Target.Marshal(b, m, deterministic)
+}
+func (dst *Target) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Target.Merge(dst, src)
+}
+func (m *Target) XXX_Size() int {
+	return xxx_messageInfo_Target.Size(m)
+}
+func (m *Target) XXX_DiscardUnknown() {
+	xxx_messageInfo_Target.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Target proto.InternalMessageInfo
 
 func (m *Target) GetPrimitiveTransformReference() string {
 	if m != nil {
@@ -149,13 +130,35 @@ func (m *Target) GetName() string {
 
 // A repeated list of target definitions.
 type Target_List struct {
-	Target []*Target `protobuf:"bytes,1,rep,name=target" json:"target,omitempty"`
+	Target               []*Target `protobuf:"bytes,1,rep,name=target" json:"target,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
 }
 
-func (m *Target_List) Reset()                    { *m = Target_List{} }
-func (m *Target_List) String() string            { return proto.CompactTextString(m) }
-func (*Target_List) ProtoMessage()               {}
-func (*Target_List) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
+func (m *Target_List) Reset()         { *m = Target_List{} }
+func (m *Target_List) String() string { return proto.CompactTextString(m) }
+func (*Target_List) ProtoMessage()    {}
+func (*Target_List) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{0, 0}
+}
+func (m *Target_List) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Target_List.Unmarshal(m, b)
+}
+func (m *Target_List) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Target_List.Marshal(b, m, deterministic)
+}
+func (dst *Target_List) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Target_List.Merge(dst, src)
+}
+func (m *Target_List) XXX_Size() int {
+	return xxx_messageInfo_Target_List.Size(m)
+}
+func (m *Target_List) XXX_DiscardUnknown() {
+	xxx_messageInfo_Target_List.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Target_List proto.InternalMessageInfo
 
 func (m *Target_List) GetTarget() []*Target {
 	if m != nil {
@@ -171,17 +174,39 @@ func (m *Target_List) GetTarget() []*Target {
 type RemoteGrpcPort struct {
 	// (Required) An API descriptor which describes where to
 	// connect to including any authentication that is required.
-	ApiServiceDescriptor *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor `protobuf:"bytes,1,opt,name=api_service_descriptor,json=apiServiceDescriptor" json:"api_service_descriptor,omitempty"`
+	ApiServiceDescriptor *pipeline_v1.ApiServiceDescriptor `protobuf:"bytes,1,opt,name=api_service_descriptor,json=apiServiceDescriptor" json:"api_service_descriptor,omitempty"`
 	// (Required) The ID of the Coder that will be used to encode and decode data sent over this port.
-	CoderId string `protobuf:"bytes,2,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
+	CoderId              string   `protobuf:"bytes,2,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RemoteGrpcPort) Reset()         { *m = RemoteGrpcPort{} }
+func (m *RemoteGrpcPort) String() string { return proto.CompactTextString(m) }
+func (*RemoteGrpcPort) ProtoMessage()    {}
+func (*RemoteGrpcPort) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{1}
+}
+func (m *RemoteGrpcPort) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RemoteGrpcPort.Unmarshal(m, b)
+}
+func (m *RemoteGrpcPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RemoteGrpcPort.Marshal(b, m, deterministic)
+}
+func (dst *RemoteGrpcPort) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RemoteGrpcPort.Merge(dst, src)
+}
+func (m *RemoteGrpcPort) XXX_Size() int {
+	return xxx_messageInfo_RemoteGrpcPort.Size(m)
+}
+func (m *RemoteGrpcPort) XXX_DiscardUnknown() {
+	xxx_messageInfo_RemoteGrpcPort.DiscardUnknown(m)
 }
 
-func (m *RemoteGrpcPort) Reset()                    { *m = RemoteGrpcPort{} }
-func (m *RemoteGrpcPort) String() string            { return proto.CompactTextString(m) }
-func (*RemoteGrpcPort) ProtoMessage()               {}
-func (*RemoteGrpcPort) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+var xxx_messageInfo_RemoteGrpcPort proto.InternalMessageInfo
 
-func (m *RemoteGrpcPort) GetApiServiceDescriptor() *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor {
+func (m *RemoteGrpcPort) GetApiServiceDescriptor() *pipeline_v1.ApiServiceDescriptor {
 	if m != nil {
 		return m.ApiServiceDescriptor
 	}
@@ -210,15 +235,39 @@ type InstructionRequest struct {
 	//	*InstructionRequest_ProcessBundle
 	//	*InstructionRequest_ProcessBundleProgress
 	//	*InstructionRequest_ProcessBundleSplit
-	Request isInstructionRequest_Request `protobuf_oneof:"request"`
+	Request              isInstructionRequest_Request `protobuf_oneof:"request"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
 }
 
-func (m *InstructionRequest) Reset()                    { *m = InstructionRequest{} }
-func (m *InstructionRequest) String() string            { return proto.CompactTextString(m) }
-func (*InstructionRequest) ProtoMessage()               {}
-func (*InstructionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *InstructionRequest) Reset()         { *m = InstructionRequest{} }
+func (m *InstructionRequest) String() string { return proto.CompactTextString(m) }
+func (*InstructionRequest) ProtoMessage()    {}
+func (*InstructionRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{2}
+}
+func (m *InstructionRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InstructionRequest.Unmarshal(m, b)
+}
+func (m *InstructionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InstructionRequest.Marshal(b, m, deterministic)
+}
+func (dst *InstructionRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InstructionRequest.Merge(dst, src)
+}
+func (m *InstructionRequest) XXX_Size() int {
+	return xxx_messageInfo_InstructionRequest.Size(m)
+}
+func (m *InstructionRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_InstructionRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InstructionRequest proto.InternalMessageInfo
 
-type isInstructionRequest_Request interface{ isInstructionRequest_Request() }
+type isInstructionRequest_Request interface {
+	isInstructionRequest_Request()
+}
 
 type InstructionRequest_Register struct {
 	Register *RegisterRequest `protobuf:"bytes,1000,opt,name=register,oneof"`
@@ -367,22 +416,22 @@ func _InstructionRequest_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Request.(type) {
 	case *InstructionRequest_Register:
 		s := proto.Size(x.Register)
-		n += proto.SizeVarint(1000<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionRequest_ProcessBundle:
 		s := proto.Size(x.ProcessBundle)
-		n += proto.SizeVarint(1001<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionRequest_ProcessBundleProgress:
 		s := proto.Size(x.ProcessBundleProgress)
-		n += proto.SizeVarint(1002<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionRequest_ProcessBundleSplit:
 		s := proto.Size(x.ProcessBundleSplit)
-		n += proto.SizeVarint(1003<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -411,15 +460,39 @@ type InstructionResponse struct {
 	//	*InstructionResponse_ProcessBundle
 	//	*InstructionResponse_ProcessBundleProgress
 	//	*InstructionResponse_ProcessBundleSplit
-	Response isInstructionResponse_Response `protobuf_oneof:"response"`
+	Response             isInstructionResponse_Response `protobuf_oneof:"response"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *InstructionResponse) Reset()         { *m = InstructionResponse{} }
+func (m *InstructionResponse) String() string { return proto.CompactTextString(m) }
+func (*InstructionResponse) ProtoMessage()    {}
+func (*InstructionResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{3}
+}
+func (m *InstructionResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InstructionResponse.Unmarshal(m, b)
+}
+func (m *InstructionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InstructionResponse.Marshal(b, m, deterministic)
+}
+func (dst *InstructionResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InstructionResponse.Merge(dst, src)
+}
+func (m *InstructionResponse) XXX_Size() int {
+	return xxx_messageInfo_InstructionResponse.Size(m)
+}
+func (m *InstructionResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_InstructionResponse.DiscardUnknown(m)
 }
 
-func (m *InstructionResponse) Reset()                    { *m = InstructionResponse{} }
-func (m *InstructionResponse) String() string            { return proto.CompactTextString(m) }
-func (*InstructionResponse) ProtoMessage()               {}
-func (*InstructionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+var xxx_messageInfo_InstructionResponse proto.InternalMessageInfo
 
-type isInstructionResponse_Response interface{ isInstructionResponse_Response() }
+type isInstructionResponse_Response interface {
+	isInstructionResponse_Response()
+}
 
 type InstructionResponse_Register struct {
 	Register *RegisterResponse `protobuf:"bytes,1000,opt,name=register,oneof"`
@@ -575,22 +648,22 @@ func _InstructionResponse_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Response.(type) {
 	case *InstructionResponse_Register:
 		s := proto.Size(x.Register)
-		n += proto.SizeVarint(1000<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionResponse_ProcessBundle:
 		s := proto.Size(x.ProcessBundle)
-		n += proto.SizeVarint(1001<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionResponse_ProcessBundleProgress:
 		s := proto.Size(x.ProcessBundleProgress)
-		n += proto.SizeVarint(1002<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *InstructionResponse_ProcessBundleSplit:
 		s := proto.Size(x.ProcessBundleSplit)
-		n += proto.SizeVarint(1003<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -606,12 +679,34 @@ func _InstructionResponse_OneofSizer(msg proto.Message) (n int) {
 type RegisterRequest struct {
 	// (Optional) The set of descriptors used to process bundles.
 	ProcessBundleDescriptor []*ProcessBundleDescriptor `protobuf:"bytes,1,rep,name=process_bundle_descriptor,json=processBundleDescriptor" json:"process_bundle_descriptor,omitempty"`
+	XXX_NoUnkeyedLiteral    struct{}                   `json:"-"`
+	XXX_unrecognized        []byte                     `json:"-"`
+	XXX_sizecache           int32                      `json:"-"`
+}
+
+func (m *RegisterRequest) Reset()         { *m = RegisterRequest{} }
+func (m *RegisterRequest) String() string { return proto.CompactTextString(m) }
+func (*RegisterRequest) ProtoMessage()    {}
+func (*RegisterRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{4}
+}
+func (m *RegisterRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RegisterRequest.Unmarshal(m, b)
+}
+func (m *RegisterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RegisterRequest.Marshal(b, m, deterministic)
+}
+func (dst *RegisterRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RegisterRequest.Merge(dst, src)
+}
+func (m *RegisterRequest) XXX_Size() int {
+	return xxx_messageInfo_RegisterRequest.Size(m)
+}
+func (m *RegisterRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_RegisterRequest.DiscardUnknown(m)
 }
 
-func (m *RegisterRequest) Reset()                    { *m = RegisterRequest{} }
-func (m *RegisterRequest) String() string            { return proto.CompactTextString(m) }
-func (*RegisterRequest) ProtoMessage()               {}
-func (*RegisterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+var xxx_messageInfo_RegisterRequest proto.InternalMessageInfo
 
 func (m *RegisterRequest) GetProcessBundleDescriptor() []*ProcessBundleDescriptor {
 	if m != nil {
@@ -622,12 +717,34 @@ func (m *RegisterRequest) GetProcessBundleDescriptor() []*ProcessBundleDescripto
 
 // Stable
 type RegisterResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *RegisterResponse) Reset()                    { *m = RegisterResponse{} }
-func (m *RegisterResponse) String() string            { return proto.CompactTextString(m) }
-func (*RegisterResponse) ProtoMessage()               {}
-func (*RegisterResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (m *RegisterResponse) Reset()         { *m = RegisterResponse{} }
+func (m *RegisterResponse) String() string { return proto.CompactTextString(m) }
+func (*RegisterResponse) ProtoMessage()    {}
+func (*RegisterResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{5}
+}
+func (m *RegisterResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RegisterResponse.Unmarshal(m, b)
+}
+func (m *RegisterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RegisterResponse.Marshal(b, m, deterministic)
+}
+func (dst *RegisterResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RegisterResponse.Merge(dst, src)
+}
+func (m *RegisterResponse) XXX_Size() int {
+	return xxx_messageInfo_RegisterResponse.Size(m)
+}
+func (m *RegisterResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_RegisterResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RegisterResponse proto.InternalMessageInfo
 
 // Definitions that should be used to construct the bundle processing graph.
 type ProcessBundleDescriptor struct {
@@ -635,25 +752,47 @@ type ProcessBundleDescriptor struct {
 	// refer to this.
 	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
 	// (Required) A map from pipeline-scoped id to PTransform.
-	Transforms map[string]*org_apache_beam_model_pipeline_v1.PTransform `protobuf:"bytes,2,rep,name=transforms" json:"transforms,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Transforms map[string]*pipeline_v1.PTransform `protobuf:"bytes,2,rep,name=transforms" json:"transforms,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// (Required) A map from pipeline-scoped id to PCollection.
-	Pcollections map[string]*org_apache_beam_model_pipeline_v1.PCollection `protobuf:"bytes,3,rep,name=pcollections" json:"pcollections,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Pcollections map[string]*pipeline_v1.PCollection `protobuf:"bytes,3,rep,name=pcollections" json:"pcollections,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// (Required) A map from pipeline-scoped id to WindowingStrategy.
-	WindowingStrategies map[string]*org_apache_beam_model_pipeline_v1.WindowingStrategy `protobuf:"bytes,4,rep,name=windowing_strategies,json=windowingStrategies" json:"windowing_strategies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	WindowingStrategies map[string]*pipeline_v1.WindowingStrategy `protobuf:"bytes,4,rep,name=windowing_strategies,json=windowingStrategies" json:"windowing_strategies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// (Required) A map from pipeline-scoped id to Coder.
-	Coders map[string]*org_apache_beam_model_pipeline_v1.Coder `protobuf:"bytes,5,rep,name=coders" json:"coders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Coders map[string]*pipeline_v1.Coder `protobuf:"bytes,5,rep,name=coders" json:"coders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// (Required) A map from pipeline-scoped id to Environment.
-	Environments map[string]*org_apache_beam_model_pipeline_v1.Environment `protobuf:"bytes,6,rep,name=environments" json:"environments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Environments map[string]*pipeline_v1.Environment `protobuf:"bytes,6,rep,name=environments" json:"environments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// A descriptor describing the end point to use for State API
 	// calls. Required if the Runner intends to send remote references over the
 	// data plane or if any of the transforms rely on user state or side inputs.
-	StateApiServiceDescriptor *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor `protobuf:"bytes,7,opt,name=state_api_service_descriptor,json=stateApiServiceDescriptor" json:"state_api_service_descriptor,omitempty"`
+	StateApiServiceDescriptor *pipeline_v1.ApiServiceDescriptor `protobuf:"bytes,7,opt,name=state_api_service_descriptor,json=stateApiServiceDescriptor" json:"state_api_service_descriptor,omitempty"`
+	XXX_NoUnkeyedLiteral      struct{}                          `json:"-"`
+	XXX_unrecognized          []byte                            `json:"-"`
+	XXX_sizecache             int32                             `json:"-"`
 }
 
-func (m *ProcessBundleDescriptor) Reset()                    { *m = ProcessBundleDescriptor{} }
-func (m *ProcessBundleDescriptor) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleDescriptor) ProtoMessage()               {}
-func (*ProcessBundleDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (m *ProcessBundleDescriptor) Reset()         { *m = ProcessBundleDescriptor{} }
+func (m *ProcessBundleDescriptor) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleDescriptor) ProtoMessage()    {}
+func (*ProcessBundleDescriptor) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{6}
+}
+func (m *ProcessBundleDescriptor) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleDescriptor.Unmarshal(m, b)
+}
+func (m *ProcessBundleDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleDescriptor.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleDescriptor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleDescriptor.Merge(dst, src)
+}
+func (m *ProcessBundleDescriptor) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleDescriptor.Size(m)
+}
+func (m *ProcessBundleDescriptor) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleDescriptor.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleDescriptor proto.InternalMessageInfo
 
 func (m *ProcessBundleDescriptor) GetId() string {
 	if m != nil {
@@ -662,42 +801,42 @@ func (m *ProcessBundleDescriptor) GetId() string {
 	return ""
 }
 
-func (m *ProcessBundleDescriptor) GetTransforms() map[string]*org_apache_beam_model_pipeline_v1.PTransform {
+func (m *ProcessBundleDescriptor) GetTransforms() map[string]*pipeline_v1.PTransform {
 	if m != nil {
 		return m.Transforms
 	}
 	return nil
 }
 
-func (m *ProcessBundleDescriptor) GetPcollections() map[string]*org_apache_beam_model_pipeline_v1.PCollection {
+func (m *ProcessBundleDescriptor) GetPcollections() map[string]*pipeline_v1.PCollection {
 	if m != nil {
 		return m.Pcollections
 	}
 	return nil
 }
 
-func (m *ProcessBundleDescriptor) GetWindowingStrategies() map[string]*org_apache_beam_model_pipeline_v1.WindowingStrategy {
+func (m *ProcessBundleDescriptor) GetWindowingStrategies() map[string]*pipeline_v1.WindowingStrategy {
 	if m != nil {
 		return m.WindowingStrategies
 	}
 	return nil
 }
 
-func (m *ProcessBundleDescriptor) GetCoders() map[string]*org_apache_beam_model_pipeline_v1.Coder {
+func (m *ProcessBundleDescriptor) GetCoders() map[string]*pipeline_v1.Coder {
 	if m != nil {
 		return m.Coders
 	}
 	return nil
 }
 
-func (m *ProcessBundleDescriptor) GetEnvironments() map[string]*org_apache_beam_model_pipeline_v1.Environment {
+func (m *ProcessBundleDescriptor) GetEnvironments() map[string]*pipeline_v1.Environment {
 	if m != nil {
 		return m.Environments
 	}
 	return nil
 }
 
-func (m *ProcessBundleDescriptor) GetStateApiServiceDescriptor() *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor {
+func (m *ProcessBundleDescriptor) GetStateApiServiceDescriptor() *pipeline_v1.ApiServiceDescriptor {
 	if m != nil {
 		return m.StateApiServiceDescriptor
 	}
@@ -719,13 +858,35 @@ type BundleSplit struct {
 	// Root applications that have been removed from the current bundle and
 	// have to be executed in a separate bundle (e.g. in parallel on a different
 	// worker, or after the current bundle completes, etc.)
-	ResidualRoots []*BundleSplit_Application `protobuf:"bytes,2,rep,name=residual_roots,json=residualRoots" json:"residual_roots,omitempty"`
+	ResidualRoots        []*BundleSplit_Application `protobuf:"bytes,2,rep,name=residual_roots,json=residualRoots" json:"residual_roots,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
 }
 
-func (m *BundleSplit) Reset()                    { *m = BundleSplit{} }
-func (m *BundleSplit) String() string            { return proto.CompactTextString(m) }
-func (*BundleSplit) ProtoMessage()               {}
-func (*BundleSplit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (m *BundleSplit) Reset()         { *m = BundleSplit{} }
+func (m *BundleSplit) String() string { return proto.CompactTextString(m) }
+func (*BundleSplit) ProtoMessage()    {}
+func (*BundleSplit) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{7}
+}
+func (m *BundleSplit) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BundleSplit.Unmarshal(m, b)
+}
+func (m *BundleSplit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BundleSplit.Marshal(b, m, deterministic)
+}
+func (dst *BundleSplit) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BundleSplit.Merge(dst, src)
+}
+func (m *BundleSplit) XXX_Size() int {
+	return xxx_messageInfo_BundleSplit.Size(m)
+}
+func (m *BundleSplit) XXX_DiscardUnknown() {
+	xxx_messageInfo_BundleSplit.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BundleSplit proto.InternalMessageInfo
 
 func (m *BundleSplit) GetPrimaryRoots() []*BundleSplit_Application {
 	if m != nil {
@@ -757,13 +918,35 @@ type BundleSplit_Application struct {
 	// represented by invoking this Application and its downstream applications.
 	// The sum of fraction_of_work between all primary_roots and residual_roots
 	// must add up to approximately 1.0.
-	FractionOfWork *google_protobuf3.DoubleValue `protobuf:"bytes,5,opt,name=fraction_of_work,json=fractionOfWork" json:"fraction_of_work,omitempty"`
+	FractionOfWork       *wrappers.DoubleValue `protobuf:"bytes,5,opt,name=fraction_of_work,json=fractionOfWork" json:"fraction_of_work,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *BundleSplit_Application) Reset()         { *m = BundleSplit_Application{} }
+func (m *BundleSplit_Application) String() string { return proto.CompactTextString(m) }
+func (*BundleSplit_Application) ProtoMessage()    {}
+func (*BundleSplit_Application) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{7, 0}
+}
+func (m *BundleSplit_Application) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BundleSplit_Application.Unmarshal(m, b)
+}
+func (m *BundleSplit_Application) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BundleSplit_Application.Marshal(b, m, deterministic)
+}
+func (dst *BundleSplit_Application) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BundleSplit_Application.Merge(dst, src)
+}
+func (m *BundleSplit_Application) XXX_Size() int {
+	return xxx_messageInfo_BundleSplit_Application.Size(m)
+}
+func (m *BundleSplit_Application) XXX_DiscardUnknown() {
+	xxx_messageInfo_BundleSplit_Application.DiscardUnknown(m)
 }
 
-func (m *BundleSplit_Application) Reset()                    { *m = BundleSplit_Application{} }
-func (m *BundleSplit_Application) String() string            { return proto.CompactTextString(m) }
-func (*BundleSplit_Application) ProtoMessage()               {}
-func (*BundleSplit_Application) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} }
+var xxx_messageInfo_BundleSplit_Application proto.InternalMessageInfo
 
 func (m *BundleSplit_Application) GetPtransformId() string {
 	if m != nil {
@@ -793,7 +976,7 @@ func (m *BundleSplit_Application) GetOutputWatermarks() map[string]int64 {
 	return nil
 }
 
-func (m *BundleSplit_Application) GetFractionOfWork() *google_protobuf3.DoubleValue {
+func (m *BundleSplit_Application) GetFractionOfWork() *wrappers.DoubleValue {
 	if m != nil {
 		return m.FractionOfWork
 	}
@@ -808,13 +991,35 @@ type ProcessBundleRequest struct {
 	ProcessBundleDescriptorReference string `protobuf:"bytes,1,opt,name=process_bundle_descriptor_reference,json=processBundleDescriptorReference" json:"process_bundle_descriptor_reference,omitempty"`
 	// (Optional) A list of cache tokens that can be used by an SDK to reuse
 	// cached data returned by the State API across multiple bundles.
-	CacheTokens [][]byte `protobuf:"bytes,2,rep,name=cache_tokens,json=cacheTokens,proto3" json:"cache_tokens,omitempty"`
+	CacheTokens          [][]byte `protobuf:"bytes,2,rep,name=cache_tokens,json=cacheTokens,proto3" json:"cache_tokens,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ProcessBundleRequest) Reset()                    { *m = ProcessBundleRequest{} }
-func (m *ProcessBundleRequest) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleRequest) ProtoMessage()               {}
-func (*ProcessBundleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (m *ProcessBundleRequest) Reset()         { *m = ProcessBundleRequest{} }
+func (m *ProcessBundleRequest) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleRequest) ProtoMessage()    {}
+func (*ProcessBundleRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{8}
+}
+func (m *ProcessBundleRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleRequest.Unmarshal(m, b)
+}
+func (m *ProcessBundleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleRequest.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleRequest.Merge(dst, src)
+}
+func (m *ProcessBundleRequest) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleRequest.Size(m)
+}
+func (m *ProcessBundleRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleRequest proto.InternalMessageInfo
 
 func (m *ProcessBundleRequest) GetProcessBundleDescriptorReference() string {
 	if m != nil {
@@ -837,13 +1042,35 @@ type ProcessBundleResponse struct {
 	Metrics *Metrics `protobuf:"bytes,1,opt,name=metrics" json:"metrics,omitempty"`
 	// (Optional) Specifies that the bundle has been split since the last
 	// ProcessBundleProgressResponse was sent.
-	Split *BundleSplit `protobuf:"bytes,2,opt,name=split" json:"split,omitempty"`
+	Split                *BundleSplit `protobuf:"bytes,2,opt,name=split" json:"split,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
-func (m *ProcessBundleResponse) Reset()                    { *m = ProcessBundleResponse{} }
-func (m *ProcessBundleResponse) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleResponse) ProtoMessage()               {}
-func (*ProcessBundleResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (m *ProcessBundleResponse) Reset()         { *m = ProcessBundleResponse{} }
+func (m *ProcessBundleResponse) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleResponse) ProtoMessage()    {}
+func (*ProcessBundleResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{9}
+}
+func (m *ProcessBundleResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleResponse.Unmarshal(m, b)
+}
+func (m *ProcessBundleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleResponse.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleResponse.Merge(dst, src)
+}
+func (m *ProcessBundleResponse) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleResponse.Size(m)
+}
+func (m *ProcessBundleResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleResponse proto.InternalMessageInfo
 
 func (m *ProcessBundleResponse) GetMetrics() *Metrics {
 	if m != nil {
@@ -865,13 +1092,35 @@ func (m *ProcessBundleResponse) GetSplit() *BundleSplit {
 type ProcessBundleProgressRequest struct {
 	// (Required) A reference to an active process bundle request with the given
 	// instruction id.
-	InstructionReference string `protobuf:"bytes,1,opt,name=instruction_reference,json=instructionReference" json:"instruction_reference,omitempty"`
+	InstructionReference string   `protobuf:"bytes,1,opt,name=instruction_reference,json=instructionReference" json:"instruction_reference,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ProcessBundleProgressRequest) Reset()                    { *m = ProcessBundleProgressRequest{} }
-func (m *ProcessBundleProgressRequest) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleProgressRequest) ProtoMessage()               {}
-func (*ProcessBundleProgressRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (m *ProcessBundleProgressRequest) Reset()         { *m = ProcessBundleProgressRequest{} }
+func (m *ProcessBundleProgressRequest) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleProgressRequest) ProtoMessage()    {}
+func (*ProcessBundleProgressRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{10}
+}
+func (m *ProcessBundleProgressRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleProgressRequest.Unmarshal(m, b)
+}
+func (m *ProcessBundleProgressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleProgressRequest.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleProgressRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleProgressRequest.Merge(dst, src)
+}
+func (m *ProcessBundleProgressRequest) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleProgressRequest.Size(m)
+}
+func (m *ProcessBundleProgressRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleProgressRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleProgressRequest proto.InternalMessageInfo
 
 func (m *ProcessBundleProgressRequest) GetInstructionReference() string {
 	if m != nil {
@@ -881,13 +1130,35 @@ func (m *ProcessBundleProgressRequest) GetInstructionReference() string {
 }
 
 type Metrics struct {
-	Ptransforms map[string]*Metrics_PTransform `protobuf:"bytes,1,rep,name=ptransforms" json:"ptransforms,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Ptransforms          map[string]*Metrics_PTransform `protobuf:"bytes,1,rep,name=ptransforms" json:"ptransforms,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *Metrics) Reset()         { *m = Metrics{} }
+func (m *Metrics) String() string { return proto.CompactTextString(m) }
+func (*Metrics) ProtoMessage()    {}
+func (*Metrics) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11}
+}
+func (m *Metrics) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics.Unmarshal(m, b)
+}
+func (m *Metrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics.Marshal(b, m, deterministic)
+}
+func (dst *Metrics) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics.Merge(dst, src)
+}
+func (m *Metrics) XXX_Size() int {
+	return xxx_messageInfo_Metrics.Size(m)
+}
+func (m *Metrics) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics.DiscardUnknown(m)
 }
 
-func (m *Metrics) Reset()                    { *m = Metrics{} }
-func (m *Metrics) String() string            { return proto.CompactTextString(m) }
-func (*Metrics) ProtoMessage()               {}
-func (*Metrics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+var xxx_messageInfo_Metrics proto.InternalMessageInfo
 
 func (m *Metrics) GetPtransforms() map[string]*Metrics_PTransform {
 	if m != nil {
@@ -911,14 +1182,36 @@ type Metrics_PTransform struct {
 	// while processing a bundle but before it is committed. At bundle commit
 	// time, a Runner needs to also take into account the timers set to compute
 	// the actual watermarks.
-	Watermarks map[string]int64 `protobuf:"bytes,3,rep,name=watermarks" json:"watermarks,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	User       []*Metrics_User  `protobuf:"bytes,4,rep,name=user" json:"user,omitempty"`
+	Watermarks           map[string]int64 `protobuf:"bytes,3,rep,name=watermarks" json:"watermarks,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	User                 []*Metrics_User  `protobuf:"bytes,4,rep,name=user" json:"user,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *Metrics_PTransform) Reset()                    { *m = Metrics_PTransform{} }
-func (m *Metrics_PTransform) String() string            { return proto.CompactTextString(m) }
-func (*Metrics_PTransform) ProtoMessage()               {}
-func (*Metrics_PTransform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 0} }
+func (m *Metrics_PTransform) Reset()         { *m = Metrics_PTransform{} }
+func (m *Metrics_PTransform) String() string { return proto.CompactTextString(m) }
+func (*Metrics_PTransform) ProtoMessage()    {}
+func (*Metrics_PTransform) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 0}
+}
+func (m *Metrics_PTransform) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_PTransform.Unmarshal(m, b)
+}
+func (m *Metrics_PTransform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_PTransform.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_PTransform) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_PTransform.Merge(dst, src)
+}
+func (m *Metrics_PTransform) XXX_Size() int {
+	return xxx_messageInfo_Metrics_PTransform.Size(m)
+}
+func (m *Metrics_PTransform) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_PTransform.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Metrics_PTransform proto.InternalMessageInfo
 
 func (m *Metrics_PTransform) GetProcessedElements() *Metrics_PTransform_ProcessedElements {
 	if m != nil {
@@ -960,16 +1253,36 @@ type Metrics_PTransform_Measured struct {
 	OutputElementCounts map[string]int64 `protobuf:"bytes,2,rep,name=output_element_counts,json=outputElementCounts" json:"output_element_counts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
 	// (Optional) The total time spent so far in processing the elements in
 	// this group, in seconds.
-	TotalTimeSpent float64 `protobuf:"fixed64,3,opt,name=total_time_spent,json=totalTimeSpent" json:"total_time_spent,omitempty"`
+	TotalTimeSpent       float64  `protobuf:"fixed64,3,opt,name=total_time_spent,json=totalTimeSpent" json:"total_time_spent,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Metrics_PTransform_Measured) Reset()         { *m = Metrics_PTransform_Measured{} }
 func (m *Metrics_PTransform_Measured) String() string { return proto.CompactTextString(m) }
 func (*Metrics_PTransform_Measured) ProtoMessage()    {}
 func (*Metrics_PTransform_Measured) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11, 0, 0}
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 0, 0}
+}
+func (m *Metrics_PTransform_Measured) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_PTransform_Measured.Unmarshal(m, b)
+}
+func (m *Metrics_PTransform_Measured) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_PTransform_Measured.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_PTransform_Measured) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_PTransform_Measured.Merge(dst, src)
+}
+func (m *Metrics_PTransform_Measured) XXX_Size() int {
+	return xxx_messageInfo_Metrics_PTransform_Measured.Size(m)
+}
+func (m *Metrics_PTransform_Measured) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_PTransform_Measured.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_Metrics_PTransform_Measured proto.InternalMessageInfo
+
 func (m *Metrics_PTransform_Measured) GetInputElementCounts() map[string]int64 {
 	if m != nil {
 		return m.InputElementCounts
@@ -994,15 +1307,35 @@ func (m *Metrics_PTransform_Measured) GetTotalTimeSpent() float64 {
 // Metrics for fully processed elements.
 type Metrics_PTransform_ProcessedElements struct {
 	// (Required)
-	Measured *Metrics_PTransform_Measured `protobuf:"bytes,1,opt,name=measured" json:"measured,omitempty"`
+	Measured             *Metrics_PTransform_Measured `protobuf:"bytes,1,opt,name=measured" json:"measured,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
 }
 
 func (m *Metrics_PTransform_ProcessedElements) Reset()         { *m = Metrics_PTransform_ProcessedElements{} }
 func (m *Metrics_PTransform_ProcessedElements) String() string { return proto.CompactTextString(m) }
 func (*Metrics_PTransform_ProcessedElements) ProtoMessage()    {}
 func (*Metrics_PTransform_ProcessedElements) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11, 0, 1}
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 0, 1}
+}
+func (m *Metrics_PTransform_ProcessedElements) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_PTransform_ProcessedElements.Unmarshal(m, b)
+}
+func (m *Metrics_PTransform_ProcessedElements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_PTransform_ProcessedElements.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_PTransform_ProcessedElements) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_PTransform_ProcessedElements.Merge(dst, src)
 }
+func (m *Metrics_PTransform_ProcessedElements) XXX_Size() int {
+	return xxx_messageInfo_Metrics_PTransform_ProcessedElements.Size(m)
+}
+func (m *Metrics_PTransform_ProcessedElements) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_PTransform_ProcessedElements.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Metrics_PTransform_ProcessedElements proto.InternalMessageInfo
 
 func (m *Metrics_PTransform_ProcessedElements) GetMeasured() *Metrics_PTransform_Measured {
 	if m != nil {
@@ -1029,15 +1362,35 @@ type Metrics_PTransform_ActiveElements struct {
 	// If not reported, a Runner could extrapolate this from the processed
 	// elements.
 	OutputElementsRemaining map[string]int64 `protobuf:"bytes,3,rep,name=output_elements_remaining,json=outputElementsRemaining" json:"output_elements_remaining,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral    struct{}         `json:"-"`
+	XXX_unrecognized        []byte           `json:"-"`
+	XXX_sizecache           int32            `json:"-"`
 }
 
 func (m *Metrics_PTransform_ActiveElements) Reset()         { *m = Metrics_PTransform_ActiveElements{} }
 func (m *Metrics_PTransform_ActiveElements) String() string { return proto.CompactTextString(m) }
 func (*Metrics_PTransform_ActiveElements) ProtoMessage()    {}
 func (*Metrics_PTransform_ActiveElements) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11, 0, 2}
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 0, 2}
+}
+func (m *Metrics_PTransform_ActiveElements) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_PTransform_ActiveElements.Unmarshal(m, b)
+}
+func (m *Metrics_PTransform_ActiveElements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_PTransform_ActiveElements.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_PTransform_ActiveElements) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_PTransform_ActiveElements.Merge(dst, src)
+}
+func (m *Metrics_PTransform_ActiveElements) XXX_Size() int {
+	return xxx_messageInfo_Metrics_PTransform_ActiveElements.Size(m)
+}
+func (m *Metrics_PTransform_ActiveElements) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_PTransform_ActiveElements.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_Metrics_PTransform_ActiveElements proto.InternalMessageInfo
+
 func (m *Metrics_PTransform_ActiveElements) GetMeasured() *Metrics_PTransform_Measured {
 	if m != nil {
 		return m.Measured
@@ -1069,15 +1422,39 @@ type Metrics_User struct {
 	//	*Metrics_User_CounterData_
 	//	*Metrics_User_DistributionData_
 	//	*Metrics_User_GaugeData_
-	Data isMetrics_User_Data `protobuf_oneof:"data"`
+	Data                 isMetrics_User_Data `protobuf_oneof:"data"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *Metrics_User) Reset()         { *m = Metrics_User{} }
+func (m *Metrics_User) String() string { return proto.CompactTextString(m) }
+func (*Metrics_User) ProtoMessage()    {}
+func (*Metrics_User) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 1}
+}
+func (m *Metrics_User) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_User.Unmarshal(m, b)
+}
+func (m *Metrics_User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_User.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_User) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_User.Merge(dst, src)
+}
+func (m *Metrics_User) XXX_Size() int {
+	return xxx_messageInfo_Metrics_User.Size(m)
+}
+func (m *Metrics_User) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_User.DiscardUnknown(m)
 }
 
-func (m *Metrics_User) Reset()                    { *m = Metrics_User{} }
-func (m *Metrics_User) String() string            { return proto.CompactTextString(m) }
-func (*Metrics_User) ProtoMessage()               {}
-func (*Metrics_User) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} }
+var xxx_messageInfo_Metrics_User proto.InternalMessageInfo
 
-type isMetrics_User_Data interface{ isMetrics_User_Data() }
+type isMetrics_User_Data interface {
+	isMetrics_User_Data()
+}
 
 type Metrics_User_CounterData_ struct {
 	CounterData *Metrics_User_CounterData `protobuf:"bytes,1001,opt,name=counter_data,json=counterData,oneof"`
@@ -1201,17 +1578,17 @@ func _Metrics_User_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Data.(type) {
 	case *Metrics_User_CounterData_:
 		s := proto.Size(x.CounterData)
-		n += proto.SizeVarint(1001<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Metrics_User_DistributionData_:
 		s := proto.Size(x.DistributionData)
-		n += proto.SizeVarint(1002<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Metrics_User_GaugeData_:
 		s := proto.Size(x.GaugeData)
-		n += proto.SizeVarint(1003<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1226,13 +1603,35 @@ type Metrics_User_MetricName struct {
 	// (Required): The namespace of this metric.
 	Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"`
 	// (Required): The name of this metric.
-	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	Name                 string   `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Metrics_User_MetricName) Reset()         { *m = Metrics_User_MetricName{} }
+func (m *Metrics_User_MetricName) String() string { return proto.CompactTextString(m) }
+func (*Metrics_User_MetricName) ProtoMessage()    {}
+func (*Metrics_User_MetricName) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 1, 0}
+}
+func (m *Metrics_User_MetricName) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_User_MetricName.Unmarshal(m, b)
+}
+func (m *Metrics_User_MetricName) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_User_MetricName.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_User_MetricName) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_User_MetricName.Merge(dst, src)
+}
+func (m *Metrics_User_MetricName) XXX_Size() int {
+	return xxx_messageInfo_Metrics_User_MetricName.Size(m)
+}
+func (m *Metrics_User_MetricName) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_User_MetricName.DiscardUnknown(m)
 }
 
-func (m *Metrics_User_MetricName) Reset()                    { *m = Metrics_User_MetricName{} }
-func (m *Metrics_User_MetricName) String() string            { return proto.CompactTextString(m) }
-func (*Metrics_User_MetricName) ProtoMessage()               {}
-func (*Metrics_User_MetricName) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1, 0} }
+var xxx_messageInfo_Metrics_User_MetricName proto.InternalMessageInfo
 
 func (m *Metrics_User_MetricName) GetNamespace() string {
 	if m != nil {
@@ -1250,13 +1649,35 @@ func (m *Metrics_User_MetricName) GetName() string {
 
 // Data associated with a counter metric.
 type Metrics_User_CounterData struct {
-	Value int64 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
+	Value                int64    `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Metrics_User_CounterData) Reset()         { *m = Metrics_User_CounterData{} }
+func (m *Metrics_User_CounterData) String() string { return proto.CompactTextString(m) }
+func (*Metrics_User_CounterData) ProtoMessage()    {}
+func (*Metrics_User_CounterData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 1, 1}
+}
+func (m *Metrics_User_CounterData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_User_CounterData.Unmarshal(m, b)
+}
+func (m *Metrics_User_CounterData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_User_CounterData.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_User_CounterData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_User_CounterData.Merge(dst, src)
+}
+func (m *Metrics_User_CounterData) XXX_Size() int {
+	return xxx_messageInfo_Metrics_User_CounterData.Size(m)
+}
+func (m *Metrics_User_CounterData) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_User_CounterData.DiscardUnknown(m)
 }
 
-func (m *Metrics_User_CounterData) Reset()                    { *m = Metrics_User_CounterData{} }
-func (m *Metrics_User_CounterData) String() string            { return proto.CompactTextString(m) }
-func (*Metrics_User_CounterData) ProtoMessage()               {}
-func (*Metrics_User_CounterData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1, 1} }
+var xxx_messageInfo_Metrics_User_CounterData proto.InternalMessageInfo
 
 func (m *Metrics_User_CounterData) GetValue() int64 {
 	if m != nil {
@@ -1267,18 +1688,38 @@ func (m *Metrics_User_CounterData) GetValue() int64 {
 
 // Data associated with a distribution metric.
 type Metrics_User_DistributionData struct {
-	Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
-	Sum   int64 `protobuf:"varint,2,opt,name=sum" json:"sum,omitempty"`
-	Min   int64 `protobuf:"varint,3,opt,name=min" json:"min,omitempty"`
-	Max   int64 `protobuf:"varint,4,opt,name=max" json:"max,omitempty"`
+	Count                int64    `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
+	Sum                  int64    `protobuf:"varint,2,opt,name=sum" json:"sum,omitempty"`
+	Min                  int64    `protobuf:"varint,3,opt,name=min" json:"min,omitempty"`
+	Max                  int64    `protobuf:"varint,4,opt,name=max" json:"max,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Metrics_User_DistributionData) Reset()         { *m = Metrics_User_DistributionData{} }
 func (m *Metrics_User_DistributionData) String() string { return proto.CompactTextString(m) }
 func (*Metrics_User_DistributionData) ProtoMessage()    {}
 func (*Metrics_User_DistributionData) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11, 1, 2}
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 1, 2}
+}
+func (m *Metrics_User_DistributionData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_User_DistributionData.Unmarshal(m, b)
+}
+func (m *Metrics_User_DistributionData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_User_DistributionData.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_User_DistributionData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_User_DistributionData.Merge(dst, src)
+}
+func (m *Metrics_User_DistributionData) XXX_Size() int {
+	return xxx_messageInfo_Metrics_User_DistributionData.Size(m)
 }
+func (m *Metrics_User_DistributionData) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_User_DistributionData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Metrics_User_DistributionData proto.InternalMessageInfo
 
 func (m *Metrics_User_DistributionData) GetCount() int64 {
 	if m != nil {
@@ -1310,14 +1751,36 @@ func (m *Metrics_User_DistributionData) GetMax() int64 {
 
 // Data associated with a Gauge metric.
 type Metrics_User_GaugeData struct {
-	Value     int64                       `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
-	Timestamp *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	Value                int64                `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
+	Timestamp            *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *Metrics_User_GaugeData) Reset()         { *m = Metrics_User_GaugeData{} }
+func (m *Metrics_User_GaugeData) String() string { return proto.CompactTextString(m) }
+func (*Metrics_User_GaugeData) ProtoMessage()    {}
+func (*Metrics_User_GaugeData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{11, 1, 3}
+}
+func (m *Metrics_User_GaugeData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Metrics_User_GaugeData.Unmarshal(m, b)
+}
+func (m *Metrics_User_GaugeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Metrics_User_GaugeData.Marshal(b, m, deterministic)
+}
+func (dst *Metrics_User_GaugeData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metrics_User_GaugeData.Merge(dst, src)
+}
+func (m *Metrics_User_GaugeData) XXX_Size() int {
+	return xxx_messageInfo_Metrics_User_GaugeData.Size(m)
+}
+func (m *Metrics_User_GaugeData) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metrics_User_GaugeData.DiscardUnknown(m)
 }
 
-func (m *Metrics_User_GaugeData) Reset()                    { *m = Metrics_User_GaugeData{} }
-func (m *Metrics_User_GaugeData) String() string            { return proto.CompactTextString(m) }
-func (*Metrics_User_GaugeData) ProtoMessage()               {}
-func (*Metrics_User_GaugeData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1, 3} }
+var xxx_messageInfo_Metrics_User_GaugeData proto.InternalMessageInfo
 
 func (m *Metrics_User_GaugeData) GetValue() int64 {
 	if m != nil {
@@ -1326,7 +1789,7 @@ func (m *Metrics_User_GaugeData) GetValue() int64 {
 	return 0
 }
 
-func (m *Metrics_User_GaugeData) GetTimestamp() *google_protobuf2.Timestamp {
+func (m *Metrics_User_GaugeData) GetTimestamp() *timestamp.Timestamp {
 	if m != nil {
 		return m.Timestamp
 	}
@@ -1338,13 +1801,35 @@ type ProcessBundleProgressResponse struct {
 	Metrics *Metrics `protobuf:"bytes,1,opt,name=metrics" json:"metrics,omitempty"`
 	// (Optional) Specifies that the bundle has been split since the last
 	// ProcessBundleProgressResponse was sent.
-	Split *BundleSplit `protobuf:"bytes,2,opt,name=split" json:"split,omitempty"`
+	Split                *BundleSplit `protobuf:"bytes,2,opt,name=split" json:"split,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
-func (m *ProcessBundleProgressResponse) Reset()                    { *m = ProcessBundleProgressResponse{} }
-func (m *ProcessBundleProgressResponse) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleProgressResponse) ProtoMessage()               {}
-func (*ProcessBundleProgressResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (m *ProcessBundleProgressResponse) Reset()         { *m = ProcessBundleProgressResponse{} }
+func (m *ProcessBundleProgressResponse) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleProgressResponse) ProtoMessage()    {}
+func (*ProcessBundleProgressResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{12}
+}
+func (m *ProcessBundleProgressResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleProgressResponse.Unmarshal(m, b)
+}
+func (m *ProcessBundleProgressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleProgressResponse.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleProgressResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleProgressResponse.Merge(dst, src)
+}
+func (m *ProcessBundleProgressResponse) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleProgressResponse.Size(m)
+}
+func (m *ProcessBundleProgressResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleProgressResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleProgressResponse proto.InternalMessageInfo
 
 func (m *ProcessBundleProgressResponse) GetMetrics() *Metrics {
 	if m != nil {
@@ -1375,13 +1860,35 @@ type ProcessBundleSplitRequest struct {
 	// This is a hint and the value is approximate.
 	//
 	// The value is relative to the current scope of work of the bundle.
-	FractionOfRemainder *google_protobuf3.DoubleValue `protobuf:"bytes,2,opt,name=fraction_of_remainder,json=fractionOfRemainder" json:"fraction_of_remainder,omitempty"`
+	FractionOfRemainder  *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=fraction_of_remainder,json=fractionOfRemainder" json:"fraction_of_remainder,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
 }
 
-func (m *ProcessBundleSplitRequest) Reset()                    { *m = ProcessBundleSplitRequest{} }
-func (m *ProcessBundleSplitRequest) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleSplitRequest) ProtoMessage()               {}
-func (*ProcessBundleSplitRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (m *ProcessBundleSplitRequest) Reset()         { *m = ProcessBundleSplitRequest{} }
+func (m *ProcessBundleSplitRequest) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleSplitRequest) ProtoMessage()    {}
+func (*ProcessBundleSplitRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{13}
+}
+func (m *ProcessBundleSplitRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleSplitRequest.Unmarshal(m, b)
+}
+func (m *ProcessBundleSplitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleSplitRequest.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleSplitRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleSplitRequest.Merge(dst, src)
+}
+func (m *ProcessBundleSplitRequest) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleSplitRequest.Size(m)
+}
+func (m *ProcessBundleSplitRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleSplitRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ProcessBundleSplitRequest proto.InternalMessageInfo
 
 func (m *ProcessBundleSplitRequest) GetInstructionReference() string {
 	if m != nil {
@@ -1390,7 +1897,7 @@ func (m *ProcessBundleSplitRequest) GetInstructionReference() string {
 	return ""
 }
 
-func (m *ProcessBundleSplitRequest) GetFractionOfRemainder() *google_protobuf3.DoubleValue {
+func (m *ProcessBundleSplitRequest) GetFractionOfRemainder() *wrappers.DoubleValue {
 	if m != nil {
 		return m.FractionOfRemainder
 	}
@@ -1398,24 +1905,68 @@ func (m *ProcessBundleSplitRequest) GetFractionOfRemainder() *google_protobuf3.D
 }
 
 type ProcessBundleSplitResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ProcessBundleSplitResponse) Reset()         { *m = ProcessBundleSplitResponse{} }
+func (m *ProcessBundleSplitResponse) String() string { return proto.CompactTextString(m) }
+func (*ProcessBundleSplitResponse) ProtoMessage()    {}
+func (*ProcessBundleSplitResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{14}
+}
+func (m *ProcessBundleSplitResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProcessBundleSplitResponse.Unmarshal(m, b)
+}
+func (m *ProcessBundleSplitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProcessBundleSplitResponse.Marshal(b, m, deterministic)
+}
+func (dst *ProcessBundleSplitResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProcessBundleSplitResponse.Merge(dst, src)
+}
+func (m *ProcessBundleSplitResponse) XXX_Size() int {
+	return xxx_messageInfo_ProcessBundleSplitResponse.Size(m)
+}
+func (m *ProcessBundleSplitResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProcessBundleSplitResponse.DiscardUnknown(m)
 }
 
-func (m *ProcessBundleSplitResponse) Reset()                    { *m = ProcessBundleSplitResponse{} }
-func (m *ProcessBundleSplitResponse) String() string            { return proto.CompactTextString(m) }
-func (*ProcessBundleSplitResponse) ProtoMessage()               {}
-func (*ProcessBundleSplitResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+var xxx_messageInfo_ProcessBundleSplitResponse proto.InternalMessageInfo
 
 // Messages used to represent logical byte streams.
 // Stable
 type Elements struct {
 	// (Required) A list containing parts of logical byte streams.
-	Data []*Elements_Data `protobuf:"bytes,1,rep,name=data" json:"data,omitempty"`
+	Data                 []*Elements_Data `protobuf:"bytes,1,rep,name=data" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *Elements) Reset()                    { *m = Elements{} }
-func (m *Elements) String() string            { return proto.CompactTextString(m) }
-func (*Elements) ProtoMessage()               {}
-func (*Elements) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (m *Elements) Reset()         { *m = Elements{} }
+func (m *Elements) String() string { return proto.CompactTextString(m) }
+func (*Elements) ProtoMessage()    {}
+func (*Elements) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{15}
+}
+func (m *Elements) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Elements.Unmarshal(m, b)
+}
+func (m *Elements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Elements.Marshal(b, m, deterministic)
+}
+func (dst *Elements) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Elements.Merge(dst, src)
+}
+func (m *Elements) XXX_Size() int {
+	return xxx_messageInfo_Elements.Size(m)
+}
+func (m *Elements) XXX_DiscardUnknown() {
+	xxx_messageInfo_Elements.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Elements proto.InternalMessageInfo
 
 func (m *Elements) GetData() []*Elements_Data {
 	if m != nil {
@@ -1446,13 +1997,35 @@ type Elements_Data struct {
 	//
 	// An empty data block represents the end of stream for the given
 	// instruction and target.
-	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Elements_Data) Reset()         { *m = Elements_Data{} }
+func (m *Elements_Data) String() string { return proto.CompactTextString(m) }
+func (*Elements_Data) ProtoMessage()    {}
+func (*Elements_Data) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{15, 0}
+}
+func (m *Elements_Data) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Elements_Data.Unmarshal(m, b)
+}
+func (m *Elements_Data) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Elements_Data.Marshal(b, m, deterministic)
+}
+func (dst *Elements_Data) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Elements_Data.Merge(dst, src)
+}
+func (m *Elements_Data) XXX_Size() int {
+	return xxx_messageInfo_Elements_Data.Size(m)
+}
+func (m *Elements_Data) XXX_DiscardUnknown() {
+	xxx_messageInfo_Elements_Data.DiscardUnknown(m)
 }
 
-func (m *Elements_Data) Reset()                    { *m = Elements_Data{} }
-func (m *Elements_Data) String() string            { return proto.CompactTextString(m) }
-func (*Elements_Data) ProtoMessage()               {}
-func (*Elements_Data) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 0} }
+var xxx_messageInfo_Elements_Data proto.InternalMessageInfo
 
 func (m *Elements_Data) GetInstructionReference() string {
 	if m != nil {
@@ -1492,15 +2065,39 @@ type StateRequest struct {
 	//	*StateRequest_Get
 	//	*StateRequest_Append
 	//	*StateRequest_Clear
-	Request isStateRequest_Request `protobuf_oneof:"request"`
+	Request              isStateRequest_Request `protobuf_oneof:"request"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
 }
 
-func (m *StateRequest) Reset()                    { *m = StateRequest{} }
-func (m *StateRequest) String() string            { return proto.CompactTextString(m) }
-func (*StateRequest) ProtoMessage()               {}
-func (*StateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (m *StateRequest) Reset()         { *m = StateRequest{} }
+func (m *StateRequest) String() string { return proto.CompactTextString(m) }
+func (*StateRequest) ProtoMessage()    {}
+func (*StateRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{16}
+}
+func (m *StateRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateRequest.Unmarshal(m, b)
+}
+func (m *StateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateRequest.Marshal(b, m, deterministic)
+}
+func (dst *StateRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateRequest.Merge(dst, src)
+}
+func (m *StateRequest) XXX_Size() int {
+	return xxx_messageInfo_StateRequest.Size(m)
+}
+func (m *StateRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateRequest.DiscardUnknown(m)
+}
 
-type isStateRequest_Request interface{ isStateRequest_Request() }
+var xxx_messageInfo_StateRequest proto.InternalMessageInfo
+
+type isStateRequest_Request interface {
+	isStateRequest_Request()
+}
 
 type StateRequest_Get struct {
 	Get *StateGetRequest `protobuf:"bytes,1000,opt,name=get,oneof"`
@@ -1638,17 +2235,17 @@ func _StateRequest_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Request.(type) {
 	case *StateRequest_Get:
 		s := proto.Size(x.Get)
-		n += proto.SizeVarint(1000<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateRequest_Append:
 		s := proto.Size(x.Append)
-		n += proto.SizeVarint(1001<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateRequest_Clear:
 		s := proto.Size(x.Clear)
-		n += proto.SizeVarint(1002<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1676,15 +2273,39 @@ type StateResponse struct {
 	//	*StateResponse_Get
 	//	*StateResponse_Append
 	//	*StateResponse_Clear
-	Response isStateResponse_Response `protobuf_oneof:"response"`
+	Response             isStateResponse_Response `protobuf_oneof:"response"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *StateResponse) Reset()         { *m = StateResponse{} }
+func (m *StateResponse) String() string { return proto.CompactTextString(m) }
+func (*StateResponse) ProtoMessage()    {}
+func (*StateResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{17}
+}
+func (m *StateResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateResponse.Unmarshal(m, b)
+}
+func (m *StateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateResponse.Marshal(b, m, deterministic)
+}
+func (dst *StateResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateResponse.Merge(dst, src)
+}
+func (m *StateResponse) XXX_Size() int {
+	return xxx_messageInfo_StateResponse.Size(m)
+}
+func (m *StateResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateResponse.DiscardUnknown(m)
 }
 
-func (m *StateResponse) Reset()                    { *m = StateResponse{} }
-func (m *StateResponse) String() string            { return proto.CompactTextString(m) }
-func (*StateResponse) ProtoMessage()               {}
-func (*StateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+var xxx_messageInfo_StateResponse proto.InternalMessageInfo
 
-type isStateResponse_Response interface{ isStateResponse_Response() }
+type isStateResponse_Response interface {
+	isStateResponse_Response()
+}
 
 type StateResponse_Get struct {
 	Get *StateGetResponse `protobuf:"bytes,1000,opt,name=get,oneof"`
@@ -1822,17 +2443,17 @@ func _StateResponse_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Response.(type) {
 	case *StateResponse_Get:
 		s := proto.Size(x.Get)
-		n += proto.SizeVarint(1000<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateResponse_Append:
 		s := proto.Size(x.Append)
-		n += proto.SizeVarint(1001<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateResponse_Clear:
 		s := proto.Size(x.Clear)
-		n += proto.SizeVarint(1002<<3 | proto.WireBytes)
+		n += 2 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1849,15 +2470,39 @@ type StateKey struct {
 	//	*StateKey_Runner_
 	//	*StateKey_MultimapSideInput_
 	//	*StateKey_BagUserState_
-	Type isStateKey_Type `protobuf_oneof:"type"`
+	Type                 isStateKey_Type `protobuf_oneof:"type"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *StateKey) Reset()         { *m = StateKey{} }
+func (m *StateKey) String() string { return proto.CompactTextString(m) }
+func (*StateKey) ProtoMessage()    {}
+func (*StateKey) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{18}
+}
+func (m *StateKey) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateKey.Unmarshal(m, b)
+}
+func (m *StateKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateKey.Marshal(b, m, deterministic)
+}
+func (dst *StateKey) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateKey.Merge(dst, src)
+}
+func (m *StateKey) XXX_Size() int {
+	return xxx_messageInfo_StateKey.Size(m)
+}
+func (m *StateKey) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateKey.DiscardUnknown(m)
 }
 
-func (m *StateKey) Reset()                    { *m = StateKey{} }
-func (m *StateKey) String() string            { return proto.CompactTextString(m) }
-func (*StateKey) ProtoMessage()               {}
-func (*StateKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+var xxx_messageInfo_StateKey proto.InternalMessageInfo
 
-type isStateKey_Type interface{ isStateKey_Type() }
+type isStateKey_Type interface {
+	isStateKey_Type()
+}
 
 type StateKey_Runner_ struct {
 	Runner *StateKey_Runner `protobuf:"bytes,1,opt,name=runner,oneof"`
@@ -1974,17 +2619,17 @@ func _StateKey_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Type.(type) {
 	case *StateKey_Runner_:
 		s := proto.Size(x.Runner)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateKey_MultimapSideInput_:
 		s := proto.Size(x.MultimapSideInput)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateKey_BagUserState_:
 		s := proto.Size(x.BagUserState)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1997,13 +2642,35 @@ func _StateKey_OneofSizer(msg proto.Message) (n int) {
 type StateKey_Runner struct {
 	// (Required) Opaque information supplied by the runner. Used to support
 	// remote references.
-	Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Key                  []byte   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateKey_Runner) Reset()         { *m = StateKey_Runner{} }
+func (m *StateKey_Runner) String() string { return proto.CompactTextString(m) }
+func (*StateKey_Runner) ProtoMessage()    {}
+func (*StateKey_Runner) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{18, 0}
+}
+func (m *StateKey_Runner) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateKey_Runner.Unmarshal(m, b)
+}
+func (m *StateKey_Runner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateKey_Runner.Marshal(b, m, deterministic)
+}
+func (dst *StateKey_Runner) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateKey_Runner.Merge(dst, src)
+}
+func (m *StateKey_Runner) XXX_Size() int {
+	return xxx_messageInfo_StateKey_Runner.Size(m)
+}
+func (m *StateKey_Runner) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateKey_Runner.DiscardUnknown(m)
 }
 
-func (m *StateKey_Runner) Reset()                    { *m = StateKey_Runner{} }
-func (m *StateKey_Runner) String() string            { return proto.CompactTextString(m) }
-func (*StateKey_Runner) ProtoMessage()               {}
-func (*StateKey_Runner) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18, 0} }
+var xxx_messageInfo_StateKey_Runner proto.InternalMessageInfo
 
 func (m *StateKey_Runner) GetKey() []byte {
 	if m != nil {
@@ -2021,13 +2688,35 @@ type StateKey_MultimapSideInput struct {
 	// window into the side input windows domain) encoded in a nested context.
 	Window []byte `protobuf:"bytes,3,opt,name=window,proto3" json:"window,omitempty"`
 	// (Required) The key encoded in a nested context.
-	Key []byte `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
+	Key                  []byte   `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateKey_MultimapSideInput) Reset()         { *m = StateKey_MultimapSideInput{} }
+func (m *StateKey_MultimapSideInput) String() string { return proto.CompactTextString(m) }
+func (*StateKey_MultimapSideInput) ProtoMessage()    {}
+func (*StateKey_MultimapSideInput) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{18, 1}
+}
+func (m *StateKey_MultimapSideInput) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateKey_MultimapSideInput.Unmarshal(m, b)
+}
+func (m *StateKey_MultimapSideInput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateKey_MultimapSideInput.Marshal(b, m, deterministic)
+}
+func (dst *StateKey_MultimapSideInput) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateKey_MultimapSideInput.Merge(dst, src)
+}
+func (m *StateKey_MultimapSideInput) XXX_Size() int {
+	return xxx_messageInfo_StateKey_MultimapSideInput.Size(m)
+}
+func (m *StateKey_MultimapSideInput) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateKey_MultimapSideInput.DiscardUnknown(m)
 }
 
-func (m *StateKey_MultimapSideInput) Reset()                    { *m = StateKey_MultimapSideInput{} }
-func (m *StateKey_MultimapSideInput) String() string            { return proto.CompactTextString(m) }
-func (*StateKey_MultimapSideInput) ProtoMessage()               {}
-func (*StateKey_MultimapSideInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18, 1} }
+var xxx_messageInfo_StateKey_MultimapSideInput proto.InternalMessageInfo
 
 func (m *StateKey_MultimapSideInput) GetPtransformId() string {
 	if m != nil {
@@ -2066,13 +2755,35 @@ type StateKey_BagUserState struct {
 	Window []byte `protobuf:"bytes,3,opt,name=window,proto3" json:"window,omitempty"`
 	// (Required) The key of the currently executing element encoded in a
 	// nested context.
-	Key []byte `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
+	Key                  []byte   `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateKey_BagUserState) Reset()         { *m = StateKey_BagUserState{} }
+func (m *StateKey_BagUserState) String() string { return proto.CompactTextString(m) }
+func (*StateKey_BagUserState) ProtoMessage()    {}
+func (*StateKey_BagUserState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{18, 2}
+}
+func (m *StateKey_BagUserState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateKey_BagUserState.Unmarshal(m, b)
+}
+func (m *StateKey_BagUserState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateKey_BagUserState.Marshal(b, m, deterministic)
+}
+func (dst *StateKey_BagUserState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateKey_BagUserState.Merge(dst, src)
+}
+func (m *StateKey_BagUserState) XXX_Size() int {
+	return xxx_messageInfo_StateKey_BagUserState.Size(m)
+}
+func (m *StateKey_BagUserState) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateKey_BagUserState.DiscardUnknown(m)
 }
 
-func (m *StateKey_BagUserState) Reset()                    { *m = StateKey_BagUserState{} }
-func (m *StateKey_BagUserState) String() string            { return proto.CompactTextString(m) }
-func (*StateKey_BagUserState) ProtoMessage()               {}
-func (*StateKey_BagUserState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18, 2} }
+var xxx_messageInfo_StateKey_BagUserState proto.InternalMessageInfo
 
 func (m *StateKey_BagUserState) GetPtransformId() string {
 	if m != nil {
@@ -2109,13 +2820,35 @@ type StateGetRequest struct {
 	//
 	// If unspecified, signals to the runner that the response should start
 	// from the beginning of the logical continuable stream.
-	ContinuationToken []byte `protobuf:"bytes,1,opt,name=continuation_token,json=continuationToken,proto3" json:"continuation_token,omitempty"`
+	ContinuationToken    []byte   `protobuf:"bytes,1,opt,name=continuation_token,json=continuationToken,proto3" json:"continuation_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateGetRequest) Reset()         { *m = StateGetRequest{} }
+func (m *StateGetRequest) String() string { return proto.CompactTextString(m) }
+func (*StateGetRequest) ProtoMessage()    {}
+func (*StateGetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{19}
+}
+func (m *StateGetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateGetRequest.Unmarshal(m, b)
+}
+func (m *StateGetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateGetRequest.Marshal(b, m, deterministic)
+}
+func (dst *StateGetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateGetRequest.Merge(dst, src)
+}
+func (m *StateGetRequest) XXX_Size() int {
+	return xxx_messageInfo_StateGetRequest.Size(m)
+}
+func (m *StateGetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateGetRequest.DiscardUnknown(m)
 }
 
-func (m *StateGetRequest) Reset()                    { *m = StateGetRequest{} }
-func (m *StateGetRequest) String() string            { return proto.CompactTextString(m) }
-func (*StateGetRequest) ProtoMessage()               {}
-func (*StateGetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+var xxx_messageInfo_StateGetRequest proto.InternalMessageInfo
 
 func (m *StateGetRequest) GetContinuationToken() []byte {
 	if m != nil {
@@ -2134,13 +2867,35 @@ type StateGetResponse struct {
 	// Represents a part of a logical byte stream. Elements within
 	// the logical byte stream are encoded in the nested context and
 	// concatenated together.
-	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *StateGetResponse) Reset()                    { *m = StateGetResponse{} }
-func (m *StateGetResponse) String() string            { return proto.CompactTextString(m) }
-func (*StateGetResponse) ProtoMessage()               {}
-func (*StateGetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (m *StateGetResponse) Reset()         { *m = StateGetResponse{} }
+func (m *StateGetResponse) String() string { return proto.CompactTextString(m) }
+func (*StateGetResponse) ProtoMessage()    {}
+func (*StateGetResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{20}
+}
+func (m *StateGetResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateGetResponse.Unmarshal(m, b)
+}
+func (m *StateGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateGetResponse.Marshal(b, m, deterministic)
+}
+func (dst *StateGetResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateGetResponse.Merge(dst, src)
+}
+func (m *StateGetResponse) XXX_Size() int {
+	return xxx_messageInfo_StateGetResponse.Size(m)
+}
+func (m *StateGetResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateGetResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StateGetResponse proto.InternalMessageInfo
 
 func (m *StateGetResponse) GetContinuationToken() []byte {
 	if m != nil {
@@ -2161,13 +2916,35 @@ type StateAppendRequest struct {
 	// Represents a part of a logical byte stream. Elements within
 	// the logical byte stream are encoded in the nested context and
 	// multiple append requests are concatenated together.
-	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+	Data                 []byte   `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateAppendRequest) Reset()         { *m = StateAppendRequest{} }
+func (m *StateAppendRequest) String() string { return proto.CompactTextString(m) }
+func (*StateAppendRequest) ProtoMessage()    {}
+func (*StateAppendRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{21}
+}
+func (m *StateAppendRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateAppendRequest.Unmarshal(m, b)
+}
+func (m *StateAppendRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateAppendRequest.Marshal(b, m, deterministic)
+}
+func (dst *StateAppendRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateAppendRequest.Merge(dst, src)
+}
+func (m *StateAppendRequest) XXX_Size() int {
+	return xxx_messageInfo_StateAppendRequest.Size(m)
+}
+func (m *StateAppendRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateAppendRequest.DiscardUnknown(m)
 }
 
-func (m *StateAppendRequest) Reset()                    { *m = StateAppendRequest{} }
-func (m *StateAppendRequest) String() string            { return proto.CompactTextString(m) }
-func (*StateAppendRequest) ProtoMessage()               {}
-func (*StateAppendRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+var xxx_messageInfo_StateAppendRequest proto.InternalMessageInfo
 
 func (m *StateAppendRequest) GetData() []byte {
 	if m != nil {
@@ -2178,37 +2955,103 @@ func (m *StateAppendRequest) GetData() []byte {
 
 // A response to append state.
 type StateAppendResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *StateAppendResponse) Reset()                    { *m = StateAppendResponse{} }
-func (m *StateAppendResponse) String() string            { return proto.CompactTextString(m) }
-func (*StateAppendResponse) ProtoMessage()               {}
-func (*StateAppendResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+func (m *StateAppendResponse) Reset()         { *m = StateAppendResponse{} }
+func (m *StateAppendResponse) String() string { return proto.CompactTextString(m) }
+func (*StateAppendResponse) ProtoMessage()    {}
+func (*StateAppendResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{22}
+}
+func (m *StateAppendResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateAppendResponse.Unmarshal(m, b)
+}
+func (m *StateAppendResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateAppendResponse.Marshal(b, m, deterministic)
+}
+func (dst *StateAppendResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateAppendResponse.Merge(dst, src)
+}
+func (m *StateAppendResponse) XXX_Size() int {
+	return xxx_messageInfo_StateAppendResponse.Size(m)
+}
+func (m *StateAppendResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateAppendResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StateAppendResponse proto.InternalMessageInfo
 
 // A request to clear state.
 type StateClearRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateClearRequest) Reset()         { *m = StateClearRequest{} }
+func (m *StateClearRequest) String() string { return proto.CompactTextString(m) }
+func (*StateClearRequest) ProtoMessage()    {}
+func (*StateClearRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{23}
+}
+func (m *StateClearRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateClearRequest.Unmarshal(m, b)
+}
+func (m *StateClearRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateClearRequest.Marshal(b, m, deterministic)
+}
+func (dst *StateClearRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateClearRequest.Merge(dst, src)
+}
+func (m *StateClearRequest) XXX_Size() int {
+	return xxx_messageInfo_StateClearRequest.Size(m)
+}
+func (m *StateClearRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateClearRequest.DiscardUnknown(m)
 }
 
-func (m *StateClearRequest) Reset()                    { *m = StateClearRequest{} }
-func (m *StateClearRequest) String() string            { return proto.CompactTextString(m) }
-func (*StateClearRequest) ProtoMessage()               {}
-func (*StateClearRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+var xxx_messageInfo_StateClearRequest proto.InternalMessageInfo
 
 // A response to clear state.
 type StateClearResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StateClearResponse) Reset()         { *m = StateClearResponse{} }
+func (m *StateClearResponse) String() string { return proto.CompactTextString(m) }
+func (*StateClearResponse) ProtoMessage()    {}
+func (*StateClearResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{24}
+}
+func (m *StateClearResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateClearResponse.Unmarshal(m, b)
+}
+func (m *StateClearResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateClearResponse.Marshal(b, m, deterministic)
+}
+func (dst *StateClearResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateClearResponse.Merge(dst, src)
+}
+func (m *StateClearResponse) XXX_Size() int {
+	return xxx_messageInfo_StateClearResponse.Size(m)
+}
+func (m *StateClearResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateClearResponse.DiscardUnknown(m)
 }
 
-func (m *StateClearResponse) Reset()                    { *m = StateClearResponse{} }
-func (m *StateClearResponse) String() string            { return proto.CompactTextString(m) }
-func (*StateClearResponse) ProtoMessage()               {}
-func (*StateClearResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+var xxx_messageInfo_StateClearResponse proto.InternalMessageInfo
 
 // A log entry
 type LogEntry struct {
 	// (Required) The severity of the log statement.
 	Severity LogEntry_Severity_Enum `protobuf:"varint,1,opt,name=severity,enum=org.apache.beam.model.fn_execution.v1.LogEntry_Severity_Enum" json:"severity,omitempty"`
 	// (Required) The time at which this log statement occurred.
-	Timestamp *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	Timestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"`
 	// (Required) A human readable message.
 	Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"`
 	// (Optional) An optional trace of the functions involved. For example, in
@@ -2229,13 +3072,35 @@ type LogEntry struct {
 	//   file.cc:382 (C++)
 	LogLocation string `protobuf:"bytes,7,opt,name=log_location,json=logLocation" json:"log_location,omitempty"`
 	// (Optional) The name of the thread this log statement is associated with.
-	Thread string `protobuf:"bytes,8,opt,name=thread" json:"thread,omitempty"`
+	Thread               string   `protobuf:"bytes,8,opt,name=thread" json:"thread,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *LogEntry) Reset()                    { *m = LogEntry{} }
-func (m *LogEntry) String() string            { return proto.CompactTextString(m) }
-func (*LogEntry) ProtoMessage()               {}
-func (*LogEntry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (m *LogEntry) Reset()         { *m = LogEntry{} }
+func (m *LogEntry) String() string { return proto.CompactTextString(m) }
+func (*LogEntry) ProtoMessage()    {}
+func (*LogEntry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{25}
+}
+func (m *LogEntry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LogEntry.Unmarshal(m, b)
+}
+func (m *LogEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LogEntry.Marshal(b, m, deterministic)
+}
+func (dst *LogEntry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogEntry.Merge(dst, src)
+}
+func (m *LogEntry) XXX_Size() int {
+	return xxx_messageInfo_LogEntry.Size(m)
+}
+func (m *LogEntry) XXX_DiscardUnknown() {
+	xxx_messageInfo_LogEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LogEntry proto.InternalMessageInfo
 
 func (m *LogEntry) GetSeverity() LogEntry_Severity_Enum {
 	if m != nil {
@@ -2244,7 +3109,7 @@ func (m *LogEntry) GetSeverity() LogEntry_Severity_Enum {
 	return LogEntry_Severity_UNSPECIFIED
 }
 
-func (m *LogEntry) GetTimestamp() *google_protobuf2.Timestamp {
+func (m *LogEntry) GetTimestamp() *timestamp.Timestamp {
 	if m != nil {
 		return m.Timestamp
 	}
@@ -2297,13 +3162,35 @@ func (m *LogEntry) GetThread() string {
 // log messages using the logging API.
 type LogEntry_List struct {
 	// (Required) One or or more log messages.
-	LogEntries []*LogEntry `protobuf:"bytes,1,rep,name=log_entries,json=logEntries" json:"log_entries,omitempty"`
+	LogEntries           []*LogEntry `protobuf:"bytes,1,rep,name=log_entries,json=logEntries" json:"log_entries,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *LogEntry_List) Reset()         { *m = LogEntry_List{} }
+func (m *LogEntry_List) String() string { return proto.CompactTextString(m) }
+func (*LogEntry_List) ProtoMessage()    {}
+func (*LogEntry_List) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{25, 0}
+}
+func (m *LogEntry_List) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LogEntry_List.Unmarshal(m, b)
+}
+func (m *LogEntry_List) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LogEntry_List.Marshal(b, m, deterministic)
+}
+func (dst *LogEntry_List) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogEntry_List.Merge(dst, src)
+}
+func (m *LogEntry_List) XXX_Size() int {
+	return xxx_messageInfo_LogEntry_List.Size(m)
+}
+func (m *LogEntry_List) XXX_DiscardUnknown() {
+	xxx_messageInfo_LogEntry_List.DiscardUnknown(m)
 }
 
-func (m *LogEntry_List) Reset()                    { *m = LogEntry_List{} }
-func (m *LogEntry_List) String() string            { return proto.CompactTextString(m) }
-func (*LogEntry_List) ProtoMessage()               {}
-func (*LogEntry_List) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25, 0} }
+var xxx_messageInfo_LogEntry_List proto.InternalMessageInfo
 
 func (m *LogEntry_List) GetLogEntries() []*LogEntry {
 	if m != nil {
@@ -2326,20 +3213,64 @@ func (m *LogEntry_List) GetLogEntries() []*LogEntry {
 // can provide filtering and searching across log types. Users of the API are
 // free not to use all severity levels in their log messages.
 type LogEntry_Severity struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *LogEntry_Severity) Reset()         { *m = LogEntry_Severity{} }
+func (m *LogEntry_Severity) String() string { return proto.CompactTextString(m) }
+func (*LogEntry_Severity) ProtoMessage()    {}
+func (*LogEntry_Severity) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{25, 1}
+}
+func (m *LogEntry_Severity) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LogEntry_Severity.Unmarshal(m, b)
+}
+func (m *LogEntry_Severity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LogEntry_Severity.Marshal(b, m, deterministic)
+}
+func (dst *LogEntry_Severity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogEntry_Severity.Merge(dst, src)
+}
+func (m *LogEntry_Severity) XXX_Size() int {
+	return xxx_messageInfo_LogEntry_Severity.Size(m)
+}
+func (m *LogEntry_Severity) XXX_DiscardUnknown() {
+	xxx_messageInfo_LogEntry_Severity.DiscardUnknown(m)
 }
 
-func (m *LogEntry_Severity) Reset()                    { *m = LogEntry_Severity{} }
-func (m *LogEntry_Severity) String() string            { return proto.CompactTextString(m) }
-func (*LogEntry_Severity) ProtoMessage()               {}
-func (*LogEntry_Severity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25, 1} }
+var xxx_messageInfo_LogEntry_Severity proto.InternalMessageInfo
 
 type LogControl struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *LogControl) Reset()         { *m = LogControl{} }
+func (m *LogControl) String() string { return proto.CompactTextString(m) }
+func (*LogControl) ProtoMessage()    {}
+func (*LogControl) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_fn_api_0c85610fb4e0f5ef, []int{26}
+}
+func (m *LogControl) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LogControl.Unmarshal(m, b)
+}
+func (m *LogControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LogControl.Marshal(b, m, deterministic)
+}
+func (dst *LogControl) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogControl.Merge(dst, src)
+}
+func (m *LogControl) XXX_Size() int {
+	return xxx_messageInfo_LogControl.Size(m)
+}
+func (m *LogControl) XXX_DiscardUnknown() {
+	xxx_messageInfo_LogControl.DiscardUnknown(m)
 }
 
-func (m *LogControl) Reset()                    { *m = LogControl{} }
-func (m *LogControl) String() string            { return proto.CompactTextString(m) }
-func (*LogControl) ProtoMessage()               {}
-func (*LogControl) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+var xxx_messageInfo_LogControl proto.InternalMessageInfo
 
 func init() {
 	proto.RegisterType((*Target)(nil), "org.apache.beam.model.fn_execution.v1.Target")
@@ -2350,16 +3281,27 @@ func init() {
 	proto.RegisterType((*RegisterRequest)(nil), "org.apache.beam.model.fn_execution.v1.RegisterRequest")
 	proto.RegisterType((*RegisterResponse)(nil), "org.apache.beam.model.fn_execution.v1.RegisterResponse")
 	proto.RegisterType((*ProcessBundleDescriptor)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor")
+	proto.RegisterMapType((map[string]*pipeline_v1.Coder)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor.CodersEntry")
+	proto.RegisterMapType((map[string]*pipeline_v1.Environment)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor.EnvironmentsEntry")
+	proto.RegisterMapType((map[string]*pipeline_v1.PCollection)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor.PcollectionsEntry")
+	proto.RegisterMapType((map[string]*pipeline_v1.PTransform)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor.TransformsEntry")
+	proto.RegisterMapType((map[string]*pipeline_v1.WindowingStrategy)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleDescriptor.WindowingStrategiesEntry")
 	proto.RegisterType((*BundleSplit)(nil), "org.apache.beam.model.fn_execution.v1.BundleSplit")
 	proto.RegisterType((*BundleSplit_Application)(nil), "org.apache.beam.model.fn_execution.v1.BundleSplit.Application")
+	proto.RegisterMapType((map[string]int64)(nil), "org.apache.beam.model.fn_execution.v1.BundleSplit.Application.OutputWatermarksEntry")
 	proto.RegisterType((*ProcessBundleRequest)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleRequest")
 	proto.RegisterType((*ProcessBundleResponse)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleResponse")
 	proto.RegisterType((*ProcessBundleProgressRequest)(nil), "org.apache.beam.model.fn_execution.v1.ProcessBundleProgressRequest")
 	proto.RegisterType((*Metrics)(nil), "org.apache.beam.model.fn_execution.v1.Metrics")
+	proto.RegisterMapType((map[string]*Metrics_PTransform)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PtransformsEntry")
 	proto.RegisterType((*Metrics_PTransform)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform")
+	proto.RegisterMapType((map[string]int64)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.WatermarksEntry")
 	proto.RegisterType((*Metrics_PTransform_Measured)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.Measured")
+	proto.RegisterMapType((map[string]int64)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.Measured.InputElementCountsEntry")
+	proto.RegisterMapType((map[string]int64)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.Measured.OutputElementCountsEntry")
 	proto.RegisterType((*Metrics_PTransform_ProcessedElements)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.ProcessedElements")
 	proto.RegisterType((*Metrics_PTransform_ActiveElements)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.ActiveElements")
+	proto.RegisterMapType((map[string]int64)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.PTransform.ActiveElements.OutputElementsRemainingEntry")
 	proto.RegisterType((*Metrics_User)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.User")
 	proto.RegisterType((*Metrics_User_MetricName)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.User.MetricName")
 	proto.RegisterType((*Metrics_User_CounterData)(nil), "org.apache.beam.model.fn_execution.v1.Metrics.User.CounterData")
@@ -2397,8 +3339,9 @@ var _ grpc.ClientConn
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion4
 
-// Client API for BeamFnControl service
-
+// BeamFnControlClient is the client API for BeamFnControl service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type BeamFnControlClient interface {
 	// Instructions sent by the runner to the SDK requesting different types
 	// of work.
@@ -2414,7 +3357,7 @@ func NewBeamFnControlClient(cc *grpc.ClientConn) BeamFnControlClient {
 }
 
 func (c *beamFnControlClient) Control(ctx context.Context, opts ...grpc.CallOption) (BeamFnControl_ControlClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_BeamFnControl_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.fn_execution.v1.BeamFnControl/Control", opts...)
+	stream, err := c.cc.NewStream(ctx, &_BeamFnControl_serviceDesc.Streams[0], "/org.apache.beam.model.fn_execution.v1.BeamFnControl/Control", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -2444,8 +3387,7 @@ func (x *beamFnControlControlClient) Recv() (*InstructionRequest, error) {
 	return m, nil
 }
 
-// Server API for BeamFnControl service
-
+// BeamFnControlServer is the server API for BeamFnControl service.
 type BeamFnControlServer interface {
 	// Instructions sent by the runner to the SDK requesting different types
 	// of work.
@@ -2497,8 +3439,9 @@ var _BeamFnControl_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_fn_api.proto",
 }
 
-// Client API for BeamFnData service
-
+// BeamFnDataClient is the client API for BeamFnData service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type BeamFnDataClient interface {
 	// Used to send data between harnesses.
 	Data(ctx context.Context, opts ...grpc.CallOption) (BeamFnData_DataClient, error)
@@ -2513,7 +3456,7 @@ func NewBeamFnDataClient(cc *grpc.ClientConn) BeamFnDataClient {
 }
 
 func (c *beamFnDataClient) Data(ctx context.Context, opts ...grpc.CallOption) (BeamFnData_DataClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_BeamFnData_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.fn_execution.v1.BeamFnData/Data", opts...)
+	stream, err := c.cc.NewStream(ctx, &_BeamFnData_serviceDesc.Streams[0], "/org.apache.beam.model.fn_execution.v1.BeamFnData/Data", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -2543,8 +3486,7 @@ func (x *beamFnDataDataClient) Recv() (*Elements, error) {
 	return m, nil
 }
 
-// Server API for BeamFnData service
-
+// BeamFnDataServer is the server API for BeamFnData service.
 type BeamFnDataServer interface {
 	// Used to send data between harnesses.
 	Data(BeamFnData_DataServer) error
@@ -2595,8 +3537,9 @@ var _BeamFnData_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_fn_api.proto",
 }
 
-// Client API for BeamFnState service
-
+// BeamFnStateClient is the client API for BeamFnState service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type BeamFnStateClient interface {
 	// Used to get/append/clear state stored by the runner on behalf of the SDK.
 	State(ctx context.Context, opts ...grpc.CallOption) (BeamFnState_StateClient, error)
@@ -2611,7 +3554,7 @@ func NewBeamFnStateClient(cc *grpc.ClientConn) BeamFnStateClient {
 }
 
 func (c *beamFnStateClient) State(ctx context.Context, opts ...grpc.CallOption) (BeamFnState_StateClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_BeamFnState_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.fn_execution.v1.BeamFnState/State", opts...)
+	stream, err := c.cc.NewStream(ctx, &_BeamFnState_serviceDesc.Streams[0], "/org.apache.beam.model.fn_execution.v1.BeamFnState/State", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -2641,8 +3584,7 @@ func (x *beamFnStateStateClient) Recv() (*StateResponse, error) {
 	return m, nil
 }
 
-// Server API for BeamFnState service
-
+// BeamFnStateServer is the server API for BeamFnState service.
 type BeamFnStateServer interface {
 	// Used to get/append/clear state stored by the runner on behalf of the SDK.
 	State(BeamFnState_StateServer) error
@@ -2693,8 +3635,9 @@ var _BeamFnState_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_fn_api.proto",
 }
 
-// Client API for BeamFnLogging service
-
+// BeamFnLoggingClient is the client API for BeamFnLogging service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type BeamFnLoggingClient interface {
 	// Allows for the SDK to emit log entries which the runner can
 	// associate with the active job.
@@ -2710,7 +3653,7 @@ func NewBeamFnLoggingClient(cc *grpc.ClientConn) BeamFnLoggingClient {
 }
 
 func (c *beamFnLoggingClient) Logging(ctx context.Context, opts ...grpc.CallOption) (BeamFnLogging_LoggingClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_BeamFnLogging_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.fn_execution.v1.BeamFnLogging/Logging", opts...)
+	stream, err := c.cc.NewStream(ctx, &_BeamFnLogging_serviceDesc.Streams[0], "/org.apache.beam.model.fn_execution.v1.BeamFnLogging/Logging", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -2740,8 +3683,7 @@ func (x *beamFnLoggingLoggingClient) Recv() (*LogControl, error) {
 	return m, nil
 }
 
-// Server API for BeamFnLogging service
-
+// BeamFnLoggingServer is the server API for BeamFnLogging service.
 type BeamFnLoggingServer interface {
 	// Allows for the SDK to emit log entries which the runner can
 	// associate with the active job.
@@ -2793,9 +3735,9 @@ var _BeamFnLogging_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_fn_api.proto",
 }
 
-func init() { proto.RegisterFile("beam_fn_api.proto", fileDescriptor0) }
+func init() { proto.RegisterFile("beam_fn_api.proto", fileDescriptor_beam_fn_api_0c85610fb4e0f5ef) }
 
-var fileDescriptor0 = []byte{
+var fileDescriptor_beam_fn_api_0c85610fb4e0f5ef = []byte{
 	// 2588 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x6f, 0x23, 0xc7,
 	0xd1, 0xd7, 0x88, 0x14, 0x45, 0x15, 0x29, 0x89, 0x6a, 0x49, 0x5e, 0xee, 0x7c, 0xf2, 0xe7, 0x35,
diff --git a/sdks/go/pkg/beam/model/fnexecution_v1/beam_provision_api.pb.go b/sdks/go/pkg/beam/model/fnexecution_v1/beam_provision_api.pb.go
index fd7e0bdc655..f71395d0a2f 100644
--- a/sdks/go/pkg/beam/model/fnexecution_v1/beam_provision_api.pb.go
+++ b/sdks/go/pkg/beam/model/fnexecution_v1/beam_provision_api.pb.go
@@ -6,7 +6,7 @@ package fnexecution_v1
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
-import google_protobuf4 "github.com/golang/protobuf/ptypes/struct"
+import _struct "github.com/golang/protobuf/ptypes/struct"
 
 import (
 	context "golang.org/x/net/context"
@@ -18,24 +18,74 @@ var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
 // A request to get the provision info of a SDK harness worker instance.
 type GetProvisionInfoRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetProvisionInfoRequest) Reset()         { *m = GetProvisionInfoRequest{} }
+func (m *GetProvisionInfoRequest) String() string { return proto.CompactTextString(m) }
+func (*GetProvisionInfoRequest) ProtoMessage()    {}
+func (*GetProvisionInfoRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{0}
+}
+func (m *GetProvisionInfoRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetProvisionInfoRequest.Unmarshal(m, b)
+}
+func (m *GetProvisionInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetProvisionInfoRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetProvisionInfoRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetProvisionInfoRequest.Merge(dst, src)
+}
+func (m *GetProvisionInfoRequest) XXX_Size() int {
+	return xxx_messageInfo_GetProvisionInfoRequest.Size(m)
+}
+func (m *GetProvisionInfoRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetProvisionInfoRequest.DiscardUnknown(m)
 }
 
-func (m *GetProvisionInfoRequest) Reset()                    { *m = GetProvisionInfoRequest{} }
-func (m *GetProvisionInfoRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetProvisionInfoRequest) ProtoMessage()               {}
-func (*GetProvisionInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+var xxx_messageInfo_GetProvisionInfoRequest proto.InternalMessageInfo
 
 // A response containing the provision info of a SDK harness worker instance.
 type GetProvisionInfoResponse struct {
-	Info *ProvisionInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"`
+	Info                 *ProvisionInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *GetProvisionInfoResponse) Reset()         { *m = GetProvisionInfoResponse{} }
+func (m *GetProvisionInfoResponse) String() string { return proto.CompactTextString(m) }
+func (*GetProvisionInfoResponse) ProtoMessage()    {}
+func (*GetProvisionInfoResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{1}
+}
+func (m *GetProvisionInfoResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetProvisionInfoResponse.Unmarshal(m, b)
+}
+func (m *GetProvisionInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetProvisionInfoResponse.Marshal(b, m, deterministic)
+}
+func (dst *GetProvisionInfoResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetProvisionInfoResponse.Merge(dst, src)
+}
+func (m *GetProvisionInfoResponse) XXX_Size() int {
+	return xxx_messageInfo_GetProvisionInfoResponse.Size(m)
+}
+func (m *GetProvisionInfoResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetProvisionInfoResponse.DiscardUnknown(m)
 }
 
-func (m *GetProvisionInfoResponse) Reset()                    { *m = GetProvisionInfoResponse{} }
-func (m *GetProvisionInfoResponse) String() string            { return proto.CompactTextString(m) }
-func (*GetProvisionInfoResponse) ProtoMessage()               {}
-func (*GetProvisionInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+var xxx_messageInfo_GetProvisionInfoResponse proto.InternalMessageInfo
 
 func (m *GetProvisionInfoResponse) GetInfo() *ProvisionInfo {
 	if m != nil {
@@ -51,20 +101,45 @@ type ProvisionInfo struct {
 	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
 	// (required) The job name.
 	JobName string `protobuf:"bytes,2,opt,name=job_name,json=jobName" json:"job_name,omitempty"`
-	// (required) The worker ID.
+	// (required) The worker ID. Often this will be the hostname.
+	//
+	// This is independent of the id passed to the SDK harness via the 'id'
+	// argument in the Beam container contract.
 	WorkerId string `protobuf:"bytes,5,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
 	// (required) Pipeline options. For non-template jobs, the options are
 	// identical to what is passed to job submission.
-	PipelineOptions *google_protobuf4.Struct `protobuf:"bytes,3,opt,name=pipeline_options,json=pipelineOptions" json:"pipeline_options,omitempty"`
+	PipelineOptions *_struct.Struct `protobuf:"bytes,3,opt,name=pipeline_options,json=pipelineOptions" json:"pipeline_options,omitempty"`
 	// (optional) Resource limits that the SDK harness worker should respect.
 	// Runners may -- but are not required to -- enforce any limits provided.
-	ResourceLimits *Resources `protobuf:"bytes,4,opt,name=resource_limits,json=resourceLimits" json:"resource_limits,omitempty"`
+	ResourceLimits       *Resources `protobuf:"bytes,4,opt,name=resource_limits,json=resourceLimits" json:"resource_limits,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *ProvisionInfo) Reset()         { *m = ProvisionInfo{} }
+func (m *ProvisionInfo) String() string { return proto.CompactTextString(m) }
+func (*ProvisionInfo) ProtoMessage()    {}
+func (*ProvisionInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{2}
+}
+func (m *ProvisionInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProvisionInfo.Unmarshal(m, b)
+}
+func (m *ProvisionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProvisionInfo.Marshal(b, m, deterministic)
+}
+func (dst *ProvisionInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProvisionInfo.Merge(dst, src)
+}
+func (m *ProvisionInfo) XXX_Size() int {
+	return xxx_messageInfo_ProvisionInfo.Size(m)
+}
+func (m *ProvisionInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProvisionInfo.DiscardUnknown(m)
 }
 
-func (m *ProvisionInfo) Reset()                    { *m = ProvisionInfo{} }
-func (m *ProvisionInfo) String() string            { return proto.CompactTextString(m) }
-func (*ProvisionInfo) ProtoMessage()               {}
-func (*ProvisionInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+var xxx_messageInfo_ProvisionInfo proto.InternalMessageInfo
 
 func (m *ProvisionInfo) GetJobId() string {
 	if m != nil {
@@ -87,7 +162,7 @@ func (m *ProvisionInfo) GetWorkerId() string {
 	return ""
 }
 
-func (m *ProvisionInfo) GetPipelineOptions() *google_protobuf4.Struct {
+func (m *ProvisionInfo) GetPipelineOptions() *_struct.Struct {
 	if m != nil {
 		return m.PipelineOptions
 	}
@@ -110,13 +185,35 @@ type Resources struct {
 	// (optional) CPU usage limits.
 	Cpu *Resources_Cpu `protobuf:"bytes,2,opt,name=cpu" json:"cpu,omitempty"`
 	// (optional) Disk size limits for the semi-persistent location.
-	SemiPersistentDisk *Resources_Disk `protobuf:"bytes,3,opt,name=semi_persistent_disk,json=semiPersistentDisk" json:"semi_persistent_disk,omitempty"`
+	SemiPersistentDisk   *Resources_Disk `protobuf:"bytes,3,opt,name=semi_persistent_disk,json=semiPersistentDisk" json:"semi_persistent_disk,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *Resources) Reset()                    { *m = Resources{} }
-func (m *Resources) String() string            { return proto.CompactTextString(m) }
-func (*Resources) ProtoMessage()               {}
-func (*Resources) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+func (m *Resources) Reset()         { *m = Resources{} }
+func (m *Resources) String() string { return proto.CompactTextString(m) }
+func (*Resources) ProtoMessage()    {}
+func (*Resources) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{3}
+}
+func (m *Resources) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resources.Unmarshal(m, b)
+}
+func (m *Resources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resources.Marshal(b, m, deterministic)
+}
+func (dst *Resources) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resources.Merge(dst, src)
+}
+func (m *Resources) XXX_Size() int {
+	return xxx_messageInfo_Resources.Size(m)
+}
+func (m *Resources) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resources proto.InternalMessageInfo
 
 func (m *Resources) GetMemory() *Resources_Memory {
 	if m != nil {
@@ -142,13 +239,35 @@ func (m *Resources) GetSemiPersistentDisk() *Resources_Disk {
 // Memory limits.
 type Resources_Memory struct {
 	// (optional) Hard limit in bytes. A zero value means unspecified.
-	Size uint64 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
+	Size                 uint64   `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Resources_Memory) Reset()         { *m = Resources_Memory{} }
+func (m *Resources_Memory) String() string { return proto.CompactTextString(m) }
+func (*Resources_Memory) ProtoMessage()    {}
+func (*Resources_Memory) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{3, 0}
+}
+func (m *Resources_Memory) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resources_Memory.Unmarshal(m, b)
+}
+func (m *Resources_Memory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resources_Memory.Marshal(b, m, deterministic)
+}
+func (dst *Resources_Memory) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resources_Memory.Merge(dst, src)
+}
+func (m *Resources_Memory) XXX_Size() int {
+	return xxx_messageInfo_Resources_Memory.Size(m)
+}
+func (m *Resources_Memory) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources_Memory.DiscardUnknown(m)
 }
 
-func (m *Resources_Memory) Reset()                    { *m = Resources_Memory{} }
-func (m *Resources_Memory) String() string            { return proto.CompactTextString(m) }
-func (*Resources_Memory) ProtoMessage()               {}
-func (*Resources_Memory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} }
+var xxx_messageInfo_Resources_Memory proto.InternalMessageInfo
 
 func (m *Resources_Memory) GetSize() uint64 {
 	if m != nil {
@@ -161,13 +280,35 @@ func (m *Resources_Memory) GetSize() uint64 {
 type Resources_Cpu struct {
 	// (optional) Shares of a cpu to use. Fractional values, such as "0.2"
 	// or "2.5", are fine. Any value <= 0 means unspecified.
-	Shares float32 `protobuf:"fixed32,1,opt,name=shares" json:"shares,omitempty"`
+	Shares               float32  `protobuf:"fixed32,1,opt,name=shares" json:"shares,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Resources_Cpu) Reset()                    { *m = Resources_Cpu{} }
-func (m *Resources_Cpu) String() string            { return proto.CompactTextString(m) }
-func (*Resources_Cpu) ProtoMessage()               {}
-func (*Resources_Cpu) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 1} }
+func (m *Resources_Cpu) Reset()         { *m = Resources_Cpu{} }
+func (m *Resources_Cpu) String() string { return proto.CompactTextString(m) }
+func (*Resources_Cpu) ProtoMessage()    {}
+func (*Resources_Cpu) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{3, 1}
+}
+func (m *Resources_Cpu) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resources_Cpu.Unmarshal(m, b)
+}
+func (m *Resources_Cpu) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resources_Cpu.Marshal(b, m, deterministic)
+}
+func (dst *Resources_Cpu) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resources_Cpu.Merge(dst, src)
+}
+func (m *Resources_Cpu) XXX_Size() int {
+	return xxx_messageInfo_Resources_Cpu.Size(m)
+}
+func (m *Resources_Cpu) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources_Cpu.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resources_Cpu proto.InternalMessageInfo
 
 func (m *Resources_Cpu) GetShares() float32 {
 	if m != nil {
@@ -179,13 +320,35 @@ func (m *Resources_Cpu) GetShares() float32 {
 // Disk limits.
 type Resources_Disk struct {
 	// (optional) Hard limit in bytes. A zero value means unspecified.
-	Size uint64 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
+	Size                 uint64   `protobuf:"varint,1,opt,name=size" json:"size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Resources_Disk) Reset()                    { *m = Resources_Disk{} }
-func (m *Resources_Disk) String() string            { return proto.CompactTextString(m) }
-func (*Resources_Disk) ProtoMessage()               {}
-func (*Resources_Disk) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 2} }
+func (m *Resources_Disk) Reset()         { *m = Resources_Disk{} }
+func (m *Resources_Disk) String() string { return proto.CompactTextString(m) }
+func (*Resources_Disk) ProtoMessage()    {}
+func (*Resources_Disk) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_provision_api_f914ba43f8ed88c8, []int{3, 2}
+}
+func (m *Resources_Disk) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resources_Disk.Unmarshal(m, b)
+}
+func (m *Resources_Disk) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resources_Disk.Marshal(b, m, deterministic)
+}
+func (dst *Resources_Disk) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resources_Disk.Merge(dst, src)
+}
+func (m *Resources_Disk) XXX_Size() int {
+	return xxx_messageInfo_Resources_Disk.Size(m)
+}
+func (m *Resources_Disk) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources_Disk.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resources_Disk proto.InternalMessageInfo
 
 func (m *Resources_Disk) GetSize() uint64 {
 	if m != nil {
@@ -212,8 +375,9 @@ var _ grpc.ClientConn
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion4
 
-// Client API for ProvisionService service
-
+// ProvisionServiceClient is the client API for ProvisionService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ProvisionServiceClient interface {
 	// Get provision information for the SDK harness worker instance.
 	GetProvisionInfo(ctx context.Context, in *GetProvisionInfoRequest, opts ...grpc.CallOption) (*GetProvisionInfoResponse, error)
@@ -229,15 +393,14 @@ func NewProvisionServiceClient(cc *grpc.ClientConn) ProvisionServiceClient {
 
 func (c *provisionServiceClient) GetProvisionInfo(ctx context.Context, in *GetProvisionInfoRequest, opts ...grpc.CallOption) (*GetProvisionInfoResponse, error) {
 	out := new(GetProvisionInfoResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.fn_execution.v1.ProvisionService/GetProvisionInfo", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.fn_execution.v1.ProvisionService/GetProvisionInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-// Server API for ProvisionService service
-
+// ProvisionServiceServer is the server API for ProvisionService service.
 type ProvisionServiceServer interface {
 	// Get provision information for the SDK harness worker instance.
 	GetProvisionInfo(context.Context, *GetProvisionInfoRequest) (*GetProvisionInfoResponse, error)
@@ -278,9 +441,11 @@ var _ProvisionService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_provision_api.proto",
 }
 
-func init() { proto.RegisterFile("beam_provision_api.proto", fileDescriptor1) }
+func init() {
+	proto.RegisterFile("beam_provision_api.proto", fileDescriptor_beam_provision_api_f914ba43f8ed88c8)
+}
 
-var fileDescriptor1 = []byte{
+var fileDescriptor_beam_provision_api_f914ba43f8ed88c8 = []byte{
 	// 485 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xdd, 0x6e, 0xd3, 0x40,
 	0x10, 0x85, 0x95, 0xc4, 0x35, 0xcd, 0x00, 0x6d, 0xb4, 0x02, 0xea, 0x9a, 0x22, 0xa1, 0x08, 0x24,
diff --git a/sdks/go/pkg/beam/model/jobmanagement_v1/beam_artifact_api.pb.go b/sdks/go/pkg/beam/model/jobmanagement_v1/beam_artifact_api.pb.go
index 677fc29939c..865be9579dc 100644
--- a/sdks/go/pkg/beam/model/jobmanagement_v1/beam_artifact_api.pb.go
+++ b/sdks/go/pkg/beam/model/jobmanagement_v1/beam_artifact_api.pb.go
@@ -17,6 +17,12 @@ var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
 // An artifact identifier and associated metadata.
 type ArtifactMetadata struct {
 	// (Required) The name of the artifact.
@@ -25,13 +31,35 @@ type ArtifactMetadata struct {
 	Permissions uint32 `protobuf:"varint,2,opt,name=permissions" json:"permissions,omitempty"`
 	// (Optional) The base64-encoded md5 checksum of the artifact. Used, among other things, by
 	// harness boot code to validate the integrity of the artifact.
-	Md5 string `protobuf:"bytes,3,opt,name=md5" json:"md5,omitempty"`
+	Md5                  string   `protobuf:"bytes,3,opt,name=md5" json:"md5,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ArtifactMetadata) Reset()                    { *m = ArtifactMetadata{} }
-func (m *ArtifactMetadata) String() string            { return proto.CompactTextString(m) }
-func (*ArtifactMetadata) ProtoMessage()               {}
-func (*ArtifactMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+func (m *ArtifactMetadata) Reset()         { *m = ArtifactMetadata{} }
+func (m *ArtifactMetadata) String() string { return proto.CompactTextString(m) }
+func (*ArtifactMetadata) ProtoMessage()    {}
+func (*ArtifactMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{0}
+}
+func (m *ArtifactMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactMetadata.Unmarshal(m, b)
+}
+func (m *ArtifactMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactMetadata.Marshal(b, m, deterministic)
+}
+func (dst *ArtifactMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactMetadata.Merge(dst, src)
+}
+func (m *ArtifactMetadata) XXX_Size() int {
+	return xxx_messageInfo_ArtifactMetadata.Size(m)
+}
+func (m *ArtifactMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ArtifactMetadata proto.InternalMessageInfo
 
 func (m *ArtifactMetadata) GetName() string {
 	if m != nil {
@@ -56,13 +84,35 @@ func (m *ArtifactMetadata) GetMd5() string {
 
 // A collection of artifacts.
 type Manifest struct {
-	Artifact []*ArtifactMetadata `protobuf:"bytes,1,rep,name=artifact" json:"artifact,omitempty"`
+	Artifact             []*ArtifactMetadata `protobuf:"bytes,1,rep,name=artifact" json:"artifact,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *Manifest) Reset()         { *m = Manifest{} }
+func (m *Manifest) String() string { return proto.CompactTextString(m) }
+func (*Manifest) ProtoMessage()    {}
+func (*Manifest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{1}
+}
+func (m *Manifest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Manifest.Unmarshal(m, b)
+}
+func (m *Manifest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Manifest.Marshal(b, m, deterministic)
+}
+func (dst *Manifest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Manifest.Merge(dst, src)
+}
+func (m *Manifest) XXX_Size() int {
+	return xxx_messageInfo_Manifest.Size(m)
+}
+func (m *Manifest) XXX_DiscardUnknown() {
+	xxx_messageInfo_Manifest.DiscardUnknown(m)
 }
 
-func (m *Manifest) Reset()                    { *m = Manifest{} }
-func (m *Manifest) String() string            { return proto.CompactTextString(m) }
-func (*Manifest) ProtoMessage()               {}
-func (*Manifest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+var xxx_messageInfo_Manifest proto.InternalMessageInfo
 
 func (m *Manifest) GetArtifact() []*ArtifactMetadata {
 	if m != nil {
@@ -73,14 +123,36 @@ func (m *Manifest) GetArtifact() []*ArtifactMetadata {
 
 // A manifest with location information.
 type ProxyManifest struct {
-	Manifest *Manifest                 `protobuf:"bytes,1,opt,name=manifest" json:"manifest,omitempty"`
-	Location []*ProxyManifest_Location `protobuf:"bytes,2,rep,name=location" json:"location,omitempty"`
+	Manifest             *Manifest                 `protobuf:"bytes,1,opt,name=manifest" json:"manifest,omitempty"`
+	Location             []*ProxyManifest_Location `protobuf:"bytes,2,rep,name=location" json:"location,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
+}
+
+func (m *ProxyManifest) Reset()         { *m = ProxyManifest{} }
+func (m *ProxyManifest) String() string { return proto.CompactTextString(m) }
+func (*ProxyManifest) ProtoMessage()    {}
+func (*ProxyManifest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{2}
+}
+func (m *ProxyManifest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProxyManifest.Unmarshal(m, b)
+}
+func (m *ProxyManifest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProxyManifest.Marshal(b, m, deterministic)
+}
+func (dst *ProxyManifest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProxyManifest.Merge(dst, src)
+}
+func (m *ProxyManifest) XXX_Size() int {
+	return xxx_messageInfo_ProxyManifest.Size(m)
+}
+func (m *ProxyManifest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProxyManifest.DiscardUnknown(m)
 }
 
-func (m *ProxyManifest) Reset()                    { *m = ProxyManifest{} }
-func (m *ProxyManifest) String() string            { return proto.CompactTextString(m) }
-func (*ProxyManifest) ProtoMessage()               {}
-func (*ProxyManifest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+var xxx_messageInfo_ProxyManifest proto.InternalMessageInfo
 
 func (m *ProxyManifest) GetManifest() *Manifest {
 	if m != nil {
@@ -97,14 +169,36 @@ func (m *ProxyManifest) GetLocation() []*ProxyManifest_Location {
 }
 
 type ProxyManifest_Location struct {
-	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Uri  string `protobuf:"bytes,2,opt,name=uri" json:"uri,omitempty"`
+	Name                 string   `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Uri                  string   `protobuf:"bytes,2,opt,name=uri" json:"uri,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ProxyManifest_Location) Reset()         { *m = ProxyManifest_Location{} }
+func (m *ProxyManifest_Location) String() string { return proto.CompactTextString(m) }
+func (*ProxyManifest_Location) ProtoMessage()    {}
+func (*ProxyManifest_Location) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{2, 0}
+}
+func (m *ProxyManifest_Location) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ProxyManifest_Location.Unmarshal(m, b)
+}
+func (m *ProxyManifest_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ProxyManifest_Location.Marshal(b, m, deterministic)
+}
+func (dst *ProxyManifest_Location) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ProxyManifest_Location.Merge(dst, src)
+}
+func (m *ProxyManifest_Location) XXX_Size() int {
+	return xxx_messageInfo_ProxyManifest_Location.Size(m)
+}
+func (m *ProxyManifest_Location) XXX_DiscardUnknown() {
+	xxx_messageInfo_ProxyManifest_Location.DiscardUnknown(m)
 }
 
-func (m *ProxyManifest_Location) Reset()                    { *m = ProxyManifest_Location{} }
-func (m *ProxyManifest_Location) String() string            { return proto.CompactTextString(m) }
-func (*ProxyManifest_Location) ProtoMessage()               {}
-func (*ProxyManifest_Location) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} }
+var xxx_messageInfo_ProxyManifest_Location proto.InternalMessageInfo
 
 func (m *ProxyManifest_Location) GetName() string {
 	if m != nil {
@@ -122,22 +216,66 @@ func (m *ProxyManifest_Location) GetUri() string {
 
 // A request to get the manifest of a Job.
 type GetManifestRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetManifestRequest) Reset()         { *m = GetManifestRequest{} }
+func (m *GetManifestRequest) String() string { return proto.CompactTextString(m) }
+func (*GetManifestRequest) ProtoMessage()    {}
+func (*GetManifestRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{3}
+}
+func (m *GetManifestRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetManifestRequest.Unmarshal(m, b)
+}
+func (m *GetManifestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetManifestRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetManifestRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetManifestRequest.Merge(dst, src)
+}
+func (m *GetManifestRequest) XXX_Size() int {
+	return xxx_messageInfo_GetManifestRequest.Size(m)
+}
+func (m *GetManifestRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetManifestRequest.DiscardUnknown(m)
 }
 
-func (m *GetManifestRequest) Reset()                    { *m = GetManifestRequest{} }
-func (m *GetManifestRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetManifestRequest) ProtoMessage()               {}
-func (*GetManifestRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+var xxx_messageInfo_GetManifestRequest proto.InternalMessageInfo
 
 // A response containing a job manifest.
 type GetManifestResponse struct {
-	Manifest *Manifest `protobuf:"bytes,1,opt,name=manifest" json:"manifest,omitempty"`
+	Manifest             *Manifest `protobuf:"bytes,1,opt,name=manifest" json:"manifest,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *GetManifestResponse) Reset()         { *m = GetManifestResponse{} }
+func (m *GetManifestResponse) String() string { return proto.CompactTextString(m) }
+func (*GetManifestResponse) ProtoMessage()    {}
+func (*GetManifestResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{4}
+}
+func (m *GetManifestResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetManifestResponse.Unmarshal(m, b)
+}
+func (m *GetManifestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetManifestResponse.Marshal(b, m, deterministic)
+}
+func (dst *GetManifestResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetManifestResponse.Merge(dst, src)
+}
+func (m *GetManifestResponse) XXX_Size() int {
+	return xxx_messageInfo_GetManifestResponse.Size(m)
+}
+func (m *GetManifestResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetManifestResponse.DiscardUnknown(m)
 }
 
-func (m *GetManifestResponse) Reset()                    { *m = GetManifestResponse{} }
-func (m *GetManifestResponse) String() string            { return proto.CompactTextString(m) }
-func (*GetManifestResponse) ProtoMessage()               {}
-func (*GetManifestResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+var xxx_messageInfo_GetManifestResponse proto.InternalMessageInfo
 
 func (m *GetManifestResponse) GetManifest() *Manifest {
 	if m != nil {
@@ -149,13 +287,35 @@ func (m *GetManifestResponse) GetManifest() *Manifest {
 // A request to get an artifact. The artifact must be present in the manifest for the job.
 type GetArtifactRequest struct {
 	// (Required) The name of the artifact to retrieve.
-	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Name                 string   `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *GetArtifactRequest) Reset()                    { *m = GetArtifactRequest{} }
-func (m *GetArtifactRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetArtifactRequest) ProtoMessage()               {}
-func (*GetArtifactRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+func (m *GetArtifactRequest) Reset()         { *m = GetArtifactRequest{} }
+func (m *GetArtifactRequest) String() string { return proto.CompactTextString(m) }
+func (*GetArtifactRequest) ProtoMessage()    {}
+func (*GetArtifactRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{5}
+}
+func (m *GetArtifactRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetArtifactRequest.Unmarshal(m, b)
+}
+func (m *GetArtifactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetArtifactRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetArtifactRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetArtifactRequest.Merge(dst, src)
+}
+func (m *GetArtifactRequest) XXX_Size() int {
+	return xxx_messageInfo_GetArtifactRequest.Size(m)
+}
+func (m *GetArtifactRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetArtifactRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetArtifactRequest proto.InternalMessageInfo
 
 func (m *GetArtifactRequest) GetName() string {
 	if m != nil {
@@ -166,13 +326,35 @@ func (m *GetArtifactRequest) GetName() string {
 
 // Part of an artifact.
 type ArtifactChunk struct {
-	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+	Data                 []byte   `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ArtifactChunk) Reset()         { *m = ArtifactChunk{} }
+func (m *ArtifactChunk) String() string { return proto.CompactTextString(m) }
+func (*ArtifactChunk) ProtoMessage()    {}
+func (*ArtifactChunk) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{6}
+}
+func (m *ArtifactChunk) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ArtifactChunk.Unmarshal(m, b)
+}
+func (m *ArtifactChunk) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ArtifactChunk.Marshal(b, m, deterministic)
+}
+func (dst *ArtifactChunk) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ArtifactChunk.Merge(dst, src)
+}
+func (m *ArtifactChunk) XXX_Size() int {
+	return xxx_messageInfo_ArtifactChunk.Size(m)
+}
+func (m *ArtifactChunk) XXX_DiscardUnknown() {
+	xxx_messageInfo_ArtifactChunk.DiscardUnknown(m)
 }
 
-func (m *ArtifactChunk) Reset()                    { *m = ArtifactChunk{} }
-func (m *ArtifactChunk) String() string            { return proto.CompactTextString(m) }
-func (*ArtifactChunk) ProtoMessage()               {}
-func (*ArtifactChunk) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+var xxx_messageInfo_ArtifactChunk proto.InternalMessageInfo
 
 func (m *ArtifactChunk) GetData() []byte {
 	if m != nil {
@@ -181,6 +363,54 @@ func (m *ArtifactChunk) GetData() []byte {
 	return nil
 }
 
+type PutArtifactMetadata struct {
+	// (Required) A token for artifact staging session.
+	StagingSessionToken string `protobuf:"bytes,1,opt,name=staging_session_token,json=stagingSessionToken" json:"staging_session_token,omitempty"`
+	// (Required) The Artifact metadata.
+	Metadata             *ArtifactMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *PutArtifactMetadata) Reset()         { *m = PutArtifactMetadata{} }
+func (m *PutArtifactMetadata) String() string { return proto.CompactTextString(m) }
+func (*PutArtifactMetadata) ProtoMessage()    {}
+func (*PutArtifactMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{7}
+}
+func (m *PutArtifactMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PutArtifactMetadata.Unmarshal(m, b)
+}
+func (m *PutArtifactMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PutArtifactMetadata.Marshal(b, m, deterministic)
+}
+func (dst *PutArtifactMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PutArtifactMetadata.Merge(dst, src)
+}
+func (m *PutArtifactMetadata) XXX_Size() int {
+	return xxx_messageInfo_PutArtifactMetadata.Size(m)
+}
+func (m *PutArtifactMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_PutArtifactMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PutArtifactMetadata proto.InternalMessageInfo
+
+func (m *PutArtifactMetadata) GetStagingSessionToken() string {
+	if m != nil {
+		return m.StagingSessionToken
+	}
+	return ""
+}
+
+func (m *PutArtifactMetadata) GetMetadata() *ArtifactMetadata {
+	if m != nil {
+		return m.Metadata
+	}
+	return nil
+}
+
 // A request to stage an artifact.
 type PutArtifactRequest struct {
 	// (Required)
@@ -188,18 +418,42 @@ type PutArtifactRequest struct {
 	// Types that are valid to be assigned to Content:
 	//	*PutArtifactRequest_Metadata
 	//	*PutArtifactRequest_Data
-	Content isPutArtifactRequest_Content `protobuf_oneof:"content"`
+	Content              isPutArtifactRequest_Content `protobuf_oneof:"content"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
 }
 
-func (m *PutArtifactRequest) Reset()                    { *m = PutArtifactRequest{} }
-func (m *PutArtifactRequest) String() string            { return proto.CompactTextString(m) }
-func (*PutArtifactRequest) ProtoMessage()               {}
-func (*PutArtifactRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+func (m *PutArtifactRequest) Reset()         { *m = PutArtifactRequest{} }
+func (m *PutArtifactRequest) String() string { return proto.CompactTextString(m) }
+func (*PutArtifactRequest) ProtoMessage()    {}
+func (*PutArtifactRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{8}
+}
+func (m *PutArtifactRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PutArtifactRequest.Unmarshal(m, b)
+}
+func (m *PutArtifactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PutArtifactRequest.Marshal(b, m, deterministic)
+}
+func (dst *PutArtifactRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PutArtifactRequest.Merge(dst, src)
+}
+func (m *PutArtifactRequest) XXX_Size() int {
+	return xxx_messageInfo_PutArtifactRequest.Size(m)
+}
+func (m *PutArtifactRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_PutArtifactRequest.DiscardUnknown(m)
+}
 
-type isPutArtifactRequest_Content interface{ isPutArtifactRequest_Content() }
+var xxx_messageInfo_PutArtifactRequest proto.InternalMessageInfo
+
+type isPutArtifactRequest_Content interface {
+	isPutArtifactRequest_Content()
+}
 
 type PutArtifactRequest_Metadata struct {
-	Metadata *ArtifactMetadata `protobuf:"bytes,1,opt,name=metadata,oneof"`
+	Metadata *PutArtifactMetadata `protobuf:"bytes,1,opt,name=metadata,oneof"`
 }
 type PutArtifactRequest_Data struct {
 	Data *ArtifactChunk `protobuf:"bytes,2,opt,name=data,oneof"`
@@ -215,7 +469,7 @@ func (m *PutArtifactRequest) GetContent() isPutArtifactRequest_Content {
 	return nil
 }
 
-func (m *PutArtifactRequest) GetMetadata() *ArtifactMetadata {
+func (m *PutArtifactRequest) GetMetadata() *PutArtifactMetadata {
 	if x, ok := m.GetContent().(*PutArtifactRequest_Metadata); ok {
 		return x.Metadata
 	}
@@ -265,7 +519,7 @@ func _PutArtifactRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *p
 		if wire != proto.WireBytes {
 			return true, proto.ErrInternalBadWireType
 		}
-		msg := new(ArtifactMetadata)
+		msg := new(PutArtifactMetadata)
 		err := b.DecodeMessage(msg)
 		m.Content = &PutArtifactRequest_Metadata{msg}
 		return true, err
@@ -288,12 +542,12 @@ func _PutArtifactRequest_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Content.(type) {
 	case *PutArtifactRequest_Metadata:
 		s := proto.Size(x.Metadata)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *PutArtifactRequest_Data:
 		s := proto.Size(x.Data)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -304,24 +558,70 @@ func _PutArtifactRequest_OneofSizer(msg proto.Message) (n int) {
 }
 
 type PutArtifactResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PutArtifactResponse) Reset()         { *m = PutArtifactResponse{} }
+func (m *PutArtifactResponse) String() string { return proto.CompactTextString(m) }
+func (*PutArtifactResponse) ProtoMessage()    {}
+func (*PutArtifactResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{9}
+}
+func (m *PutArtifactResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PutArtifactResponse.Unmarshal(m, b)
+}
+func (m *PutArtifactResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PutArtifactResponse.Marshal(b, m, deterministic)
+}
+func (dst *PutArtifactResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PutArtifactResponse.Merge(dst, src)
+}
+func (m *PutArtifactResponse) XXX_Size() int {
+	return xxx_messageInfo_PutArtifactResponse.Size(m)
+}
+func (m *PutArtifactResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_PutArtifactResponse.DiscardUnknown(m)
 }
 
-func (m *PutArtifactResponse) Reset()                    { *m = PutArtifactResponse{} }
-func (m *PutArtifactResponse) String() string            { return proto.CompactTextString(m) }
-func (*PutArtifactResponse) ProtoMessage()               {}
-func (*PutArtifactResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+var xxx_messageInfo_PutArtifactResponse proto.InternalMessageInfo
 
 // A request to commit the manifest for a Job. All artifacts must have been successfully uploaded
 // before this call is made.
 type CommitManifestRequest struct {
 	// (Required) The manifest to commit.
 	Manifest *Manifest `protobuf:"bytes,1,opt,name=manifest" json:"manifest,omitempty"`
+	// (Required) A token for artifact staging session.
+	StagingSessionToken  string   `protobuf:"bytes,2,opt,name=staging_session_token,json=stagingSessionToken" json:"staging_session_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CommitManifestRequest) Reset()                    { *m = CommitManifestRequest{} }
-func (m *CommitManifestRequest) String() string            { return proto.CompactTextString(m) }
-func (*CommitManifestRequest) ProtoMessage()               {}
-func (*CommitManifestRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+func (m *CommitManifestRequest) Reset()         { *m = CommitManifestRequest{} }
+func (m *CommitManifestRequest) String() string { return proto.CompactTextString(m) }
+func (*CommitManifestRequest) ProtoMessage()    {}
+func (*CommitManifestRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{10}
+}
+func (m *CommitManifestRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommitManifestRequest.Unmarshal(m, b)
+}
+func (m *CommitManifestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommitManifestRequest.Marshal(b, m, deterministic)
+}
+func (dst *CommitManifestRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommitManifestRequest.Merge(dst, src)
+}
+func (m *CommitManifestRequest) XXX_Size() int {
+	return xxx_messageInfo_CommitManifestRequest.Size(m)
+}
+func (m *CommitManifestRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommitManifestRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommitManifestRequest proto.InternalMessageInfo
 
 func (m *CommitManifestRequest) GetManifest() *Manifest {
 	if m != nil {
@@ -330,16 +630,45 @@ func (m *CommitManifestRequest) GetManifest() *Manifest {
 	return nil
 }
 
+func (m *CommitManifestRequest) GetStagingSessionToken() string {
+	if m != nil {
+		return m.StagingSessionToken
+	}
+	return ""
+}
+
 // The result of committing a manifest.
 type CommitManifestResponse struct {
 	// (Required) An opaque token representing the entirety of the staged artifacts.
-	StagingToken string `protobuf:"bytes,1,opt,name=staging_token,json=stagingToken" json:"staging_token,omitempty"`
+	StagingToken         string   `protobuf:"bytes,1,opt,name=staging_token,json=stagingToken" json:"staging_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CommitManifestResponse) Reset()                    { *m = CommitManifestResponse{} }
-func (m *CommitManifestResponse) String() string            { return proto.CompactTextString(m) }
-func (*CommitManifestResponse) ProtoMessage()               {}
-func (*CommitManifestResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+func (m *CommitManifestResponse) Reset()         { *m = CommitManifestResponse{} }
+func (m *CommitManifestResponse) String() string { return proto.CompactTextString(m) }
+func (*CommitManifestResponse) ProtoMessage()    {}
+func (*CommitManifestResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_artifact_api_db48f46ba2cc63cb, []int{11}
+}
+func (m *CommitManifestResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommitManifestResponse.Unmarshal(m, b)
+}
+func (m *CommitManifestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommitManifestResponse.Marshal(b, m, deterministic)
+}
+func (dst *CommitManifestResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommitManifestResponse.Merge(dst, src)
+}
+func (m *CommitManifestResponse) XXX_Size() int {
+	return xxx_messageInfo_CommitManifestResponse.Size(m)
+}
+func (m *CommitManifestResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommitManifestResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommitManifestResponse proto.InternalMessageInfo
 
 func (m *CommitManifestResponse) GetStagingToken() string {
 	if m != nil {
@@ -357,6 +686,7 @@ func init() {
 	proto.RegisterType((*GetManifestResponse)(nil), "org.apache.beam.model.job_management.v1.GetManifestResponse")
 	proto.RegisterType((*GetArtifactRequest)(nil), "org.apache.beam.model.job_management.v1.GetArtifactRequest")
 	proto.RegisterType((*ArtifactChunk)(nil), "org.apache.beam.model.job_management.v1.ArtifactChunk")
+	proto.RegisterType((*PutArtifactMetadata)(nil), "org.apache.beam.model.job_management.v1.PutArtifactMetadata")
 	proto.RegisterType((*PutArtifactRequest)(nil), "org.apache.beam.model.job_management.v1.PutArtifactRequest")
 	proto.RegisterType((*PutArtifactResponse)(nil), "org.apache.beam.model.job_management.v1.PutArtifactResponse")
 	proto.RegisterType((*CommitManifestRequest)(nil), "org.apache.beam.model.job_management.v1.CommitManifestRequest")
@@ -371,8 +701,9 @@ var _ grpc.ClientConn
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion4
 
-// Client API for ArtifactStagingService service
-
+// ArtifactStagingServiceClient is the client API for ArtifactStagingService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ArtifactStagingServiceClient interface {
 	// Stage an artifact to be available during job execution. The first request must contain the
 	// name of the artifact. All future requests must contain sequential chunks of the content of
@@ -394,7 +725,7 @@ func NewArtifactStagingServiceClient(cc *grpc.ClientConn) ArtifactStagingService
 }
 
 func (c *artifactStagingServiceClient) PutArtifact(ctx context.Context, opts ...grpc.CallOption) (ArtifactStagingService_PutArtifactClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_ArtifactStagingService_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.job_management.v1.ArtifactStagingService/PutArtifact", opts...)
+	stream, err := c.cc.NewStream(ctx, &_ArtifactStagingService_serviceDesc.Streams[0], "/org.apache.beam.model.job_management.v1.ArtifactStagingService/PutArtifact", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -429,15 +760,14 @@ func (x *artifactStagingServicePutArtifactClient) CloseAndRecv() (*PutArtifactRe
 
 func (c *artifactStagingServiceClient) CommitManifest(ctx context.Context, in *CommitManifestRequest, opts ...grpc.CallOption) (*CommitManifestResponse, error) {
 	out := new(CommitManifestResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.ArtifactStagingService/CommitManifest", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.ArtifactStagingService/CommitManifest", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
 	return out, nil
 }
 
-// Server API for ArtifactStagingService service
-
+// ArtifactStagingServiceServer is the server API for ArtifactStagingService service.
 type ArtifactStagingServiceServer interface {
 	// Stage an artifact to be available during job execution. The first request must contain the
 	// name of the artifact. All future requests must contain sequential chunks of the content of
@@ -517,8 +847,9 @@ var _ArtifactStagingService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_artifact_api.proto",
 }
 
-// Client API for ArtifactRetrievalService service
-
+// ArtifactRetrievalServiceClient is the client API for ArtifactRetrievalService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ArtifactRetrievalServiceClient interface {
 	// Get the manifest for the job
 	GetManifest(ctx context.Context, in *GetManifestRequest, opts ...grpc.CallOption) (*GetManifestResponse, error)
@@ -536,7 +867,7 @@ func NewArtifactRetrievalServiceClient(cc *grpc.ClientConn) ArtifactRetrievalSer
 
 func (c *artifactRetrievalServiceClient) GetManifest(ctx context.Context, in *GetManifestRequest, opts ...grpc.CallOption) (*GetManifestResponse, error) {
 	out := new(GetManifestResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.ArtifactRetrievalService/GetManifest", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.ArtifactRetrievalService/GetManifest", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -544,7 +875,7 @@ func (c *artifactRetrievalServiceClient) GetManifest(ctx context.Context, in *Ge
 }
 
 func (c *artifactRetrievalServiceClient) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (ArtifactRetrievalService_GetArtifactClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_ArtifactRetrievalService_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.job_management.v1.ArtifactRetrievalService/GetArtifact", opts...)
+	stream, err := c.cc.NewStream(ctx, &_ArtifactRetrievalService_serviceDesc.Streams[0], "/org.apache.beam.model.job_management.v1.ArtifactRetrievalService/GetArtifact", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -575,8 +906,7 @@ func (x *artifactRetrievalServiceGetArtifactClient) Recv() (*ArtifactChunk, erro
 	return m, nil
 }
 
-// Server API for ArtifactRetrievalService service
-
+// ArtifactRetrievalServiceServer is the server API for ArtifactRetrievalService service.
 type ArtifactRetrievalServiceServer interface {
 	// Get the manifest for the job
 	GetManifest(context.Context, *GetManifestRequest) (*GetManifestResponse, error)
@@ -646,43 +976,48 @@ var _ArtifactRetrievalService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_artifact_api.proto",
 }
 
-func init() { proto.RegisterFile("beam_artifact_api.proto", fileDescriptor1) }
-
-var fileDescriptor1 = []byte{
-	// 557 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcf, 0x6e, 0xd3, 0x4e,
-	0x10, 0xee, 0x26, 0x3f, 0xfd, 0x70, 0xc6, 0x0d, 0x8a, 0xb6, 0xb4, 0x58, 0x39, 0x45, 0x5b, 0x09,
-	0x72, 0xb2, 0x9a, 0x20, 0x90, 0x10, 0x7f, 0xaa, 0xa6, 0x87, 0xf6, 0xd0, 0x48, 0x95, 0x0b, 0x42,
-	0x2a, 0x87, 0x68, 0x93, 0x6c, 0xd2, 0xa5, 0xd9, 0x5d, 0x63, 0x6f, 0x22, 0xb8, 0x73, 0x40, 0xdc,
-	0x78, 0x0f, 0x5e, 0x80, 0x17, 0xe0, 0x6d, 0x78, 0x07, 0xe4, 0xf5, 0xda, 0xc4, 0x49, 0x90, 0x92,
-	0xa8, 0xb7, 0xd1, 0x78, 0xe6, 0x9b, 0x6f, 0xbe, 0x6f, 0x27, 0x81, 0x87, 0x7d, 0x46, 0x45, 0x8f,
-	0x46, 0x9a, 0x8f, 0xe8, 0x40, 0xf7, 0x68, 0xc8, 0xfd, 0x30, 0x52, 0x5a, 0xe1, 0xc7, 0x2a, 0x1a,
-	0xfb, 0x34, 0xa4, 0x83, 0x1b, 0xe6, 0x27, 0x35, 0xbe, 0x50, 0x43, 0x36, 0xf1, 0x3f, 0xa8, 0x7e,
-	0x4f, 0x50, 0x49, 0xc7, 0x4c, 0x30, 0xa9, 0xfd, 0x59, 0x8b, 0x5c, 0x43, 0xed, 0xc4, 0xb6, 0x77,
-	0x99, 0xa6, 0x43, 0xaa, 0x29, 0xc6, 0xf0, 0x9f, 0xa4, 0x82, 0x79, 0xa8, 0x81, 0x9a, 0x95, 0xc0,
-	0xc4, 0xb8, 0x01, 0x6e, 0xc8, 0x22, 0xc1, 0xe3, 0x98, 0x2b, 0x19, 0x7b, 0xa5, 0x06, 0x6a, 0x56,
-	0x83, 0xf9, 0x14, 0xae, 0x41, 0x59, 0x0c, 0x9f, 0x7a, 0x65, 0xd3, 0x94, 0x84, 0x84, 0x82, 0xd3,
-	0xa5, 0x92, 0x8f, 0x58, 0xac, 0xf1, 0x5b, 0x70, 0x32, 0x9a, 0x1e, 0x6a, 0x94, 0x9b, 0x6e, 0xfb,
-	0xb9, 0xbf, 0x26, 0x47, 0x7f, 0x91, 0x60, 0x90, 0x43, 0x91, 0xdf, 0x08, 0xaa, 0x97, 0x91, 0xfa,
-	0xf4, 0x39, 0x1f, 0xd4, 0x05, 0x47, 0xd8, 0xd8, 0x2c, 0xe0, 0xb6, 0x5b, 0x6b, 0x0f, 0xca, 0x40,
-	0x82, 0x1c, 0x02, 0xbf, 0x07, 0x67, 0xa2, 0x06, 0x54, 0x73, 0x25, 0xbd, 0x92, 0xe1, 0x7d, 0xbc,
-	0x36, 0x5c, 0x81, 0x98, 0x7f, 0x61, 0x61, 0x82, 0x1c, 0xb0, 0x7e, 0x04, 0x4e, 0x96, 0x5d, 0x29,
-	0x7a, 0x0d, 0xca, 0xd3, 0x88, 0x1b, 0xb1, 0x2b, 0x41, 0x12, 0x92, 0x07, 0x80, 0xcf, 0x98, 0xce,
-	0x79, 0xb2, 0x8f, 0x53, 0x16, 0x6b, 0x32, 0x84, 0xbd, 0x42, 0x36, 0x0e, 0x95, 0x8c, 0xd9, 0x1d,
-	0x4b, 0x41, 0x9a, 0x66, 0x76, 0x66, 0x86, 0x9d, 0xbd, 0x8a, 0x37, 0x39, 0x84, 0x6a, 0x56, 0x76,
-	0x7a, 0x33, 0x95, 0xb7, 0x49, 0x51, 0x62, 0x9c, 0x29, 0xda, 0x0d, 0x4c, 0x4c, 0x7e, 0x21, 0xc0,
-	0x97, 0xd3, 0x25, 0xbc, 0x77, 0xe0, 0x08, 0xeb, 0xb3, 0x25, 0xbd, 0xfd, 0x43, 0x39, 0xdf, 0x09,
-	0x72, 0x30, 0x7c, 0x61, 0x39, 0x94, 0x0c, 0xe8, 0xb3, 0x8d, 0x41, 0xcd, 0x26, 0xe7, 0x3b, 0x29,
-	0xfb, 0x4e, 0x05, 0xee, 0x0d, 0x94, 0xd4, 0x4c, 0x6a, 0xb2, 0x0f, 0x7b, 0x85, 0x3d, 0x52, 0xf5,
-	0xc9, 0x08, 0xf6, 0x4f, 0x95, 0x10, 0x7c, 0xd1, 0xad, 0xbb, 0xb6, 0xe5, 0x15, 0x1c, 0x2c, 0xce,
-	0xb1, 0xfe, 0x1f, 0x42, 0x35, 0xd6, 0x74, 0xcc, 0xe5, 0xb8, 0xa7, 0xd5, 0x2d, 0x93, 0xd6, 0xa3,
-	0x5d, 0x9b, 0x7c, 0x93, 0xe4, 0xda, 0x3f, 0x4b, 0x70, 0x90, 0x71, 0xbf, 0x4a, 0x3f, 0x5c, 0xb1,
-	0x68, 0xc6, 0x07, 0x0c, 0x7f, 0x43, 0xe0, 0xce, 0x6d, 0x86, 0x5f, 0xac, 0xff, 0xf2, 0x97, 0x7c,
-	0xad, 0xbf, 0xdc, 0xae, 0x39, 0x5d, 0xa5, 0x89, 0xf0, 0x77, 0x04, 0xf7, 0x8b, 0x7b, 0xe2, 0xd7,
-	0x6b, 0x43, 0xae, 0x34, 0xa2, 0x7e, 0xbc, 0x75, 0x7f, 0xca, 0xaa, 0xfd, 0xa3, 0x04, 0xde, 0x5f,
-	0xaa, 0x3a, 0xe2, 0x6c, 0x46, 0x27, 0x99, 0x7a, 0x5f, 0x11, 0xb8, 0x73, 0x57, 0xb9, 0x81, 0x7a,
-	0xcb, 0x17, 0xbe, 0x81, 0x7a, 0xab, 0x7e, 0x08, 0xbe, 0xa4, 0x54, 0xb6, 0x30, 0x72, 0xf9, 0xe0,
-	0xeb, 0x5b, 0x5e, 0xce, 0x11, 0xea, 0x9c, 0xc1, 0xa3, 0x7f, 0xb6, 0x16, 0x3a, 0x3b, 0x6e, 0xd6,
-	0x7a, 0x12, 0xf2, 0xeb, 0x5a, 0xe1, 0x73, 0x6f, 0xd6, 0xea, 0xff, 0x6f, 0xfe, 0xe4, 0x9e, 0xfc,
-	0x09, 0x00, 0x00, 0xff, 0xff, 0x80, 0xfd, 0xd5, 0x65, 0xff, 0x06, 0x00, 0x00,
+func init() {
+	proto.RegisterFile("beam_artifact_api.proto", fileDescriptor_beam_artifact_api_db48f46ba2cc63cb)
+}
+
+var fileDescriptor_beam_artifact_api_db48f46ba2cc63cb = []byte{
+	// 602 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcf, 0x6e, 0xd3, 0x30,
+	0x1c, 0x9e, 0x5b, 0x04, 0xdd, 0x2f, 0x2b, 0xaa, 0x3c, 0x3a, 0xa2, 0x9e, 0x2a, 0x4f, 0x82, 0x9e,
+	0xa2, 0xb5, 0x08, 0x24, 0xc4, 0x60, 0x5a, 0x77, 0xd8, 0x0e, 0xab, 0x34, 0x65, 0x70, 0x29, 0x87,
+	0xc8, 0x6d, 0xbd, 0xce, 0xac, 0xb1, 0x43, 0xe2, 0x56, 0x70, 0xe7, 0x80, 0xb8, 0x71, 0xe5, 0xc4,
+	0x03, 0xf0, 0x02, 0x3c, 0x02, 0x0f, 0xc3, 0x3b, 0xa0, 0x38, 0x71, 0x97, 0xf4, 0x8f, 0xd4, 0x96,
+	0xdd, 0x2c, 0xdb, 0xdf, 0xf7, 0xfb, 0x7e, 0xdf, 0xef, 0x8b, 0x03, 0x8f, 0x7b, 0x8c, 0xfa, 0x1e,
+	0x0d, 0x15, 0xbf, 0xa2, 0x7d, 0xe5, 0xd1, 0x80, 0x3b, 0x41, 0x28, 0x95, 0xc4, 0x4f, 0x65, 0x38,
+	0x74, 0x68, 0x40, 0xfb, 0xd7, 0xcc, 0x89, 0xef, 0x38, 0xbe, 0x1c, 0xb0, 0x91, 0xf3, 0x41, 0xf6,
+	0x3c, 0x9f, 0x0a, 0x3a, 0x64, 0x3e, 0x13, 0xca, 0x99, 0x34, 0x49, 0x17, 0x2a, 0xc7, 0x29, 0xbc,
+	0xc3, 0x14, 0x1d, 0x50, 0x45, 0x31, 0x86, 0x7b, 0x82, 0xfa, 0xcc, 0x46, 0x75, 0xd4, 0xd8, 0x76,
+	0xf5, 0x1a, 0xd7, 0xc1, 0x0a, 0x58, 0xe8, 0xf3, 0x28, 0xe2, 0x52, 0x44, 0x76, 0xa1, 0x8e, 0x1a,
+	0x65, 0x37, 0xbb, 0x85, 0x2b, 0x50, 0xf4, 0x07, 0xcf, 0xed, 0xa2, 0x06, 0xc5, 0x4b, 0x42, 0xa1,
+	0xd4, 0xa1, 0x82, 0x5f, 0xb1, 0x48, 0xe1, 0x77, 0x50, 0x32, 0x32, 0x6d, 0x54, 0x2f, 0x36, 0xac,
+	0xd6, 0x4b, 0x67, 0x45, 0x8d, 0xce, 0xac, 0x40, 0x77, 0x4a, 0x45, 0xfe, 0x22, 0x28, 0x5f, 0x84,
+	0xf2, 0xd3, 0xe7, 0x69, 0xa1, 0x0e, 0x94, 0xfc, 0x74, 0xad, 0x1b, 0xb0, 0x5a, 0xcd, 0x95, 0x0b,
+	0x19, 0x12, 0x77, 0x4a, 0x81, 0xdf, 0x43, 0x69, 0x24, 0xfb, 0x54, 0x71, 0x29, 0xec, 0x82, 0xd6,
+	0x7d, 0xb4, 0x32, 0x5d, 0x4e, 0x98, 0x73, 0x9e, 0xd2, 0xb8, 0x53, 0xc2, 0xda, 0x01, 0x94, 0xcc,
+	0xee, 0x42, 0xd3, 0x2b, 0x50, 0x1c, 0x87, 0x5c, 0x9b, 0xbd, 0xed, 0xc6, 0x4b, 0xf2, 0x08, 0xf0,
+	0x29, 0x53, 0x53, 0x9d, 0xec, 0xe3, 0x98, 0x45, 0x8a, 0x0c, 0x60, 0x37, 0xb7, 0x1b, 0x05, 0x52,
+	0x44, 0xec, 0x8e, 0xad, 0x20, 0x0d, 0x5d, 0xdb, 0x0c, 0x23, 0xad, 0xbd, 0x48, 0x37, 0xd9, 0x87,
+	0xb2, 0xb9, 0x76, 0x72, 0x3d, 0x16, 0x37, 0xf1, 0xa5, 0x78, 0x70, 0xfa, 0xd2, 0x8e, 0xab, 0xd7,
+	0xe4, 0x27, 0x82, 0xdd, 0x8b, 0xb1, 0x9a, 0x4b, 0x5f, 0x0b, 0xaa, 0x91, 0xa2, 0x43, 0x2e, 0x86,
+	0x5e, 0xc4, 0x74, 0xb6, 0x3c, 0x25, 0x6f, 0x98, 0x48, 0x2b, 0xec, 0xa6, 0x87, 0x97, 0xc9, 0xd9,
+	0xdb, 0xf8, 0x28, 0x4e, 0x97, 0x9f, 0xe2, 0xb5, 0x5b, 0xff, 0x97, 0x2e, 0x43, 0x45, 0xfe, 0x20,
+	0xc0, 0x19, 0x89, 0xa6, 0xe5, 0x6e, 0xa6, 0x5a, 0xe2, 0xeb, 0xe1, 0xea, 0x99, 0x98, 0xef, 0xf8,
+	0x6c, 0xeb, 0xb6, 0x24, 0x3e, 0x4f, 0x9d, 0x4a, 0xba, 0x78, 0xb1, 0x76, 0x17, 0xda, 0xef, 0xb3,
+	0xad, 0xc4, 0xe3, 0xf6, 0x36, 0x3c, 0xe8, 0x4b, 0xa1, 0x98, 0x50, 0xa4, 0x9a, 0x73, 0xdb, 0x64,
+	0x84, 0xfc, 0x40, 0x50, 0x3d, 0x91, 0xbe, 0xcf, 0x67, 0x43, 0x75, 0xd7, 0x1f, 0xd2, 0xd2, 0xb1,
+	0x16, 0x96, 0x8e, 0x95, 0xbc, 0x86, 0xbd, 0x59, 0x6d, 0x69, 0xb4, 0xf7, 0xa1, 0x6c, 0xd8, 0xb2,
+	0xe1, 0xd8, 0x49, 0x37, 0x35, 0xbc, 0xf5, 0xbb, 0x00, 0x7b, 0xa6, 0xe1, 0x4b, 0x43, 0x1f, 0x4e,
+	0x78, 0x9f, 0xe1, 0x6f, 0x08, 0xac, 0x8c, 0x1d, 0xf8, 0xd5, 0x26, 0x03, 0x4c, 0x9d, 0xaa, 0x1d,
+	0x6e, 0x06, 0x4e, 0x5a, 0x69, 0x20, 0xfc, 0x1d, 0xc1, 0xc3, 0x7c, 0x9f, 0xf8, 0xcd, 0xca, 0x94,
+	0x0b, 0x87, 0x57, 0x3b, 0xda, 0x18, 0x9f, 0xa8, 0x6a, 0xfd, 0x2a, 0x80, 0x7d, 0x2b, 0x55, 0x85,
+	0x9c, 0x4d, 0xe8, 0xc8, 0xb8, 0xf7, 0x15, 0x81, 0x95, 0x79, 0x70, 0xd6, 0x70, 0x6f, 0xfe, 0xf1,
+	0x5a, 0xc3, 0xbd, 0x45, 0x6f, 0xdc, 0x97, 0x44, 0xca, 0x06, 0x83, 0x9c, 0x7f, 0xcb, 0x6a, 0x1b,
+	0x7e, 0x6e, 0x07, 0xa8, 0x7d, 0x0a, 0x4f, 0x96, 0x42, 0x73, 0xc8, 0xb6, 0x65, 0xa0, 0xc7, 0x01,
+	0xef, 0x56, 0x72, 0xc7, 0xde, 0xa4, 0xd9, 0xbb, 0xaf, 0xff, 0xdf, 0xcf, 0xfe, 0x05, 0x00, 0x00,
+	0xff, 0xff, 0x37, 0x15, 0xfa, 0xe1, 0xda, 0x07, 0x00, 0x00,
 }
diff --git a/sdks/go/pkg/beam/model/jobmanagement_v1/beam_job_api.pb.go b/sdks/go/pkg/beam/model/jobmanagement_v1/beam_job_api.pb.go
index bc3a02bb5a4..ae664694322 100644
--- a/sdks/go/pkg/beam/model/jobmanagement_v1/beam_job_api.pb.go
+++ b/sdks/go/pkg/beam/model/jobmanagement_v1/beam_job_api.pb.go
@@ -1,46 +1,13 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: beam_job_api.proto
 
-/*
-Package jobmanagement_v1 is a generated protocol buffer package.
-
-It is generated from these files:
-	beam_job_api.proto
-	beam_artifact_api.proto
-
-It has these top-level messages:
-	PrepareJobRequest
-	PrepareJobResponse
-	RunJobRequest
-	RunJobResponse
-	CancelJobRequest
-	CancelJobResponse
-	GetJobStateRequest
-	GetJobStateResponse
-	JobMessagesRequest
-	JobMessage
-	JobMessagesResponse
-	JobState
-	ArtifactMetadata
-	Manifest
-	ProxyManifest
-	GetManifestRequest
-	GetManifestResponse
-	GetArtifactRequest
-	ArtifactChunk
-	PutArtifactRequest
-	PutArtifactResponse
-	CommitManifestRequest
-	CommitManifestResponse
-*/
 package jobmanagement_v1
 
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
-import org_apache_beam_model_pipeline_v1 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
-import org_apache_beam_model_pipeline_v11 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
-import google_protobuf2 "github.com/golang/protobuf/ptypes/struct"
+import pipeline_v1 "github.com/apache/beam/sdks/go/pkg/beam/model/pipeline_v1"
+import _struct "github.com/golang/protobuf/ptypes/struct"
 
 import (
 	context "golang.org/x/net/context"
@@ -90,7 +57,7 @@ func (x JobMessage_MessageImportance) String() string {
 	return proto.EnumName(JobMessage_MessageImportance_name, int32(x))
 }
 func (JobMessage_MessageImportance) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{9, 0}
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{9, 0}
 }
 
 type JobState_Enum int32
@@ -139,31 +106,55 @@ var JobState_Enum_value = map[string]int32{
 func (x JobState_Enum) String() string {
 	return proto.EnumName(JobState_Enum_name, int32(x))
 }
-func (JobState_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 0} }
+func (JobState_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{11, 0}
+}
 
 // Prepare is a synchronous request that returns a preparationId back
 // Throws error GRPC_STATUS_UNAVAILABLE if server is down
 // Throws error ALREADY_EXISTS if the jobName is reused. Runners are permitted to deduplicate based on the name of the job.
 // Throws error UNKNOWN for all other issues
 type PrepareJobRequest struct {
-	Pipeline        *org_apache_beam_model_pipeline_v1.Pipeline `protobuf:"bytes,1,opt,name=pipeline" json:"pipeline,omitempty"`
-	PipelineOptions *google_protobuf2.Struct                    `protobuf:"bytes,2,opt,name=pipeline_options,json=pipelineOptions" json:"pipeline_options,omitempty"`
-	JobName         string                                      `protobuf:"bytes,3,opt,name=job_name,json=jobName" json:"job_name,omitempty"`
+	Pipeline             *pipeline_v1.Pipeline `protobuf:"bytes,1,opt,name=pipeline" json:"pipeline,omitempty"`
+	PipelineOptions      *_struct.Struct       `protobuf:"bytes,2,opt,name=pipeline_options,json=pipelineOptions" json:"pipeline_options,omitempty"`
+	JobName              string                `protobuf:"bytes,3,opt,name=job_name,json=jobName" json:"job_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *PrepareJobRequest) Reset()         { *m = PrepareJobRequest{} }
+func (m *PrepareJobRequest) String() string { return proto.CompactTextString(m) }
+func (*PrepareJobRequest) ProtoMessage()    {}
+func (*PrepareJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{0}
+}
+func (m *PrepareJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PrepareJobRequest.Unmarshal(m, b)
+}
+func (m *PrepareJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PrepareJobRequest.Marshal(b, m, deterministic)
+}
+func (dst *PrepareJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PrepareJobRequest.Merge(dst, src)
+}
+func (m *PrepareJobRequest) XXX_Size() int {
+	return xxx_messageInfo_PrepareJobRequest.Size(m)
+}
+func (m *PrepareJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_PrepareJobRequest.DiscardUnknown(m)
 }
 
-func (m *PrepareJobRequest) Reset()                    { *m = PrepareJobRequest{} }
-func (m *PrepareJobRequest) String() string            { return proto.CompactTextString(m) }
-func (*PrepareJobRequest) ProtoMessage()               {}
-func (*PrepareJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+var xxx_messageInfo_PrepareJobRequest proto.InternalMessageInfo
 
-func (m *PrepareJobRequest) GetPipeline() *org_apache_beam_model_pipeline_v1.Pipeline {
+func (m *PrepareJobRequest) GetPipeline() *pipeline_v1.Pipeline {
 	if m != nil {
 		return m.Pipeline
 	}
 	return nil
 }
 
-func (m *PrepareJobRequest) GetPipelineOptions() *google_protobuf2.Struct {
+func (m *PrepareJobRequest) GetPipelineOptions() *_struct.Struct {
 	if m != nil {
 		return m.PipelineOptions
 	}
@@ -179,17 +170,42 @@ func (m *PrepareJobRequest) GetJobName() string {
 
 type PrepareJobResponse struct {
 	// (required) The ID used to associate calls made while preparing the job. preparationId is used
-	// to run the job, as well as in other pre-execution APIs such as Artifact staging.
+	// to run the job.
 	PreparationId string `protobuf:"bytes,1,opt,name=preparation_id,json=preparationId" json:"preparation_id,omitempty"`
 	// An endpoint which exposes the Beam Artifact Staging API. Artifacts used by the job should be
 	// staged to this endpoint, and will be available during job execution.
-	ArtifactStagingEndpoint *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor `protobuf:"bytes,2,opt,name=artifact_staging_endpoint,json=artifactStagingEndpoint" json:"artifact_staging_endpoint,omitempty"`
+	ArtifactStagingEndpoint *pipeline_v1.ApiServiceDescriptor `protobuf:"bytes,2,opt,name=artifact_staging_endpoint,json=artifactStagingEndpoint" json:"artifact_staging_endpoint,omitempty"`
+	// (required) Token for the artifact staging. This token also represent an artifact
+	// staging session with the artifact staging service.
+	StagingSessionToken  string   `protobuf:"bytes,3,opt,name=staging_session_token,json=stagingSessionToken" json:"staging_session_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PrepareJobResponse) Reset()         { *m = PrepareJobResponse{} }
+func (m *PrepareJobResponse) String() string { return proto.CompactTextString(m) }
+func (*PrepareJobResponse) ProtoMessage()    {}
+func (*PrepareJobResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{1}
+}
+func (m *PrepareJobResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PrepareJobResponse.Unmarshal(m, b)
+}
+func (m *PrepareJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PrepareJobResponse.Marshal(b, m, deterministic)
+}
+func (dst *PrepareJobResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PrepareJobResponse.Merge(dst, src)
+}
+func (m *PrepareJobResponse) XXX_Size() int {
+	return xxx_messageInfo_PrepareJobResponse.Size(m)
+}
+func (m *PrepareJobResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_PrepareJobResponse.DiscardUnknown(m)
 }
 
-func (m *PrepareJobResponse) Reset()                    { *m = PrepareJobResponse{} }
-func (m *PrepareJobResponse) String() string            { return proto.CompactTextString(m) }
-func (*PrepareJobResponse) ProtoMessage()               {}
-func (*PrepareJobResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+var xxx_messageInfo_PrepareJobResponse proto.InternalMessageInfo
 
 func (m *PrepareJobResponse) GetPreparationId() string {
 	if m != nil {
@@ -198,13 +214,20 @@ func (m *PrepareJobResponse) GetPreparationId() string {
 	return ""
 }
 
-func (m *PrepareJobResponse) GetArtifactStagingEndpoint() *org_apache_beam_model_pipeline_v11.ApiServiceDescriptor {
+func (m *PrepareJobResponse) GetArtifactStagingEndpoint() *pipeline_v1.ApiServiceDescriptor {
 	if m != nil {
 		return m.ArtifactStagingEndpoint
 	}
 	return nil
 }
 
+func (m *PrepareJobResponse) GetStagingSessionToken() string {
+	if m != nil {
+		return m.StagingSessionToken
+	}
+	return ""
+}
+
 // Run is a synchronous request that returns a jobId back.
 // Throws error GRPC_STATUS_UNAVAILABLE if server is down
 // Throws error NOT_FOUND if the preparation ID does not exist
@@ -215,13 +238,35 @@ type RunJobRequest struct {
 	PreparationId string `protobuf:"bytes,1,opt,name=preparation_id,json=preparationId" json:"preparation_id,omitempty"`
 	// (optional) If any artifacts have been staged for this job, contains the staging_token returned
 	// from the CommitManifestResponse.
-	StagingToken string `protobuf:"bytes,2,opt,name=staging_token,json=stagingToken" json:"staging_token,omitempty"`
+	StagingToken         string   `protobuf:"bytes,2,opt,name=staging_token,json=stagingToken" json:"staging_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *RunJobRequest) Reset()                    { *m = RunJobRequest{} }
-func (m *RunJobRequest) String() string            { return proto.CompactTextString(m) }
-func (*RunJobRequest) ProtoMessage()               {}
-func (*RunJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *RunJobRequest) Reset()         { *m = RunJobRequest{} }
+func (m *RunJobRequest) String() string { return proto.CompactTextString(m) }
+func (*RunJobRequest) ProtoMessage()    {}
+func (*RunJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{2}
+}
+func (m *RunJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RunJobRequest.Unmarshal(m, b)
+}
+func (m *RunJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RunJobRequest.Marshal(b, m, deterministic)
+}
+func (dst *RunJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RunJobRequest.Merge(dst, src)
+}
+func (m *RunJobRequest) XXX_Size() int {
+	return xxx_messageInfo_RunJobRequest.Size(m)
+}
+func (m *RunJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_RunJobRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RunJobRequest proto.InternalMessageInfo
 
 func (m *RunJobRequest) GetPreparationId() string {
 	if m != nil {
@@ -238,13 +283,35 @@ func (m *RunJobRequest) GetStagingToken() string {
 }
 
 type RunJobResponse struct {
-	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	JobId                string   `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RunJobResponse) Reset()         { *m = RunJobResponse{} }
+func (m *RunJobResponse) String() string { return proto.CompactTextString(m) }
+func (*RunJobResponse) ProtoMessage()    {}
+func (*RunJobResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{3}
+}
+func (m *RunJobResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RunJobResponse.Unmarshal(m, b)
+}
+func (m *RunJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RunJobResponse.Marshal(b, m, deterministic)
+}
+func (dst *RunJobResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RunJobResponse.Merge(dst, src)
+}
+func (m *RunJobResponse) XXX_Size() int {
+	return xxx_messageInfo_RunJobResponse.Size(m)
+}
+func (m *RunJobResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_RunJobResponse.DiscardUnknown(m)
 }
 
-func (m *RunJobResponse) Reset()                    { *m = RunJobResponse{} }
-func (m *RunJobResponse) String() string            { return proto.CompactTextString(m) }
-func (*RunJobResponse) ProtoMessage()               {}
-func (*RunJobResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+var xxx_messageInfo_RunJobResponse proto.InternalMessageInfo
 
 func (m *RunJobResponse) GetJobId() string {
 	if m != nil {
@@ -257,13 +324,35 @@ func (m *RunJobResponse) GetJobId() string {
 // Throws error GRPC_STATUS_UNAVAILABLE if server is down
 // Throws error NOT_FOUND if the jobId is not found
 type CancelJobRequest struct {
-	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	JobId                string   `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CancelJobRequest) Reset()                    { *m = CancelJobRequest{} }
-func (m *CancelJobRequest) String() string            { return proto.CompactTextString(m) }
-func (*CancelJobRequest) ProtoMessage()               {}
-func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (m *CancelJobRequest) Reset()         { *m = CancelJobRequest{} }
+func (m *CancelJobRequest) String() string { return proto.CompactTextString(m) }
+func (*CancelJobRequest) ProtoMessage()    {}
+func (*CancelJobRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{4}
+}
+func (m *CancelJobRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CancelJobRequest.Unmarshal(m, b)
+}
+func (m *CancelJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CancelJobRequest.Marshal(b, m, deterministic)
+}
+func (dst *CancelJobRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CancelJobRequest.Merge(dst, src)
+}
+func (m *CancelJobRequest) XXX_Size() int {
+	return xxx_messageInfo_CancelJobRequest.Size(m)
+}
+func (m *CancelJobRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CancelJobRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CancelJobRequest proto.InternalMessageInfo
 
 func (m *CancelJobRequest) GetJobId() string {
 	if m != nil {
@@ -274,13 +363,35 @@ func (m *CancelJobRequest) GetJobId() string {
 
 // Valid responses include any terminal state or CANCELLING
 type CancelJobResponse struct {
-	State JobState_Enum `protobuf:"varint,1,opt,name=state,enum=org.apache.beam.model.job_management.v1.JobState_Enum" json:"state,omitempty"`
+	State                JobState_Enum `protobuf:"varint,1,opt,name=state,enum=org.apache.beam.model.job_management.v1.JobState_Enum" json:"state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
 }
 
-func (m *CancelJobResponse) Reset()                    { *m = CancelJobResponse{} }
-func (m *CancelJobResponse) String() string            { return proto.CompactTextString(m) }
-func (*CancelJobResponse) ProtoMessage()               {}
-func (*CancelJobResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+func (m *CancelJobResponse) Reset()         { *m = CancelJobResponse{} }
+func (m *CancelJobResponse) String() string { return proto.CompactTextString(m) }
+func (*CancelJobResponse) ProtoMessage()    {}
+func (*CancelJobResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{5}
+}
+func (m *CancelJobResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CancelJobResponse.Unmarshal(m, b)
+}
+func (m *CancelJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CancelJobResponse.Marshal(b, m, deterministic)
+}
+func (dst *CancelJobResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CancelJobResponse.Merge(dst, src)
+}
+func (m *CancelJobResponse) XXX_Size() int {
+	return xxx_messageInfo_CancelJobResponse.Size(m)
+}
+func (m *CancelJobResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CancelJobResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CancelJobResponse proto.InternalMessageInfo
 
 func (m *CancelJobResponse) GetState() JobState_Enum {
 	if m != nil {
@@ -293,13 +404,35 @@ func (m *CancelJobResponse) GetState() JobState_Enum {
 // Throws error GRPC_STATUS_UNAVAILABLE if server is down
 // Throws error NOT_FOUND if the jobId is not found
 type GetJobStateRequest struct {
-	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	JobId                string   `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetJobStateRequest) Reset()         { *m = GetJobStateRequest{} }
+func (m *GetJobStateRequest) String() string { return proto.CompactTextString(m) }
+func (*GetJobStateRequest) ProtoMessage()    {}
+func (*GetJobStateRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{6}
+}
+func (m *GetJobStateRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetJobStateRequest.Unmarshal(m, b)
+}
+func (m *GetJobStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetJobStateRequest.Marshal(b, m, deterministic)
+}
+func (dst *GetJobStateRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetJobStateRequest.Merge(dst, src)
+}
+func (m *GetJobStateRequest) XXX_Size() int {
+	return xxx_messageInfo_GetJobStateRequest.Size(m)
+}
+func (m *GetJobStateRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetJobStateRequest.DiscardUnknown(m)
 }
 
-func (m *GetJobStateRequest) Reset()                    { *m = GetJobStateRequest{} }
-func (m *GetJobStateRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetJobStateRequest) ProtoMessage()               {}
-func (*GetJobStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+var xxx_messageInfo_GetJobStateRequest proto.InternalMessageInfo
 
 func (m *GetJobStateRequest) GetJobId() string {
 	if m != nil {
@@ -309,13 +442,35 @@ func (m *GetJobStateRequest) GetJobId() string {
 }
 
 type GetJobStateResponse struct {
-	State JobState_Enum `protobuf:"varint,1,opt,name=state,enum=org.apache.beam.model.job_management.v1.JobState_Enum" json:"state,omitempty"`
+	State                JobState_Enum `protobuf:"varint,1,opt,name=state,enum=org.apache.beam.model.job_management.v1.JobState_Enum" json:"state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
 }
 
-func (m *GetJobStateResponse) Reset()                    { *m = GetJobStateResponse{} }
-func (m *GetJobStateResponse) String() string            { return proto.CompactTextString(m) }
-func (*GetJobStateResponse) ProtoMessage()               {}
-func (*GetJobStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (m *GetJobStateResponse) Reset()         { *m = GetJobStateResponse{} }
+func (m *GetJobStateResponse) String() string { return proto.CompactTextString(m) }
+func (*GetJobStateResponse) ProtoMessage()    {}
+func (*GetJobStateResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{7}
+}
+func (m *GetJobStateResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetJobStateResponse.Unmarshal(m, b)
+}
+func (m *GetJobStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetJobStateResponse.Marshal(b, m, deterministic)
+}
+func (dst *GetJobStateResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetJobStateResponse.Merge(dst, src)
+}
+func (m *GetJobStateResponse) XXX_Size() int {
+	return xxx_messageInfo_GetJobStateResponse.Size(m)
+}
+func (m *GetJobStateResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetJobStateResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetJobStateResponse proto.InternalMessageInfo
 
 func (m *GetJobStateResponse) GetState() JobState_Enum {
 	if m != nil {
@@ -329,13 +484,35 @@ func (m *GetJobStateResponse) GetState() JobState_Enum {
 // and job messages back; one is used for logging and the other for detecting
 // the job ended.
 type JobMessagesRequest struct {
-	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	JobId                string   `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *JobMessagesRequest) Reset()                    { *m = JobMessagesRequest{} }
-func (m *JobMessagesRequest) String() string            { return proto.CompactTextString(m) }
-func (*JobMessagesRequest) ProtoMessage()               {}
-func (*JobMessagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (m *JobMessagesRequest) Reset()         { *m = JobMessagesRequest{} }
+func (m *JobMessagesRequest) String() string { return proto.CompactTextString(m) }
+func (*JobMessagesRequest) ProtoMessage()    {}
+func (*JobMessagesRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{8}
+}
+func (m *JobMessagesRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_JobMessagesRequest.Unmarshal(m, b)
+}
+func (m *JobMessagesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_JobMessagesRequest.Marshal(b, m, deterministic)
+}
+func (dst *JobMessagesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JobMessagesRequest.Merge(dst, src)
+}
+func (m *JobMessagesRequest) XXX_Size() int {
+	return xxx_messageInfo_JobMessagesRequest.Size(m)
+}
+func (m *JobMessagesRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_JobMessagesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_JobMessagesRequest proto.InternalMessageInfo
 
 func (m *JobMessagesRequest) GetJobId() string {
 	if m != nil {
@@ -345,16 +522,38 @@ func (m *JobMessagesRequest) GetJobId() string {
 }
 
 type JobMessage struct {
-	MessageId   string                       `protobuf:"bytes,1,opt,name=message_id,json=messageId" json:"message_id,omitempty"`
-	Time        string                       `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"`
-	Importance  JobMessage_MessageImportance `protobuf:"varint,3,opt,name=importance,enum=org.apache.beam.model.job_management.v1.JobMessage_MessageImportance" json:"importance,omitempty"`
-	MessageText string                       `protobuf:"bytes,4,opt,name=message_text,json=messageText" json:"message_text,omitempty"`
+	MessageId            string                       `protobuf:"bytes,1,opt,name=message_id,json=messageId" json:"message_id,omitempty"`
+	Time                 string                       `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"`
+	Importance           JobMessage_MessageImportance `protobuf:"varint,3,opt,name=importance,enum=org.apache.beam.model.job_management.v1.JobMessage_MessageImportance" json:"importance,omitempty"`
+	MessageText          string                       `protobuf:"bytes,4,opt,name=message_text,json=messageText" json:"message_text,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *JobMessage) Reset()         { *m = JobMessage{} }
+func (m *JobMessage) String() string { return proto.CompactTextString(m) }
+func (*JobMessage) ProtoMessage()    {}
+func (*JobMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{9}
+}
+func (m *JobMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_JobMessage.Unmarshal(m, b)
+}
+func (m *JobMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_JobMessage.Marshal(b, m, deterministic)
+}
+func (dst *JobMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JobMessage.Merge(dst, src)
+}
+func (m *JobMessage) XXX_Size() int {
+	return xxx_messageInfo_JobMessage.Size(m)
+}
+func (m *JobMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_JobMessage.DiscardUnknown(m)
 }
 
-func (m *JobMessage) Reset()                    { *m = JobMessage{} }
-func (m *JobMessage) String() string            { return proto.CompactTextString(m) }
-func (*JobMessage) ProtoMessage()               {}
-func (*JobMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+var xxx_messageInfo_JobMessage proto.InternalMessageInfo
 
 func (m *JobMessage) GetMessageId() string {
 	if m != nil {
@@ -388,15 +587,39 @@ type JobMessagesResponse struct {
 	// Types that are valid to be assigned to Response:
 	//	*JobMessagesResponse_MessageResponse
 	//	*JobMessagesResponse_StateResponse
-	Response isJobMessagesResponse_Response `protobuf_oneof:"response"`
+	Response             isJobMessagesResponse_Response `protobuf_oneof:"response"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
 }
 
-func (m *JobMessagesResponse) Reset()                    { *m = JobMessagesResponse{} }
-func (m *JobMessagesResponse) String() string            { return proto.CompactTextString(m) }
-func (*JobMessagesResponse) ProtoMessage()               {}
-func (*JobMessagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (m *JobMessagesResponse) Reset()         { *m = JobMessagesResponse{} }
+func (m *JobMessagesResponse) String() string { return proto.CompactTextString(m) }
+func (*JobMessagesResponse) ProtoMessage()    {}
+func (*JobMessagesResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{10}
+}
+func (m *JobMessagesResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_JobMessagesResponse.Unmarshal(m, b)
+}
+func (m *JobMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_JobMessagesResponse.Marshal(b, m, deterministic)
+}
+func (dst *JobMessagesResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JobMessagesResponse.Merge(dst, src)
+}
+func (m *JobMessagesResponse) XXX_Size() int {
+	return xxx_messageInfo_JobMessagesResponse.Size(m)
+}
+func (m *JobMessagesResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_JobMessagesResponse.DiscardUnknown(m)
+}
 
-type isJobMessagesResponse_Response interface{ isJobMessagesResponse_Response() }
+var xxx_messageInfo_JobMessagesResponse proto.InternalMessageInfo
+
+type isJobMessagesResponse_Response interface {
+	isJobMessagesResponse_Response()
+}
 
 type JobMessagesResponse_MessageResponse struct {
 	MessageResponse *JobMessage `protobuf:"bytes,1,opt,name=message_response,json=messageResponse,oneof"`
@@ -488,12 +711,12 @@ func _JobMessagesResponse_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Response.(type) {
 	case *JobMessagesResponse_MessageResponse:
 		s := proto.Size(x.MessageResponse)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *JobMessagesResponse_StateResponse:
 		s := proto.Size(x.StateResponse)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -505,12 +728,34 @@ func _JobMessagesResponse_OneofSizer(msg proto.Message) (n int) {
 
 // Enumeration of all JobStates
 type JobState struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *JobState) Reset()                    { *m = JobState{} }
-func (m *JobState) String() string            { return proto.CompactTextString(m) }
-func (*JobState) ProtoMessage()               {}
-func (*JobState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (m *JobState) Reset()         { *m = JobState{} }
+func (m *JobState) String() string { return proto.CompactTextString(m) }
+func (*JobState) ProtoMessage()    {}
+func (*JobState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_job_api_b0075b27083608c3, []int{11}
+}
+func (m *JobState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_JobState.Unmarshal(m, b)
+}
+func (m *JobState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_JobState.Marshal(b, m, deterministic)
+}
+func (dst *JobState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JobState.Merge(dst, src)
+}
+func (m *JobState) XXX_Size() int {
+	return xxx_messageInfo_JobState.Size(m)
+}
+func (m *JobState) XXX_DiscardUnknown() {
+	xxx_messageInfo_JobState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_JobState proto.InternalMessageInfo
 
 func init() {
 	proto.RegisterType((*PrepareJobRequest)(nil), "org.apache.beam.model.job_management.v1.PrepareJobRequest")
@@ -537,8 +782,9 @@ var _ grpc.ClientConn
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion4
 
-// Client API for JobService service
-
+// JobServiceClient is the client API for JobService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type JobServiceClient interface {
 	// Prepare a job for execution. The job will not be executed until a call is made to run with the
 	// returned preparationId.
@@ -565,7 +811,7 @@ func NewJobServiceClient(cc *grpc.ClientConn) JobServiceClient {
 
 func (c *jobServiceClient) Prepare(ctx context.Context, in *PrepareJobRequest, opts ...grpc.CallOption) (*PrepareJobResponse, error) {
 	out := new(PrepareJobResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Prepare", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Prepare", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -574,7 +820,7 @@ func (c *jobServiceClient) Prepare(ctx context.Context, in *PrepareJobRequest, o
 
 func (c *jobServiceClient) Run(ctx context.Context, in *RunJobRequest, opts ...grpc.CallOption) (*RunJobResponse, error) {
 	out := new(RunJobResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Run", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Run", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -583,7 +829,7 @@ func (c *jobServiceClient) Run(ctx context.Context, in *RunJobRequest, opts ...g
 
 func (c *jobServiceClient) GetState(ctx context.Context, in *GetJobStateRequest, opts ...grpc.CallOption) (*GetJobStateResponse, error) {
 	out := new(GetJobStateResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/GetState", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/GetState", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -592,7 +838,7 @@ func (c *jobServiceClient) GetState(ctx context.Context, in *GetJobStateRequest,
 
 func (c *jobServiceClient) Cancel(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*CancelJobResponse, error) {
 	out := new(CancelJobResponse)
-	err := grpc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Cancel", in, out, c.cc, opts...)
+	err := c.cc.Invoke(ctx, "/org.apache.beam.model.job_management.v1.JobService/Cancel", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -600,7 +846,7 @@ func (c *jobServiceClient) Cancel(ctx context.Context, in *CancelJobRequest, opt
 }
 
 func (c *jobServiceClient) GetStateStream(ctx context.Context, in *GetJobStateRequest, opts ...grpc.CallOption) (JobService_GetStateStreamClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_JobService_serviceDesc.Streams[0], c.cc, "/org.apache.beam.model.job_management.v1.JobService/GetStateStream", opts...)
+	stream, err := c.cc.NewStream(ctx, &_JobService_serviceDesc.Streams[0], "/org.apache.beam.model.job_management.v1.JobService/GetStateStream", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -632,7 +878,7 @@ func (x *jobServiceGetStateStreamClient) Recv() (*GetJobStateResponse, error) {
 }
 
 func (c *jobServiceClient) GetMessageStream(ctx context.Context, in *JobMessagesRequest, opts ...grpc.CallOption) (JobService_GetMessageStreamClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_JobService_serviceDesc.Streams[1], c.cc, "/org.apache.beam.model.job_management.v1.JobService/GetMessageStream", opts...)
+	stream, err := c.cc.NewStream(ctx, &_JobService_serviceDesc.Streams[1], "/org.apache.beam.model.job_management.v1.JobService/GetMessageStream", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -663,8 +909,7 @@ func (x *jobServiceGetMessageStreamClient) Recv() (*JobMessagesResponse, error)
 	return m, nil
 }
 
-// Server API for JobService service
-
+// JobServiceServer is the server API for JobService service.
 type JobServiceServer interface {
 	// Prepare a job for execution. The job will not be executed until a call is made to run with the
 	// returned preparationId.
@@ -835,67 +1080,68 @@ var _JobService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "beam_job_api.proto",
 }
 
-func init() { proto.RegisterFile("beam_job_api.proto", fileDescriptor0) }
+func init() { proto.RegisterFile("beam_job_api.proto", fileDescriptor_beam_job_api_b0075b27083608c3) }
 
-var fileDescriptor0 = []byte{
-	// 931 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0xe3, 0x44,
-	0x14, 0xae, 0xdb, 0x34, 0x4d, 0x5e, 0x9b, 0xd4, 0x9d, 0x52, 0x35, 0x1b, 0x01, 0x5a, 0x8c, 0x60,
-	0x17, 0xad, 0xe4, 0xdd, 0x76, 0x25, 0x56, 0xec, 0x72, 0x71, 0x62, 0x6f, 0xd6, 0x51, 0x9b, 0x44,
+var fileDescriptor_beam_job_api_b0075b27083608c3 = []byte{
+	// 950 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4f, 0x6f, 0xe3, 0x44,
+	0x14, 0xaf, 0xd3, 0x34, 0x4d, 0x5e, 0x9b, 0xd4, 0x9d, 0x52, 0x35, 0x1b, 0x01, 0x5a, 0x8c, 0x60,
+	0x17, 0xad, 0xe4, 0xdd, 0x66, 0x25, 0x56, 0xec, 0x72, 0x71, 0x62, 0x6f, 0xd6, 0x51, 0x9b, 0x44,
 	0xe3, 0x54, 0x48, 0x70, 0x30, 0xe3, 0x64, 0x36, 0xb8, 0xd4, 0x1e, 0x63, 0x4f, 0xa2, 0xbd, 0x21,
-	0x21, 0x71, 0x44, 0xfc, 0x01, 0xfe, 0x00, 0x27, 0x38, 0x70, 0xe3, 0x1f, 0xf1, 0x17, 0xb8, 0xa0,
-	0x19, 0x8f, 0xdb, 0xa4, 0xed, 0xaa, 0x69, 0x11, 0xe2, 0x94, 0x99, 0xf7, 0xde, 0xf7, 0xcd, 0x37,
-	0xef, 0x3d, 0xbf, 0x09, 0xa0, 0x80, 0x92, 0xc8, 0x3f, 0x65, 0x81, 0x4f, 0x92, 0xd0, 0x4c, 0x52,
-	0xc6, 0x19, 0x7a, 0xc0, 0xd2, 0x89, 0x49, 0x12, 0x32, 0xfa, 0x86, 0x9a, 0xc2, 0x6d, 0x46, 0x6c,
-	0x4c, 0xcf, 0x4c, 0x11, 0x14, 0x91, 0x98, 0x4c, 0x68, 0x44, 0x63, 0x6e, 0xce, 0x0e, 0x9a, 0x7b,
-	0x12, 0x9c, 0x4e, 0xe3, 0x98, 0xa6, 0x17, 0xf8, 0xe6, 0x36, 0x8d, 0xc7, 0x09, 0x0b, 0x63, 0x9e,
-	0x29, 0xc3, 0xbb, 0x13, 0xc6, 0x26, 0x67, 0xf4, 0xb1, 0xdc, 0x05, 0xd3, 0xd7, 0x8f, 0x33, 0x9e,
-	0x4e, 0x47, 0x3c, 0xf7, 0x1a, 0x7f, 0x6a, 0xb0, 0x33, 0x48, 0x69, 0x42, 0x52, 0xda, 0x65, 0x01,
-	0xa6, 0xdf, 0x4d, 0x69, 0xc6, 0x51, 0x07, 0x2a, 0x49, 0x98, 0xd0, 0xb3, 0x30, 0xa6, 0x0d, 0xed,
-	0xbe, 0xf6, 0x70, 0xf3, 0xf0, 0x91, 0x79, 0xbd, 0xae, 0x22, 0xcc, 0x9c, 0x1d, 0x98, 0x03, 0xb5,
-	0xc6, 0xe7, 0x60, 0xd4, 0x02, 0xbd, 0x58, 0xfb, 0x2c, 0xe1, 0x21, 0x8b, 0xb3, 0xc6, 0xaa, 0x24,
-	0xdc, 0x37, 0x73, 0x5d, 0x66, 0xa1, 0xcb, 0xf4, 0xa4, 0x2e, 0xbc, 0x5d, 0x00, 0xfa, 0x79, 0x3c,
-	0xba, 0x07, 0x15, 0x71, 0xfb, 0x98, 0x44, 0xb4, 0xb1, 0x76, 0x5f, 0x7b, 0x58, 0xc5, 0x1b, 0xa7,
-	0x2c, 0xe8, 0x91, 0x88, 0x1a, 0xbf, 0x6b, 0x80, 0xe6, 0xd5, 0x67, 0x09, 0x8b, 0x33, 0x8a, 0x3e,
-	0x82, 0x7a, 0x22, 0xad, 0x44, 0x30, 0xf8, 0xe1, 0x58, 0x5e, 0xa2, 0x8a, 0x6b, 0x73, 0x56, 0x77,
-	0x8c, 0x32, 0xb8, 0x47, 0x52, 0x1e, 0xbe, 0x26, 0x23, 0xee, 0x67, 0x9c, 0x4c, 0xc2, 0x78, 0xe2,
-	0x17, 0xd9, 0x53, 0x2a, 0x9f, 0x2d, 0x71, 0x6d, 0x2b, 0x09, 0x3d, 0x9a, 0xce, 0xc2, 0x11, 0xb5,
-	0x69, 0x36, 0x4a, 0xc3, 0x84, 0xb3, 0x14, 0xef, 0x17, 0xcc, 0x5e, 0x4e, 0xec, 0x28, 0x5e, 0xe3,
-	0x2b, 0xa8, 0xe1, 0x69, 0x3c, 0x97, 0xeb, 0x25, 0xc5, 0x7e, 0x08, 0xb5, 0x42, 0x23, 0x67, 0xdf,
-	0xd2, 0x58, 0x0a, 0xac, 0xe2, 0x2d, 0x65, 0x1c, 0x0a, 0x9b, 0xf1, 0x00, 0xea, 0x05, 0xb9, 0x4a,
-	0xc5, 0x1e, 0x94, 0x45, 0xf2, 0xce, 0x59, 0xd7, 0x4f, 0x59, 0xe0, 0x8e, 0x8d, 0x4f, 0x40, 0x6f,
-	0x93, 0x78, 0x44, 0xcf, 0xe6, 0x84, 0xbc, 0x25, 0x94, 0xc0, 0xce, 0x5c, 0xa8, 0xa2, 0x3d, 0x82,
-	0xf5, 0x8c, 0x13, 0x9e, 0x77, 0x47, 0xfd, 0xf0, 0x53, 0x73, 0xc9, 0xae, 0x35, 0xbb, 0x2c, 0xf0,
-	0x04, 0xd0, 0x74, 0xe2, 0x69, 0x84, 0x73, 0x12, 0xe3, 0x11, 0xa0, 0x0e, 0xe5, 0x85, 0xeb, 0x06,
-	0x3d, 0x23, 0xd8, 0x5d, 0x08, 0xfe, 0xaf, 0x14, 0x75, 0x59, 0x70, 0x4c, 0xb3, 0x8c, 0x4c, 0x68,
-	0x76, 0x83, 0xa2, 0xbf, 0x57, 0x01, 0x2e, 0xa2, 0xd1, 0x7b, 0x00, 0x51, 0xbe, 0xbc, 0x88, 0xac,
-	0x2a, 0x8b, 0x3b, 0x46, 0x08, 0x4a, 0x3c, 0x8c, 0xa8, 0xaa, 0x9f, 0x5c, 0x23, 0x0a, 0x10, 0x46,
-	0x09, 0x4b, 0xb9, 0x48, 0xb4, 0x6c, 0xf2, 0xfa, 0xa1, 0x73, 0x9b, 0x1b, 0xa8, 0xb3, 0x4d, 0xf5,
-	0xeb, 0x9e, 0x93, 0xe1, 0x39, 0x62, 0xf4, 0x01, 0x6c, 0x15, 0xca, 0x38, 0x7d, 0xc3, 0x1b, 0x25,
-	0x29, 0x61, 0x53, 0xd9, 0x86, 0xf4, 0x0d, 0x37, 0x7e, 0xd3, 0x60, 0xe7, 0x0a, 0x09, 0x32, 0xe0,
-	0xfd, 0x63, 0xc7, 0xf3, 0xac, 0x8e, 0xe3, 0xbb, 0xc7, 0x83, 0x3e, 0x1e, 0x5a, 0xbd, 0xb6, 0xe3,
-	0x9f, 0xf4, 0xbc, 0x81, 0xd3, 0x76, 0x5f, 0xba, 0x8e, 0xad, 0xaf, 0xa0, 0x3d, 0xd8, 0xe9, 0xf6,
-	0x5b, 0x7e, 0x11, 0x67, 0x3b, 0xad, 0x93, 0x8e, 0xae, 0xa1, 0x06, 0xbc, 0xb3, 0x68, 0x1e, 0x5a,
-	0xee, 0x91, 0x63, 0xeb, 0xab, 0x97, 0x01, 0x2d, 0xcb, 0x73, 0xdb, 0xfa, 0x1a, 0xda, 0x87, 0xdd,
-	0x79, 0xf3, 0x17, 0x16, 0xee, 0xb9, 0xbd, 0x8e, 0x5e, 0xba, 0x1c, 0xef, 0x60, 0xdc, 0xc7, 0xfa,
-	0xba, 0xf1, 0x97, 0x06, 0xbb, 0x0b, 0xb5, 0x52, 0x0d, 0xf1, 0x35, 0xe8, 0xc5, 0x65, 0x53, 0x65,
-	0x53, 0xb3, 0xec, 0xe9, 0x1d, 0x32, 0xfb, 0x6a, 0x05, 0x6f, 0x2b, 0xba, 0xf3, 0x13, 0x28, 0xd4,
-	0x65, 0xb7, 0x5c, 0xf0, 0xe7, 0x43, 0xe3, 0xf3, 0xa5, 0xf9, 0xaf, 0x69, 0xe4, 0x57, 0x2b, 0xb8,
-	0x96, 0xcd, 0x1b, 0x5a, 0x00, 0x95, 0xe2, 0x00, 0xe3, 0x57, 0x0d, 0x2a, 0x05, 0xc2, 0xf8, 0x45,
-	0x83, 0x92, 0x68, 0x5a, 0xb4, 0x0d, 0x9b, 0x8b, 0xb5, 0xd8, 0x84, 0x0d, 0x6f, 0xd8, 0x1f, 0x0c,
-	0x1c, 0x5b, 0xd7, 0xc4, 0x06, 0x9f, 0xf4, 0x64, 0x12, 0x57, 0x51, 0x05, 0x4a, 0x76, 0xbf, 0xe7,
-	0xe8, 0x6b, 0x08, 0xa0, 0xfc, 0x32, 0x2f, 0x45, 0x09, 0xd5, 0xa0, 0xda, 0x16, 0x25, 0x3d, 0x12,
-	0xdb, 0x75, 0x81, 0x38, 0x19, 0xd8, 0xd6, 0xd0, 0xb1, 0xf5, 0x32, 0xda, 0x82, 0x8a, 0x8d, 0x2d,
-	0x57, 0xe2, 0x37, 0x84, 0x4b, 0xee, 0x1c, 0x5b, 0xaf, 0x08, 0x97, 0x37, 0xb4, 0xf0, 0x50, 0xb8,
-	0xaa, 0xa8, 0x0e, 0xa0, 0x48, 0xc4, 0x1e, 0x0e, 0xff, 0x28, 0xcb, 0xcf, 0x42, 0xcd, 0x46, 0xf4,
-	0x83, 0x06, 0x1b, 0x6a, 0x56, 0xa3, 0xe7, 0x4b, 0x67, 0xe8, 0xca, 0xdb, 0xd4, 0x7c, 0x71, 0x27,
-	0xac, 0x2a, 0xd9, 0x0c, 0xd6, 0xf0, 0x34, 0x46, 0xcb, 0x4f, 0x87, 0x85, 0x59, 0xdd, 0x7c, 0x76,
-	0x6b, 0x9c, 0x3a, 0xf7, 0x47, 0x0d, 0x2a, 0x1d, 0xca, 0x65, 0xdd, 0xd0, 0x8b, 0xbb, 0xf5, 0x47,
-	0x2e, 0xe1, 0x5f, 0x35, 0x17, 0xfa, 0x1e, 0xca, 0xf9, 0x30, 0x47, 0x9f, 0x2d, 0xcd, 0x73, 0xf9,
-	0xa1, 0x68, 0x3e, 0xbf, 0x0b, 0x54, 0x09, 0xf8, 0x49, 0x83, 0x7a, 0x91, 0x08, 0x8f, 0xa7, 0x94,
-	0x44, 0xff, 0x63, 0x3a, 0x9e, 0x68, 0xe8, 0x67, 0x0d, 0xf4, 0x0e, 0xe5, 0xea, 0x2b, 0xbf, 0xb5,
-	0xa2, 0xab, 0x8f, 0xc4, 0x2d, 0x14, 0x5d, 0x33, 0xb5, 0x9e, 0x68, 0xad, 0x16, 0x7c, 0xfc, 0x56,
-	0x82, 0x05, 0x7c, 0xab, 0xdc, 0x65, 0x81, 0x95, 0x84, 0x5f, 0xea, 0x0b, 0x1e, 0x7f, 0x76, 0x10,
-	0x94, 0xe5, 0x9f, 0xaa, 0xa7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x20, 0x71, 0x77, 0xfc, 0x61,
-	0x0a, 0x00, 0x00,
+	0x21, 0x71, 0x44, 0x7c, 0x01, 0xbe, 0x00, 0x27, 0x2e, 0xdc, 0xf8, 0x3a, 0x9c, 0xf8, 0x0a, 0x5c,
+	0xd0, 0xd8, 0xe3, 0xd6, 0x69, 0xbb, 0x6a, 0x5a, 0x84, 0x38, 0x65, 0xe6, 0xfd, 0xf9, 0xbd, 0xdf,
+	0xfb, 0xe3, 0x37, 0x01, 0xe4, 0x51, 0x12, 0xb8, 0xa7, 0xcc, 0x73, 0x49, 0xe4, 0xeb, 0x51, 0xcc,
+	0x38, 0x43, 0x0f, 0x58, 0x3c, 0xd3, 0x49, 0x44, 0x26, 0xdf, 0x50, 0x5d, 0xa8, 0xf5, 0x80, 0x4d,
+	0xe9, 0x99, 0x2e, 0x8c, 0x02, 0x12, 0x92, 0x19, 0x0d, 0x68, 0xc8, 0xf5, 0xc5, 0x61, 0x6b, 0x3f,
+	0x75, 0x8e, 0xe7, 0x61, 0x48, 0xe3, 0x0b, 0xff, 0xd6, 0x0e, 0x0d, 0xa7, 0x11, 0xf3, 0x43, 0x9e,
+	0x48, 0xc1, 0xbb, 0x33, 0xc6, 0x66, 0x67, 0xf4, 0x71, 0x7a, 0xf3, 0xe6, 0xaf, 0x1f, 0x27, 0x3c,
+	0x9e, 0x4f, 0x78, 0xa6, 0xd5, 0xfe, 0x50, 0x60, 0x77, 0x14, 0xd3, 0x88, 0xc4, 0xb4, 0xcf, 0x3c,
+	0x4c, 0xbf, 0x9b, 0xd3, 0x84, 0xa3, 0x1e, 0x54, 0x23, 0x3f, 0xa2, 0x67, 0x7e, 0x48, 0x9b, 0xca,
+	0x7d, 0xe5, 0xe1, 0x56, 0xfb, 0x91, 0x7e, 0x3d, 0xaf, 0xdc, 0x4c, 0x5f, 0x1c, 0xea, 0x23, 0x79,
+	0xc6, 0xe7, 0xce, 0xa8, 0x03, 0x6a, 0x7e, 0x76, 0x59, 0xc4, 0x7d, 0x16, 0x26, 0xcd, 0x52, 0x0a,
+	0x78, 0xa0, 0x67, 0xbc, 0xf4, 0x9c, 0x97, 0xee, 0xa4, 0xbc, 0xf0, 0x4e, 0xee, 0x30, 0xcc, 0xec,
+	0xd1, 0x3d, 0xa8, 0x8a, 0xec, 0x43, 0x12, 0xd0, 0xe6, 0xfa, 0x7d, 0xe5, 0x61, 0x0d, 0x6f, 0x9e,
+	0x32, 0x6f, 0x40, 0x02, 0xaa, 0xfd, 0xa9, 0x00, 0x2a, 0xb2, 0x4f, 0x22, 0x16, 0x26, 0x14, 0x7d,
+	0x04, 0x8d, 0x28, 0x95, 0x12, 0x81, 0xe0, 0xfa, 0xd3, 0x34, 0x89, 0x1a, 0xae, 0x17, 0xa4, 0xf6,
+	0x14, 0x25, 0x70, 0x8f, 0xc4, 0xdc, 0x7f, 0x4d, 0x26, 0xdc, 0x4d, 0x38, 0x99, 0xf9, 0xe1, 0xcc,
+	0xcd, 0xab, 0x27, 0x59, 0x3e, 0x5b, 0x21, 0x6d, 0x23, 0xf2, 0x1d, 0x1a, 0x2f, 0xfc, 0x09, 0x35,
+	0x69, 0x32, 0x89, 0xfd, 0x88, 0xb3, 0x18, 0x1f, 0xe4, 0xc8, 0x4e, 0x06, 0x6c, 0x49, 0x5c, 0xd4,
+	0x86, 0xfd, 0x3c, 0x56, 0x42, 0x93, 0x44, 0xf0, 0xe3, 0xec, 0x5b, 0x1a, 0xca, 0xd4, 0xf6, 0xa4,
+	0xd2, 0xc9, 0x74, 0x63, 0xa1, 0xd2, 0xbe, 0x82, 0x3a, 0x9e, 0x87, 0x85, 0xfe, 0xac, 0x98, 0xe0,
+	0x87, 0x50, 0xcf, 0x63, 0x65, 0x31, 0x4a, 0xa9, 0xd5, 0xb6, 0x14, 0x66, 0xe0, 0x0f, 0xa0, 0x91,
+	0x83, 0xcb, 0xf2, 0xed, 0x43, 0x45, 0x14, 0xfc, 0x1c, 0x75, 0xe3, 0x94, 0x79, 0xf6, 0x54, 0xfb,
+	0x04, 0xd4, 0x2e, 0x09, 0x27, 0xf4, 0xac, 0x40, 0xe4, 0x2d, 0xa6, 0x04, 0x76, 0x0b, 0xa6, 0x12,
+	0xf6, 0x08, 0x36, 0x12, 0x4e, 0x78, 0x36, 0x51, 0x8d, 0xf6, 0xa7, 0xfa, 0x8a, 0x93, 0xae, 0xf7,
+	0x99, 0xe7, 0x08, 0x47, 0xdd, 0x0a, 0xe7, 0x01, 0xce, 0x40, 0xb4, 0x47, 0x80, 0x7a, 0x94, 0xe7,
+	0xaa, 0x1b, 0xf8, 0x4c, 0x60, 0x6f, 0xc9, 0xf8, 0xbf, 0x62, 0xd4, 0x67, 0xde, 0x31, 0x4d, 0x12,
+	0x32, 0xa3, 0xc9, 0x0d, 0x8c, 0xfe, 0x2e, 0x01, 0x5c, 0x58, 0xa3, 0xf7, 0x00, 0x82, 0xec, 0x78,
+	0x61, 0x59, 0x93, 0x12, 0x7b, 0x8a, 0x10, 0x94, 0xb9, 0x1f, 0x50, 0xd9, 0xbf, 0xf4, 0x8c, 0x28,
+	0x80, 0x1f, 0x44, 0x2c, 0xe6, 0xa2, 0xd0, 0xe9, 0xf4, 0x34, 0xda, 0xd6, 0x6d, 0x32, 0x90, 0xb1,
+	0x75, 0xf9, 0x6b, 0x9f, 0x83, 0xe1, 0x02, 0x30, 0xfa, 0x00, 0xb6, 0x73, 0x66, 0x9c, 0xbe, 0xe1,
+	0xcd, 0x72, 0x4a, 0x61, 0x4b, 0xca, 0xc6, 0xf4, 0x0d, 0xd7, 0x7e, 0x53, 0x60, 0xf7, 0x0a, 0x08,
+	0xd2, 0xe0, 0xfd, 0x63, 0xcb, 0x71, 0x8c, 0x9e, 0xe5, 0xda, 0xc7, 0xa3, 0x21, 0x1e, 0x1b, 0x83,
+	0xae, 0xe5, 0x9e, 0x0c, 0x9c, 0x91, 0xd5, 0xb5, 0x5f, 0xda, 0x96, 0xa9, 0xae, 0xa1, 0x7d, 0xd8,
+	0xed, 0x0f, 0x3b, 0x6e, 0x6e, 0x67, 0x5a, 0x9d, 0x93, 0x9e, 0xaa, 0xa0, 0x26, 0xbc, 0xb3, 0x2c,
+	0x1e, 0x1b, 0xf6, 0x91, 0x65, 0xaa, 0xa5, 0xcb, 0x0e, 0x1d, 0xc3, 0xb1, 0xbb, 0xea, 0x3a, 0x3a,
+	0x80, 0xbd, 0xa2, 0xf8, 0x0b, 0x03, 0x0f, 0xec, 0x41, 0x4f, 0x2d, 0x5f, 0xb6, 0xb7, 0x30, 0x1e,
+	0x62, 0x75, 0x43, 0xfb, 0x4b, 0x81, 0xbd, 0xa5, 0x5e, 0xc9, 0x81, 0xf8, 0x1a, 0xd4, 0x3c, 0xd9,
+	0x58, 0xca, 0xe4, 0xfe, 0x7b, 0x7a, 0x87, 0xca, 0xbe, 0x5a, 0xc3, 0x3b, 0x12, 0xee, 0x3c, 0x02,
+	0x85, 0x46, 0x3a, 0x2d, 0x17, 0xf8, 0xd9, 0xa2, 0xf9, 0x7c, 0x65, 0xfc, 0x6b, 0x06, 0xf9, 0xd5,
+	0x1a, 0xae, 0x27, 0x45, 0x41, 0x07, 0xa0, 0x9a, 0x07, 0xd0, 0x7e, 0x55, 0xa0, 0x9a, 0x7b, 0x68,
+	0xbf, 0x28, 0x50, 0x16, 0x43, 0x8b, 0x76, 0x60, 0x6b, 0xb9, 0x17, 0x5b, 0xb0, 0xe9, 0x8c, 0x87,
+	0xa3, 0x91, 0x65, 0xaa, 0x8a, 0xb8, 0xe0, 0x93, 0x41, 0x5a, 0xc4, 0x12, 0xaa, 0x42, 0xd9, 0x1c,
+	0x0e, 0x2c, 0x75, 0x1d, 0x01, 0x54, 0x5e, 0x66, 0xad, 0x28, 0xa3, 0x3a, 0xd4, 0xba, 0xa2, 0xa5,
+	0x47, 0xe2, 0xba, 0x21, 0x3c, 0x4e, 0x46, 0xa6, 0x31, 0xb6, 0x4c, 0xb5, 0x82, 0xb6, 0xa1, 0x6a,
+	0x62, 0xc3, 0x4e, 0xfd, 0x37, 0x85, 0x2a, 0xbd, 0x59, 0xa6, 0x5a, 0x15, 0x2a, 0x67, 0x6c, 0xe0,
+	0xb1, 0x50, 0xd5, 0x50, 0x03, 0x40, 0x82, 0x88, 0x3b, 0xb4, 0x7f, 0xaf, 0xa4, 0x9f, 0x85, 0xdc,
+	0xa7, 0xe8, 0x07, 0x05, 0x36, 0xe5, 0x7e, 0x47, 0xcf, 0x57, 0xae, 0xd0, 0x95, 0xf7, 0xac, 0xf5,
+	0xe2, 0x4e, 0xbe, 0xb2, 0x65, 0x0b, 0x58, 0xc7, 0xf3, 0x10, 0xad, 0xbe, 0x1d, 0x96, 0x76, 0x75,
+	0xeb, 0xd9, 0xad, 0xfd, 0x64, 0xdc, 0x1f, 0x15, 0xa8, 0xf6, 0x28, 0x4f, 0xfb, 0x86, 0x5e, 0xdc,
+	0x6d, 0x3e, 0x32, 0x0a, 0xff, 0x6a, 0xb8, 0xd0, 0xf7, 0x50, 0xc9, 0x96, 0x39, 0xfa, 0x6c, 0x65,
+	0x9c, 0xcb, 0x0f, 0x45, 0xeb, 0xf9, 0x5d, 0x5c, 0x25, 0x81, 0x9f, 0x14, 0x68, 0xe4, 0x85, 0x70,
+	0x78, 0x4c, 0x49, 0xf0, 0x3f, 0x96, 0xe3, 0x89, 0x82, 0x7e, 0x56, 0x40, 0xed, 0x51, 0x2e, 0xbf,
+	0xf2, 0x5b, 0x33, 0xba, 0xfa, 0x48, 0xdc, 0x82, 0xd1, 0x35, 0x5b, 0xeb, 0x89, 0xd2, 0xe9, 0xc0,
+	0xc7, 0x6f, 0x05, 0x58, 0xf2, 0xef, 0x54, 0xfa, 0xcc, 0x33, 0x22, 0xff, 0x4b, 0x75, 0x49, 0xe3,
+	0x2e, 0x0e, 0xbd, 0x4a, 0xfa, 0x47, 0xec, 0xe9, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x53, 0x3d,
+	0x29, 0x21, 0x95, 0x0a, 0x00, 0x00,
 }
diff --git a/sdks/go/pkg/beam/model/pipeline_v1/beam_runner_api.pb.go b/sdks/go/pkg/beam/model/pipeline_v1/beam_runner_api.pb.go
index 580aa61f92b..f0be2cebea1 100644
--- a/sdks/go/pkg/beam/model/pipeline_v1/beam_runner_api.pb.go
+++ b/sdks/go/pkg/beam/model/pipeline_v1/beam_runner_api.pb.go
@@ -1,68 +1,13 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: beam_runner_api.proto
 
-/*
-Package pipeline_v1 is a generated protocol buffer package.
-
-It is generated from these files:
-	beam_runner_api.proto
-	endpoints.proto
-	standard_window_fns.proto
-
-It has these top-level messages:
-	Components
-	MessageWithComponents
-	Pipeline
-	PTransform
-	StandardPTransforms
-	StandardSideInputTypes
-	PCollection
-	ExecutableStagePayload
-	ParDoPayload
-	Parameter
-	StateSpec
-	ValueStateSpec
-	BagStateSpec
-	CombiningStateSpec
-	MapStateSpec
-	SetStateSpec
-	TimerSpec
-	IsBounded
-	ReadPayload
-	WindowIntoPayload
-	CombinePayload
-	TestStreamPayload
-	WriteFilesPayload
-	Coder
-	StandardCoders
-	WindowingStrategy
-	MergeStatus
-	AccumulationMode
-	ClosingBehavior
-	OnTimeBehavior
-	OutputTime
-	TimeDomain
-	Trigger
-	TimestampTransform
-	SideInput
-	Environment
-	SdkFunctionSpec
-	FunctionSpec
-	DisplayData
-	ApiServiceDescriptor
-	OAuth2ClientCredentialsGrant
-	GlobalWindowsPayload
-	FixedWindowsPayload
-	SlidingWindowsPayload
-	SessionsPayload
-*/
 package pipeline_v1
 
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
-import google_protobuf "github.com/golang/protobuf/ptypes/any"
-import google_protobuf1 "github.com/golang/protobuf/protoc-gen-go/descriptor"
+import descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+import any "github.com/golang/protobuf/ptypes/any"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -124,7 +69,7 @@ func (x StandardPTransforms_Primitives) String() string {
 	return proto.EnumName(StandardPTransforms_Primitives_name, int32(x))
 }
 func (StandardPTransforms_Primitives) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{4, 0}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4, 0}
 }
 
 type StandardPTransforms_DeprecatedPrimitives int32
@@ -151,7 +96,7 @@ func (x StandardPTransforms_DeprecatedPrimitives) String() string {
 	return proto.EnumName(StandardPTransforms_DeprecatedPrimitives_name, int32(x))
 }
 func (StandardPTransforms_DeprecatedPrimitives) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{4, 1}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4, 1}
 }
 
 type StandardPTransforms_Composites int32
@@ -197,7 +142,7 @@ func (x StandardPTransforms_Composites) String() string {
 	return proto.EnumName(StandardPTransforms_Composites_name, int32(x))
 }
 func (StandardPTransforms_Composites) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{4, 2}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4, 2}
 }
 
 // Payload for all of these: CombinePayload
@@ -207,24 +152,42 @@ const (
 	StandardPTransforms_COMBINE_PGBKCV             StandardPTransforms_CombineComponents = 0
 	StandardPTransforms_COMBINE_MERGE_ACCUMULATORS StandardPTransforms_CombineComponents = 1
 	StandardPTransforms_COMBINE_EXTRACT_OUTPUTS    StandardPTransforms_CombineComponents = 2
+	// Represents the Pre-Combine part of a lifted Combine Per Key, as described
+	// in the following document:
+	// https://s.apache.org/beam-runner-api-combine-model#heading=h.ta0g6ase8z07
+	StandardPTransforms_COMBINE_PER_KEY_PRECOMBINE StandardPTransforms_CombineComponents = 3
+	// Represents the Merge Accumulators part of a lifted Combine Per Key, as
+	// described in the following document:
+	// https://s.apache.org/beam-runner-api-combine-model#heading=h.jco9rvatld5m
+	StandardPTransforms_COMBINE_PER_KEY_MERGE_ACCUMULATORS StandardPTransforms_CombineComponents = 4
+	// Represents the Extract Outputs part of a lifted Combine Per Key, as
+	// described in the following document:
+	// https://s.apache.org/beam-runner-api-combine-model#heading=h.i9i6p8gtl6ku
+	StandardPTransforms_COMBINE_PER_KEY_EXTRACT_OUTPUTS StandardPTransforms_CombineComponents = 5
 )
 
 var StandardPTransforms_CombineComponents_name = map[int32]string{
 	0: "COMBINE_PGBKCV",
 	1: "COMBINE_MERGE_ACCUMULATORS",
 	2: "COMBINE_EXTRACT_OUTPUTS",
+	3: "COMBINE_PER_KEY_PRECOMBINE",
+	4: "COMBINE_PER_KEY_MERGE_ACCUMULATORS",
+	5: "COMBINE_PER_KEY_EXTRACT_OUTPUTS",
 }
 var StandardPTransforms_CombineComponents_value = map[string]int32{
-	"COMBINE_PGBKCV":             0,
-	"COMBINE_MERGE_ACCUMULATORS": 1,
-	"COMBINE_EXTRACT_OUTPUTS":    2,
+	"COMBINE_PGBKCV":                     0,
+	"COMBINE_MERGE_ACCUMULATORS":         1,
+	"COMBINE_EXTRACT_OUTPUTS":            2,
+	"COMBINE_PER_KEY_PRECOMBINE":         3,
+	"COMBINE_PER_KEY_MERGE_ACCUMULATORS": 4,
+	"COMBINE_PER_KEY_EXTRACT_OUTPUTS":    5,
 }
 
 func (x StandardPTransforms_CombineComponents) String() string {
 	return proto.EnumName(StandardPTransforms_CombineComponents_name, int32(x))
 }
 func (StandardPTransforms_CombineComponents) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{4, 3}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4, 3}
 }
 
 // Payload for all of these: ParDoPayload containing the user's SDF
@@ -251,7 +214,7 @@ func (x StandardPTransforms_SplittableParDoComponents) String() string {
 	return proto.EnumName(StandardPTransforms_SplittableParDoComponents_name, int32(x))
 }
 func (StandardPTransforms_SplittableParDoComponents) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{4, 4}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4, 4}
 }
 
 type StandardSideInputTypes_Enum int32
@@ -274,7 +237,7 @@ func (x StandardSideInputTypes_Enum) String() string {
 	return proto.EnumName(StandardSideInputTypes_Enum_name, int32(x))
 }
 func (StandardSideInputTypes_Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{5, 0}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{5, 0}
 }
 
 type Parameter_Type_Enum int32
@@ -302,7 +265,9 @@ var Parameter_Type_Enum_value = map[string]int32{
 func (x Parameter_Type_Enum) String() string {
 	return proto.EnumName(Parameter_Type_Enum_name, int32(x))
 }
-func (Parameter_Type_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0, 0} }
+func (Parameter_Type_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{9, 0, 0}
+}
 
 type IsBounded_Enum int32
 
@@ -326,7 +291,9 @@ var IsBounded_Enum_value = map[string]int32{
 func (x IsBounded_Enum) String() string {
 	return proto.EnumName(IsBounded_Enum_name, int32(x))
 }
-func (IsBounded_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 0} }
+func (IsBounded_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{17, 0}
+}
 
 type StandardCoders_Enum int32
 
@@ -380,7 +347,9 @@ var StandardCoders_Enum_value = map[string]int32{
 func (x StandardCoders_Enum) String() string {
 	return proto.EnumName(StandardCoders_Enum_name, int32(x))
 }
-func (StandardCoders_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{24, 0} }
+func (StandardCoders_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{24, 0}
+}
 
 type MergeStatus_Enum int32
 
@@ -415,7 +384,9 @@ var MergeStatus_Enum_value = map[string]int32{
 func (x MergeStatus_Enum) String() string {
 	return proto.EnumName(MergeStatus_Enum_name, int32(x))
 }
-func (MergeStatus_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 0} }
+func (MergeStatus_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{26, 0}
+}
 
 type AccumulationMode_Enum int32
 
@@ -441,7 +412,9 @@ var AccumulationMode_Enum_value = map[string]int32{
 func (x AccumulationMode_Enum) String() string {
 	return proto.EnumName(AccumulationMode_Enum_name, int32(x))
 }
-func (AccumulationMode_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{27, 0} }
+func (AccumulationMode_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{27, 0}
+}
 
 type ClosingBehavior_Enum int32
 
@@ -468,7 +441,9 @@ var ClosingBehavior_Enum_value = map[string]int32{
 func (x ClosingBehavior_Enum) String() string {
 	return proto.EnumName(ClosingBehavior_Enum_name, int32(x))
 }
-func (ClosingBehavior_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{28, 0} }
+func (ClosingBehavior_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{28, 0}
+}
 
 type OnTimeBehavior_Enum int32
 
@@ -495,7 +470,9 @@ var OnTimeBehavior_Enum_value = map[string]int32{
 func (x OnTimeBehavior_Enum) String() string {
 	return proto.EnumName(OnTimeBehavior_Enum_name, int32(x))
 }
-func (OnTimeBehavior_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{29, 0} }
+func (OnTimeBehavior_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{29, 0}
+}
 
 type OutputTime_Enum int32
 
@@ -527,7 +504,9 @@ var OutputTime_Enum_value = map[string]int32{
 func (x OutputTime_Enum) String() string {
 	return proto.EnumName(OutputTime_Enum_name, int32(x))
 }
-func (OutputTime_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{30, 0} }
+func (OutputTime_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{30, 0}
+}
 
 type TimeDomain_Enum int32
 
@@ -562,7 +541,9 @@ var TimeDomain_Enum_value = map[string]int32{
 func (x TimeDomain_Enum) String() string {
 	return proto.EnumName(TimeDomain_Enum_name, int32(x))
 }
-func (TimeDomain_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{31, 0} }
+func (TimeDomain_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{31, 0}
+}
 
 type DisplayData_Type_Enum int32
 
@@ -601,7 +582,9 @@ var DisplayData_Type_Enum_value = map[string]int32{
 func (x DisplayData_Type_Enum) String() string {
 	return proto.EnumName(DisplayData_Type_Enum_name, int32(x))
 }
-func (DisplayData_Type_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 2, 0} }
+func (DisplayData_Type_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{38, 2, 0}
+}
 
 // A set of mappings from id to message. This is included as an optional field
 // on any proto message that may contain references needing resolution.
@@ -615,13 +598,35 @@ type Components struct {
 	// (Required) A map from pipeline-scoped id to Coder.
 	Coders map[string]*Coder `protobuf:"bytes,4,rep,name=coders" json:"coders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// (Required) A map from pipeline-scoped id to Environment.
-	Environments map[string]*Environment `protobuf:"bytes,5,rep,name=environments" json:"environments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Environments         map[string]*Environment `protobuf:"bytes,5,rep,name=environments" json:"environments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
 }
 
-func (m *Components) Reset()                    { *m = Components{} }
-func (m *Components) String() string            { return proto.CompactTextString(m) }
-func (*Components) ProtoMessage()               {}
-func (*Components) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *Components) Reset()         { *m = Components{} }
+func (m *Components) String() string { return proto.CompactTextString(m) }
+func (*Components) ProtoMessage()    {}
+func (*Components) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{0}
+}
+func (m *Components) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Components.Unmarshal(m, b)
+}
+func (m *Components) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Components.Marshal(b, m, deterministic)
+}
+func (dst *Components) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Components.Merge(dst, src)
+}
+func (m *Components) XXX_Size() int {
+	return xxx_messageInfo_Components.Size(m)
+}
+func (m *Components) XXX_DiscardUnknown() {
+	xxx_messageInfo_Components.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Components proto.InternalMessageInfo
 
 func (m *Components) GetTransforms() map[string]*PTransform {
 	if m != nil {
@@ -682,15 +687,39 @@ type MessageWithComponents struct {
 	//	*MessageWithComponents_WindowIntoPayload
 	//	*MessageWithComponents_WindowingStrategy
 	//	*MessageWithComponents_FunctionSpec
-	Root isMessageWithComponents_Root `protobuf_oneof:"root"`
+	Root                 isMessageWithComponents_Root `protobuf_oneof:"root"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *MessageWithComponents) Reset()         { *m = MessageWithComponents{} }
+func (m *MessageWithComponents) String() string { return proto.CompactTextString(m) }
+func (*MessageWithComponents) ProtoMessage()    {}
+func (*MessageWithComponents) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{1}
+}
+func (m *MessageWithComponents) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageWithComponents.Unmarshal(m, b)
+}
+func (m *MessageWithComponents) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageWithComponents.Marshal(b, m, deterministic)
+}
+func (dst *MessageWithComponents) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageWithComponents.Merge(dst, src)
+}
+func (m *MessageWithComponents) XXX_Size() int {
+	return xxx_messageInfo_MessageWithComponents.Size(m)
+}
+func (m *MessageWithComponents) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageWithComponents.DiscardUnknown(m)
 }
 
-func (m *MessageWithComponents) Reset()                    { *m = MessageWithComponents{} }
-func (m *MessageWithComponents) String() string            { return proto.CompactTextString(m) }
-func (*MessageWithComponents) ProtoMessage()               {}
-func (*MessageWithComponents) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+var xxx_messageInfo_MessageWithComponents proto.InternalMessageInfo
 
-type isMessageWithComponents_Root interface{ isMessageWithComponents_Root() }
+type isMessageWithComponents_Root interface {
+	isMessageWithComponents_Root()
+}
 
 type MessageWithComponents_Coder struct {
 	Coder *Coder `protobuf:"bytes,2,opt,name=coder,oneof"`
@@ -1014,57 +1043,57 @@ func _MessageWithComponents_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Root.(type) {
 	case *MessageWithComponents_Coder:
 		s := proto.Size(x.Coder)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_CombinePayload:
 		s := proto.Size(x.CombinePayload)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_SdkFunctionSpec:
 		s := proto.Size(x.SdkFunctionSpec)
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_ParDoPayload:
 		s := proto.Size(x.ParDoPayload)
-		n += proto.SizeVarint(6<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_Ptransform:
 		s := proto.Size(x.Ptransform)
-		n += proto.SizeVarint(7<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_Pcollection:
 		s := proto.Size(x.Pcollection)
-		n += proto.SizeVarint(8<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_ReadPayload:
 		s := proto.Size(x.ReadPayload)
-		n += proto.SizeVarint(9<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_SideInput:
 		s := proto.Size(x.SideInput)
-		n += proto.SizeVarint(11<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_WindowIntoPayload:
 		s := proto.Size(x.WindowIntoPayload)
-		n += proto.SizeVarint(12<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_WindowingStrategy:
 		s := proto.Size(x.WindowingStrategy)
-		n += proto.SizeVarint(13<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *MessageWithComponents_FunctionSpec:
 		s := proto.Size(x.FunctionSpec)
-		n += proto.SizeVarint(14<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1093,13 +1122,35 @@ type Pipeline struct {
 	RootTransformIds []string `protobuf:"bytes,2,rep,name=root_transform_ids,json=rootTransformIds" json:"root_transform_ids,omitempty"`
 	// (Optional) Static display data for the pipeline. If there is none,
 	// it may be omitted.
-	DisplayData *DisplayData `protobuf:"bytes,3,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	DisplayData          *DisplayData `protobuf:"bytes,3,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
-func (m *Pipeline) Reset()                    { *m = Pipeline{} }
-func (m *Pipeline) String() string            { return proto.CompactTextString(m) }
-func (*Pipeline) ProtoMessage()               {}
-func (*Pipeline) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *Pipeline) Reset()         { *m = Pipeline{} }
+func (m *Pipeline) String() string { return proto.CompactTextString(m) }
+func (*Pipeline) ProtoMessage()    {}
+func (*Pipeline) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{2}
+}
+func (m *Pipeline) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Pipeline.Unmarshal(m, b)
+}
+func (m *Pipeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Pipeline.Marshal(b, m, deterministic)
+}
+func (dst *Pipeline) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Pipeline.Merge(dst, src)
+}
+func (m *Pipeline) XXX_Size() int {
+	return xxx_messageInfo_Pipeline.Size(m)
+}
+func (m *Pipeline) XXX_DiscardUnknown() {
+	xxx_messageInfo_Pipeline.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Pipeline proto.InternalMessageInfo
 
 func (m *Pipeline) GetComponents() *Components {
 	if m != nil {
@@ -1185,13 +1236,35 @@ type PTransform struct {
 	// (Optional) Static display data for this PTransform application. If
 	// there is none, or it is not relevant (such as use by the Fn API)
 	// then it may be omitted.
-	DisplayData *DisplayData `protobuf:"bytes,6,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	DisplayData          *DisplayData `protobuf:"bytes,6,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *PTransform) Reset()         { *m = PTransform{} }
+func (m *PTransform) String() string { return proto.CompactTextString(m) }
+func (*PTransform) ProtoMessage()    {}
+func (*PTransform) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{3}
+}
+func (m *PTransform) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PTransform.Unmarshal(m, b)
+}
+func (m *PTransform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PTransform.Marshal(b, m, deterministic)
+}
+func (dst *PTransform) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PTransform.Merge(dst, src)
+}
+func (m *PTransform) XXX_Size() int {
+	return xxx_messageInfo_PTransform.Size(m)
+}
+func (m *PTransform) XXX_DiscardUnknown() {
+	xxx_messageInfo_PTransform.DiscardUnknown(m)
 }
 
-func (m *PTransform) Reset()                    { *m = PTransform{} }
-func (m *PTransform) String() string            { return proto.CompactTextString(m) }
-func (*PTransform) ProtoMessage()               {}
-func (*PTransform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+var xxx_messageInfo_PTransform proto.InternalMessageInfo
 
 func (m *PTransform) GetUniqueName() string {
 	if m != nil {
@@ -1236,20 +1309,64 @@ func (m *PTransform) GetDisplayData() *DisplayData {
 }
 
 type StandardPTransforms struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StandardPTransforms) Reset()         { *m = StandardPTransforms{} }
+func (m *StandardPTransforms) String() string { return proto.CompactTextString(m) }
+func (*StandardPTransforms) ProtoMessage()    {}
+func (*StandardPTransforms) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{4}
+}
+func (m *StandardPTransforms) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardPTransforms.Unmarshal(m, b)
+}
+func (m *StandardPTransforms) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardPTransforms.Marshal(b, m, deterministic)
+}
+func (dst *StandardPTransforms) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardPTransforms.Merge(dst, src)
+}
+func (m *StandardPTransforms) XXX_Size() int {
+	return xxx_messageInfo_StandardPTransforms.Size(m)
+}
+func (m *StandardPTransforms) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardPTransforms.DiscardUnknown(m)
 }
 
-func (m *StandardPTransforms) Reset()                    { *m = StandardPTransforms{} }
-func (m *StandardPTransforms) String() string            { return proto.CompactTextString(m) }
-func (*StandardPTransforms) ProtoMessage()               {}
-func (*StandardPTransforms) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+var xxx_messageInfo_StandardPTransforms proto.InternalMessageInfo
 
 type StandardSideInputTypes struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StandardSideInputTypes) Reset()         { *m = StandardSideInputTypes{} }
+func (m *StandardSideInputTypes) String() string { return proto.CompactTextString(m) }
+func (*StandardSideInputTypes) ProtoMessage()    {}
+func (*StandardSideInputTypes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{5}
+}
+func (m *StandardSideInputTypes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardSideInputTypes.Unmarshal(m, b)
+}
+func (m *StandardSideInputTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardSideInputTypes.Marshal(b, m, deterministic)
+}
+func (dst *StandardSideInputTypes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardSideInputTypes.Merge(dst, src)
+}
+func (m *StandardSideInputTypes) XXX_Size() int {
+	return xxx_messageInfo_StandardSideInputTypes.Size(m)
+}
+func (m *StandardSideInputTypes) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardSideInputTypes.DiscardUnknown(m)
 }
 
-func (m *StandardSideInputTypes) Reset()                    { *m = StandardSideInputTypes{} }
-func (m *StandardSideInputTypes) String() string            { return proto.CompactTextString(m) }
-func (*StandardSideInputTypes) ProtoMessage()               {}
-func (*StandardSideInputTypes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+var xxx_messageInfo_StandardSideInputTypes proto.InternalMessageInfo
 
 // A PCollection!
 type PCollection struct {
@@ -1271,13 +1388,35 @@ type PCollection struct {
 	// (Optional) Static display data for this PTransform application. If
 	// there is none, or it is not relevant (such as use by the Fn API)
 	// then it may be omitted.
-	DisplayData *DisplayData `protobuf:"bytes,5,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	DisplayData          *DisplayData `protobuf:"bytes,5,opt,name=display_data,json=displayData" json:"display_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *PCollection) Reset()         { *m = PCollection{} }
+func (m *PCollection) String() string { return proto.CompactTextString(m) }
+func (*PCollection) ProtoMessage()    {}
+func (*PCollection) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{6}
+}
+func (m *PCollection) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PCollection.Unmarshal(m, b)
+}
+func (m *PCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PCollection.Marshal(b, m, deterministic)
+}
+func (dst *PCollection) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PCollection.Merge(dst, src)
+}
+func (m *PCollection) XXX_Size() int {
+	return xxx_messageInfo_PCollection.Size(m)
+}
+func (m *PCollection) XXX_DiscardUnknown() {
+	xxx_messageInfo_PCollection.DiscardUnknown(m)
 }
 
-func (m *PCollection) Reset()                    { *m = PCollection{} }
-func (m *PCollection) String() string            { return proto.CompactTextString(m) }
-func (*PCollection) ProtoMessage()               {}
-func (*PCollection) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+var xxx_messageInfo_PCollection proto.InternalMessageInfo
 
 func (m *PCollection) GetUniqueName() string {
 	if m != nil {
@@ -1336,13 +1475,35 @@ type ExecutableStagePayload struct {
 	Outputs []string `protobuf:"bytes,5,rep,name=outputs" json:"outputs,omitempty"`
 	// (Required) The components for the Executable Stage. This must contain all of the Transforms
 	// in transforms, and the closure of all of the components they recognize.
-	Components *Components `protobuf:"bytes,6,opt,name=components" json:"components,omitempty"`
+	Components           *Components `protobuf:"bytes,6,opt,name=components" json:"components,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
 }
 
-func (m *ExecutableStagePayload) Reset()                    { *m = ExecutableStagePayload{} }
-func (m *ExecutableStagePayload) String() string            { return proto.CompactTextString(m) }
-func (*ExecutableStagePayload) ProtoMessage()               {}
-func (*ExecutableStagePayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (m *ExecutableStagePayload) Reset()         { *m = ExecutableStagePayload{} }
+func (m *ExecutableStagePayload) String() string { return proto.CompactTextString(m) }
+func (*ExecutableStagePayload) ProtoMessage()    {}
+func (*ExecutableStagePayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{7}
+}
+func (m *ExecutableStagePayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExecutableStagePayload.Unmarshal(m, b)
+}
+func (m *ExecutableStagePayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExecutableStagePayload.Marshal(b, m, deterministic)
+}
+func (dst *ExecutableStagePayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExecutableStagePayload.Merge(dst, src)
+}
+func (m *ExecutableStagePayload) XXX_Size() int {
+	return xxx_messageInfo_ExecutableStagePayload.Size(m)
+}
+func (m *ExecutableStagePayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExecutableStagePayload.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExecutableStagePayload proto.InternalMessageInfo
 
 func (m *ExecutableStagePayload) GetEnvironment() *Environment {
 	if m != nil {
@@ -1392,16 +1553,36 @@ type ExecutableStagePayload_SideInputId struct {
 	// (Required) The id of the PTransform that references this side input.
 	TransformId string `protobuf:"bytes,1,opt,name=transform_id,json=transformId" json:"transform_id,omitempty"`
 	// (Required) The local name of this side input from the PTransform that references it.
-	LocalName string `protobuf:"bytes,2,opt,name=local_name,json=localName" json:"local_name,omitempty"`
+	LocalName            string   `protobuf:"bytes,2,opt,name=local_name,json=localName" json:"local_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ExecutableStagePayload_SideInputId) Reset()         { *m = ExecutableStagePayload_SideInputId{} }
 func (m *ExecutableStagePayload_SideInputId) String() string { return proto.CompactTextString(m) }
 func (*ExecutableStagePayload_SideInputId) ProtoMessage()    {}
 func (*ExecutableStagePayload_SideInputId) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{7, 0}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{7, 0}
+}
+func (m *ExecutableStagePayload_SideInputId) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExecutableStagePayload_SideInputId.Unmarshal(m, b)
+}
+func (m *ExecutableStagePayload_SideInputId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExecutableStagePayload_SideInputId.Marshal(b, m, deterministic)
+}
+func (dst *ExecutableStagePayload_SideInputId) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExecutableStagePayload_SideInputId.Merge(dst, src)
+}
+func (m *ExecutableStagePayload_SideInputId) XXX_Size() int {
+	return xxx_messageInfo_ExecutableStagePayload_SideInputId.Size(m)
+}
+func (m *ExecutableStagePayload_SideInputId) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExecutableStagePayload_SideInputId.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_ExecutableStagePayload_SideInputId proto.InternalMessageInfo
+
 func (m *ExecutableStagePayload_SideInputId) GetTransformId() string {
 	if m != nil {
 		return m.TransformId
@@ -1434,13 +1615,35 @@ type ParDoPayload struct {
 	// Whether the DoFn is splittable
 	Splittable bool `protobuf:"varint,6,opt,name=splittable" json:"splittable,omitempty"`
 	// (Required if splittable == true) Id of the restriction coder.
-	RestrictionCoderId string `protobuf:"bytes,7,opt,name=restriction_coder_id,json=restrictionCoderId" json:"restriction_coder_id,omitempty"`
+	RestrictionCoderId   string   `protobuf:"bytes,7,opt,name=restriction_coder_id,json=restrictionCoderId" json:"restriction_coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ParDoPayload) Reset()         { *m = ParDoPayload{} }
+func (m *ParDoPayload) String() string { return proto.CompactTextString(m) }
+func (*ParDoPayload) ProtoMessage()    {}
+func (*ParDoPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{8}
+}
+func (m *ParDoPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ParDoPayload.Unmarshal(m, b)
+}
+func (m *ParDoPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ParDoPayload.Marshal(b, m, deterministic)
+}
+func (dst *ParDoPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ParDoPayload.Merge(dst, src)
+}
+func (m *ParDoPayload) XXX_Size() int {
+	return xxx_messageInfo_ParDoPayload.Size(m)
+}
+func (m *ParDoPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_ParDoPayload.DiscardUnknown(m)
 }
 
-func (m *ParDoPayload) Reset()                    { *m = ParDoPayload{} }
-func (m *ParDoPayload) String() string            { return proto.CompactTextString(m) }
-func (*ParDoPayload) ProtoMessage()               {}
-func (*ParDoPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+var xxx_messageInfo_ParDoPayload proto.InternalMessageInfo
 
 func (m *ParDoPayload) GetDoFn() *SdkFunctionSpec {
 	if m != nil {
@@ -1506,13 +1709,35 @@ func (m *ParDoPayload) GetRestrictionCoderId() string {
 // TODO: the evolution of the Fn API will influence what needs explicit
 // representation here
 type Parameter struct {
-	Type Parameter_Type_Enum `protobuf:"varint,1,opt,name=type,enum=org.apache.beam.model.pipeline.v1.Parameter_Type_Enum" json:"type,omitempty"`
+	Type                 Parameter_Type_Enum `protobuf:"varint,1,opt,name=type,enum=org.apache.beam.model.pipeline.v1.Parameter_Type_Enum" json:"type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
-func (m *Parameter) Reset()                    { *m = Parameter{} }
-func (m *Parameter) String() string            { return proto.CompactTextString(m) }
-func (*Parameter) ProtoMessage()               {}
-func (*Parameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (m *Parameter) Reset()         { *m = Parameter{} }
+func (m *Parameter) String() string { return proto.CompactTextString(m) }
+func (*Parameter) ProtoMessage()    {}
+func (*Parameter) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{9}
+}
+func (m *Parameter) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Parameter.Unmarshal(m, b)
+}
+func (m *Parameter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Parameter.Marshal(b, m, deterministic)
+}
+func (dst *Parameter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Parameter.Merge(dst, src)
+}
+func (m *Parameter) XXX_Size() int {
+	return xxx_messageInfo_Parameter.Size(m)
+}
+func (m *Parameter) XXX_DiscardUnknown() {
+	xxx_messageInfo_Parameter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Parameter proto.InternalMessageInfo
 
 func (m *Parameter) GetType() Parameter_Type_Enum {
 	if m != nil {
@@ -1522,12 +1747,34 @@ func (m *Parameter) GetType() Parameter_Type_Enum {
 }
 
 type Parameter_Type struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Parameter_Type) Reset()         { *m = Parameter_Type{} }
+func (m *Parameter_Type) String() string { return proto.CompactTextString(m) }
+func (*Parameter_Type) ProtoMessage()    {}
+func (*Parameter_Type) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{9, 0}
+}
+func (m *Parameter_Type) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Parameter_Type.Unmarshal(m, b)
+}
+func (m *Parameter_Type) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Parameter_Type.Marshal(b, m, deterministic)
+}
+func (dst *Parameter_Type) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Parameter_Type.Merge(dst, src)
+}
+func (m *Parameter_Type) XXX_Size() int {
+	return xxx_messageInfo_Parameter_Type.Size(m)
+}
+func (m *Parameter_Type) XXX_DiscardUnknown() {
+	xxx_messageInfo_Parameter_Type.DiscardUnknown(m)
 }
 
-func (m *Parameter_Type) Reset()                    { *m = Parameter_Type{} }
-func (m *Parameter_Type) String() string            { return proto.CompactTextString(m) }
-func (*Parameter_Type) ProtoMessage()               {}
-func (*Parameter_Type) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} }
+var xxx_messageInfo_Parameter_Type proto.InternalMessageInfo
 
 type StateSpec struct {
 	// Types that are valid to be assigned to Spec:
@@ -1536,15 +1783,39 @@ type StateSpec struct {
 	//	*StateSpec_CombiningSpec
 	//	*StateSpec_MapSpec
 	//	*StateSpec_SetSpec
-	Spec isStateSpec_Spec `protobuf_oneof:"spec"`
+	Spec                 isStateSpec_Spec `protobuf_oneof:"spec"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *StateSpec) Reset()         { *m = StateSpec{} }
+func (m *StateSpec) String() string { return proto.CompactTextString(m) }
+func (*StateSpec) ProtoMessage()    {}
+func (*StateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{10}
+}
+func (m *StateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StateSpec.Unmarshal(m, b)
+}
+func (m *StateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StateSpec.Marshal(b, m, deterministic)
+}
+func (dst *StateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StateSpec.Merge(dst, src)
+}
+func (m *StateSpec) XXX_Size() int {
+	return xxx_messageInfo_StateSpec.Size(m)
+}
+func (m *StateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_StateSpec.DiscardUnknown(m)
 }
 
-func (m *StateSpec) Reset()                    { *m = StateSpec{} }
-func (m *StateSpec) String() string            { return proto.CompactTextString(m) }
-func (*StateSpec) ProtoMessage()               {}
-func (*StateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+var xxx_messageInfo_StateSpec proto.InternalMessageInfo
 
-type isStateSpec_Spec interface{ isStateSpec_Spec() }
+type isStateSpec_Spec interface {
+	isStateSpec_Spec()
+}
 
 type StateSpec_ValueSpec struct {
 	ValueSpec *ValueStateSpec `protobuf:"bytes,1,opt,name=value_spec,json=valueSpec,oneof"`
@@ -1711,27 +1982,27 @@ func _StateSpec_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Spec.(type) {
 	case *StateSpec_ValueSpec:
 		s := proto.Size(x.ValueSpec)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateSpec_BagSpec:
 		s := proto.Size(x.BagSpec)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateSpec_CombiningSpec:
 		s := proto.Size(x.CombiningSpec)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateSpec_MapSpec:
 		s := proto.Size(x.MapSpec)
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *StateSpec_SetSpec:
 		s := proto.Size(x.SetSpec)
-		n += proto.SizeVarint(5<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -1742,13 +2013,35 @@ func _StateSpec_OneofSizer(msg proto.Message) (n int) {
 }
 
 type ValueStateSpec struct {
-	CoderId string `protobuf:"bytes,1,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
+	CoderId              string   `protobuf:"bytes,1,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ValueStateSpec) Reset()         { *m = ValueStateSpec{} }
+func (m *ValueStateSpec) String() string { return proto.CompactTextString(m) }
+func (*ValueStateSpec) ProtoMessage()    {}
+func (*ValueStateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{11}
+}
+func (m *ValueStateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueStateSpec.Unmarshal(m, b)
+}
+func (m *ValueStateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueStateSpec.Marshal(b, m, deterministic)
+}
+func (dst *ValueStateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueStateSpec.Merge(dst, src)
+}
+func (m *ValueStateSpec) XXX_Size() int {
+	return xxx_messageInfo_ValueStateSpec.Size(m)
+}
+func (m *ValueStateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueStateSpec.DiscardUnknown(m)
 }
 
-func (m *ValueStateSpec) Reset()                    { *m = ValueStateSpec{} }
-func (m *ValueStateSpec) String() string            { return proto.CompactTextString(m) }
-func (*ValueStateSpec) ProtoMessage()               {}
-func (*ValueStateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+var xxx_messageInfo_ValueStateSpec proto.InternalMessageInfo
 
 func (m *ValueStateSpec) GetCoderId() string {
 	if m != nil {
@@ -1758,13 +2051,35 @@ func (m *ValueStateSpec) GetCoderId() string {
 }
 
 type BagStateSpec struct {
-	ElementCoderId string `protobuf:"bytes,1,opt,name=element_coder_id,json=elementCoderId" json:"element_coder_id,omitempty"`
+	ElementCoderId       string   `protobuf:"bytes,1,opt,name=element_coder_id,json=elementCoderId" json:"element_coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *BagStateSpec) Reset()                    { *m = BagStateSpec{} }
-func (m *BagStateSpec) String() string            { return proto.CompactTextString(m) }
-func (*BagStateSpec) ProtoMessage()               {}
-func (*BagStateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (m *BagStateSpec) Reset()         { *m = BagStateSpec{} }
+func (m *BagStateSpec) String() string { return proto.CompactTextString(m) }
+func (*BagStateSpec) ProtoMessage()    {}
+func (*BagStateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{12}
+}
+func (m *BagStateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BagStateSpec.Unmarshal(m, b)
+}
+func (m *BagStateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BagStateSpec.Marshal(b, m, deterministic)
+}
+func (dst *BagStateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BagStateSpec.Merge(dst, src)
+}
+func (m *BagStateSpec) XXX_Size() int {
+	return xxx_messageInfo_BagStateSpec.Size(m)
+}
+func (m *BagStateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_BagStateSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BagStateSpec proto.InternalMessageInfo
 
 func (m *BagStateSpec) GetElementCoderId() string {
 	if m != nil {
@@ -1774,14 +2089,36 @@ func (m *BagStateSpec) GetElementCoderId() string {
 }
 
 type CombiningStateSpec struct {
-	AccumulatorCoderId string           `protobuf:"bytes,1,opt,name=accumulator_coder_id,json=accumulatorCoderId" json:"accumulator_coder_id,omitempty"`
-	CombineFn          *SdkFunctionSpec `protobuf:"bytes,2,opt,name=combine_fn,json=combineFn" json:"combine_fn,omitempty"`
+	AccumulatorCoderId   string           `protobuf:"bytes,1,opt,name=accumulator_coder_id,json=accumulatorCoderId" json:"accumulator_coder_id,omitempty"`
+	CombineFn            *SdkFunctionSpec `protobuf:"bytes,2,opt,name=combine_fn,json=combineFn" json:"combine_fn,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *CombiningStateSpec) Reset()                    { *m = CombiningStateSpec{} }
-func (m *CombiningStateSpec) String() string            { return proto.CompactTextString(m) }
-func (*CombiningStateSpec) ProtoMessage()               {}
-func (*CombiningStateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (m *CombiningStateSpec) Reset()         { *m = CombiningStateSpec{} }
+func (m *CombiningStateSpec) String() string { return proto.CompactTextString(m) }
+func (*CombiningStateSpec) ProtoMessage()    {}
+func (*CombiningStateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{13}
+}
+func (m *CombiningStateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CombiningStateSpec.Unmarshal(m, b)
+}
+func (m *CombiningStateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CombiningStateSpec.Marshal(b, m, deterministic)
+}
+func (dst *CombiningStateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CombiningStateSpec.Merge(dst, src)
+}
+func (m *CombiningStateSpec) XXX_Size() int {
+	return xxx_messageInfo_CombiningStateSpec.Size(m)
+}
+func (m *CombiningStateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_CombiningStateSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CombiningStateSpec proto.InternalMessageInfo
 
 func (m *CombiningStateSpec) GetAccumulatorCoderId() string {
 	if m != nil {
@@ -1798,14 +2135,36 @@ func (m *CombiningStateSpec) GetCombineFn() *SdkFunctionSpec {
 }
 
 type MapStateSpec struct {
-	KeyCoderId   string `protobuf:"bytes,1,opt,name=key_coder_id,json=keyCoderId" json:"key_coder_id,omitempty"`
-	ValueCoderId string `protobuf:"bytes,2,opt,name=value_coder_id,json=valueCoderId" json:"value_coder_id,omitempty"`
+	KeyCoderId           string   `protobuf:"bytes,1,opt,name=key_coder_id,json=keyCoderId" json:"key_coder_id,omitempty"`
+	ValueCoderId         string   `protobuf:"bytes,2,opt,name=value_coder_id,json=valueCoderId" json:"value_coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *MapStateSpec) Reset()                    { *m = MapStateSpec{} }
-func (m *MapStateSpec) String() string            { return proto.CompactTextString(m) }
-func (*MapStateSpec) ProtoMessage()               {}
-func (*MapStateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (m *MapStateSpec) Reset()         { *m = MapStateSpec{} }
+func (m *MapStateSpec) String() string { return proto.CompactTextString(m) }
+func (*MapStateSpec) ProtoMessage()    {}
+func (*MapStateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{14}
+}
+func (m *MapStateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MapStateSpec.Unmarshal(m, b)
+}
+func (m *MapStateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MapStateSpec.Marshal(b, m, deterministic)
+}
+func (dst *MapStateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MapStateSpec.Merge(dst, src)
+}
+func (m *MapStateSpec) XXX_Size() int {
+	return xxx_messageInfo_MapStateSpec.Size(m)
+}
+func (m *MapStateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_MapStateSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MapStateSpec proto.InternalMessageInfo
 
 func (m *MapStateSpec) GetKeyCoderId() string {
 	if m != nil {
@@ -1822,13 +2181,35 @@ func (m *MapStateSpec) GetValueCoderId() string {
 }
 
 type SetStateSpec struct {
-	ElementCoderId string `protobuf:"bytes,1,opt,name=element_coder_id,json=elementCoderId" json:"element_coder_id,omitempty"`
+	ElementCoderId       string   `protobuf:"bytes,1,opt,name=element_coder_id,json=elementCoderId" json:"element_coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SetStateSpec) Reset()         { *m = SetStateSpec{} }
+func (m *SetStateSpec) String() string { return proto.CompactTextString(m) }
+func (*SetStateSpec) ProtoMessage()    {}
+func (*SetStateSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{15}
+}
+func (m *SetStateSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SetStateSpec.Unmarshal(m, b)
+}
+func (m *SetStateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SetStateSpec.Marshal(b, m, deterministic)
+}
+func (dst *SetStateSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SetStateSpec.Merge(dst, src)
+}
+func (m *SetStateSpec) XXX_Size() int {
+	return xxx_messageInfo_SetStateSpec.Size(m)
+}
+func (m *SetStateSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_SetStateSpec.DiscardUnknown(m)
 }
 
-func (m *SetStateSpec) Reset()                    { *m = SetStateSpec{} }
-func (m *SetStateSpec) String() string            { return proto.CompactTextString(m) }
-func (*SetStateSpec) ProtoMessage()               {}
-func (*SetStateSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+var xxx_messageInfo_SetStateSpec proto.InternalMessageInfo
 
 func (m *SetStateSpec) GetElementCoderId() string {
 	if m != nil {
@@ -1838,13 +2219,35 @@ func (m *SetStateSpec) GetElementCoderId() string {
 }
 
 type TimerSpec struct {
-	TimeDomain TimeDomain_Enum `protobuf:"varint,1,opt,name=time_domain,json=timeDomain,enum=org.apache.beam.model.pipeline.v1.TimeDomain_Enum" json:"time_domain,omitempty"`
+	TimeDomain           TimeDomain_Enum `protobuf:"varint,1,opt,name=time_domain,json=timeDomain,enum=org.apache.beam.model.pipeline.v1.TimeDomain_Enum" json:"time_domain,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *TimerSpec) Reset()                    { *m = TimerSpec{} }
-func (m *TimerSpec) String() string            { return proto.CompactTextString(m) }
-func (*TimerSpec) ProtoMessage()               {}
-func (*TimerSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (m *TimerSpec) Reset()         { *m = TimerSpec{} }
+func (m *TimerSpec) String() string { return proto.CompactTextString(m) }
+func (*TimerSpec) ProtoMessage()    {}
+func (*TimerSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{16}
+}
+func (m *TimerSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimerSpec.Unmarshal(m, b)
+}
+func (m *TimerSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimerSpec.Marshal(b, m, deterministic)
+}
+func (dst *TimerSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimerSpec.Merge(dst, src)
+}
+func (m *TimerSpec) XXX_Size() int {
+	return xxx_messageInfo_TimerSpec.Size(m)
+}
+func (m *TimerSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimerSpec.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimerSpec proto.InternalMessageInfo
 
 func (m *TimerSpec) GetTimeDomain() TimeDomain_Enum {
 	if m != nil {
@@ -1854,25 +2257,69 @@ func (m *TimerSpec) GetTimeDomain() TimeDomain_Enum {
 }
 
 type IsBounded struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IsBounded) Reset()         { *m = IsBounded{} }
+func (m *IsBounded) String() string { return proto.CompactTextString(m) }
+func (*IsBounded) ProtoMessage()    {}
+func (*IsBounded) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{17}
+}
+func (m *IsBounded) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IsBounded.Unmarshal(m, b)
+}
+func (m *IsBounded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IsBounded.Marshal(b, m, deterministic)
+}
+func (dst *IsBounded) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IsBounded.Merge(dst, src)
+}
+func (m *IsBounded) XXX_Size() int {
+	return xxx_messageInfo_IsBounded.Size(m)
+}
+func (m *IsBounded) XXX_DiscardUnknown() {
+	xxx_messageInfo_IsBounded.DiscardUnknown(m)
 }
 
-func (m *IsBounded) Reset()                    { *m = IsBounded{} }
-func (m *IsBounded) String() string            { return proto.CompactTextString(m) }
-func (*IsBounded) ProtoMessage()               {}
-func (*IsBounded) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+var xxx_messageInfo_IsBounded proto.InternalMessageInfo
 
 // The payload for the primitive Read transform.
 type ReadPayload struct {
 	// (Required) The SdkFunctionSpec of the source for this Read.
 	Source *SdkFunctionSpec `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
 	// (Required) Whether the source is bounded or unbounded
-	IsBounded IsBounded_Enum `protobuf:"varint,2,opt,name=is_bounded,json=isBounded,enum=org.apache.beam.model.pipeline.v1.IsBounded_Enum" json:"is_bounded,omitempty"`
+	IsBounded            IsBounded_Enum `protobuf:"varint,2,opt,name=is_bounded,json=isBounded,enum=org.apache.beam.model.pipeline.v1.IsBounded_Enum" json:"is_bounded,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *ReadPayload) Reset()         { *m = ReadPayload{} }
+func (m *ReadPayload) String() string { return proto.CompactTextString(m) }
+func (*ReadPayload) ProtoMessage()    {}
+func (*ReadPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{18}
+}
+func (m *ReadPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReadPayload.Unmarshal(m, b)
+}
+func (m *ReadPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReadPayload.Marshal(b, m, deterministic)
+}
+func (dst *ReadPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReadPayload.Merge(dst, src)
+}
+func (m *ReadPayload) XXX_Size() int {
+	return xxx_messageInfo_ReadPayload.Size(m)
+}
+func (m *ReadPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReadPayload.DiscardUnknown(m)
 }
 
-func (m *ReadPayload) Reset()                    { *m = ReadPayload{} }
-func (m *ReadPayload) String() string            { return proto.CompactTextString(m) }
-func (*ReadPayload) ProtoMessage()               {}
-func (*ReadPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+var xxx_messageInfo_ReadPayload proto.InternalMessageInfo
 
 func (m *ReadPayload) GetSource() *SdkFunctionSpec {
 	if m != nil {
@@ -1891,13 +2338,35 @@ func (m *ReadPayload) GetIsBounded() IsBounded_Enum {
 // The payload for the WindowInto transform.
 type WindowIntoPayload struct {
 	// (Required) The SdkFunctionSpec of the WindowFn.
-	WindowFn *SdkFunctionSpec `protobuf:"bytes,1,opt,name=window_fn,json=windowFn" json:"window_fn,omitempty"`
+	WindowFn             *SdkFunctionSpec `protobuf:"bytes,1,opt,name=window_fn,json=windowFn" json:"window_fn,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *WindowIntoPayload) Reset()         { *m = WindowIntoPayload{} }
+func (m *WindowIntoPayload) String() string { return proto.CompactTextString(m) }
+func (*WindowIntoPayload) ProtoMessage()    {}
+func (*WindowIntoPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{19}
+}
+func (m *WindowIntoPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WindowIntoPayload.Unmarshal(m, b)
+}
+func (m *WindowIntoPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WindowIntoPayload.Marshal(b, m, deterministic)
+}
+func (dst *WindowIntoPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WindowIntoPayload.Merge(dst, src)
+}
+func (m *WindowIntoPayload) XXX_Size() int {
+	return xxx_messageInfo_WindowIntoPayload.Size(m)
+}
+func (m *WindowIntoPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_WindowIntoPayload.DiscardUnknown(m)
 }
 
-func (m *WindowIntoPayload) Reset()                    { *m = WindowIntoPayload{} }
-func (m *WindowIntoPayload) String() string            { return proto.CompactTextString(m) }
-func (*WindowIntoPayload) ProtoMessage()               {}
-func (*WindowIntoPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+var xxx_messageInfo_WindowIntoPayload proto.InternalMessageInfo
 
 func (m *WindowIntoPayload) GetWindowFn() *SdkFunctionSpec {
 	if m != nil {
@@ -1911,13 +2380,35 @@ type CombinePayload struct {
 	// (Required) The SdkFunctionSpec of the CombineFn.
 	CombineFn *SdkFunctionSpec `protobuf:"bytes,1,opt,name=combine_fn,json=combineFn" json:"combine_fn,omitempty"`
 	// (Required) A reference to the Coder to use for accumulators of the CombineFn
-	AccumulatorCoderId string `protobuf:"bytes,2,opt,name=accumulator_coder_id,json=accumulatorCoderId" json:"accumulator_coder_id,omitempty"`
+	AccumulatorCoderId   string   `protobuf:"bytes,2,opt,name=accumulator_coder_id,json=accumulatorCoderId" json:"accumulator_coder_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *CombinePayload) Reset()                    { *m = CombinePayload{} }
-func (m *CombinePayload) String() string            { return proto.CompactTextString(m) }
-func (*CombinePayload) ProtoMessage()               {}
-func (*CombinePayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (m *CombinePayload) Reset()         { *m = CombinePayload{} }
+func (m *CombinePayload) String() string { return proto.CompactTextString(m) }
+func (*CombinePayload) ProtoMessage()    {}
+func (*CombinePayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{20}
+}
+func (m *CombinePayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CombinePayload.Unmarshal(m, b)
+}
+func (m *CombinePayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CombinePayload.Marshal(b, m, deterministic)
+}
+func (dst *CombinePayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CombinePayload.Merge(dst, src)
+}
+func (m *CombinePayload) XXX_Size() int {
+	return xxx_messageInfo_CombinePayload.Size(m)
+}
+func (m *CombinePayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_CombinePayload.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CombinePayload proto.InternalMessageInfo
 
 func (m *CombinePayload) GetCombineFn() *SdkFunctionSpec {
 	if m != nil {
@@ -1936,14 +2427,36 @@ func (m *CombinePayload) GetAccumulatorCoderId() string {
 // The payload for the test-only primitive TestStream
 type TestStreamPayload struct {
 	// (Required) the coder for elements in the TestStream events
-	CoderId string                     `protobuf:"bytes,1,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
-	Events  []*TestStreamPayload_Event `protobuf:"bytes,2,rep,name=events" json:"events,omitempty"`
+	CoderId              string                     `protobuf:"bytes,1,opt,name=coder_id,json=coderId" json:"coder_id,omitempty"`
+	Events               []*TestStreamPayload_Event `protobuf:"bytes,2,rep,name=events" json:"events,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *TestStreamPayload) Reset()         { *m = TestStreamPayload{} }
+func (m *TestStreamPayload) String() string { return proto.CompactTextString(m) }
+func (*TestStreamPayload) ProtoMessage()    {}
+func (*TestStreamPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21}
+}
+func (m *TestStreamPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload.Unmarshal(m, b)
+}
+func (m *TestStreamPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload.Merge(dst, src)
+}
+func (m *TestStreamPayload) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload.Size(m)
+}
+func (m *TestStreamPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload.DiscardUnknown(m)
 }
 
-func (m *TestStreamPayload) Reset()                    { *m = TestStreamPayload{} }
-func (m *TestStreamPayload) String() string            { return proto.CompactTextString(m) }
-func (*TestStreamPayload) ProtoMessage()               {}
-func (*TestStreamPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+var xxx_messageInfo_TestStreamPayload proto.InternalMessageInfo
 
 func (m *TestStreamPayload) GetCoderId() string {
 	if m != nil {
@@ -1964,15 +2477,39 @@ type TestStreamPayload_Event struct {
 	//	*TestStreamPayload_Event_WatermarkEvent
 	//	*TestStreamPayload_Event_ProcessingTimeEvent
 	//	*TestStreamPayload_Event_ElementEvent
-	Event isTestStreamPayload_Event_Event `protobuf_oneof:"event"`
+	Event                isTestStreamPayload_Event_Event `protobuf_oneof:"event"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
+}
+
+func (m *TestStreamPayload_Event) Reset()         { *m = TestStreamPayload_Event{} }
+func (m *TestStreamPayload_Event) String() string { return proto.CompactTextString(m) }
+func (*TestStreamPayload_Event) ProtoMessage()    {}
+func (*TestStreamPayload_Event) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21, 0}
+}
+func (m *TestStreamPayload_Event) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload_Event.Unmarshal(m, b)
+}
+func (m *TestStreamPayload_Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload_Event.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload_Event) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload_Event.Merge(dst, src)
+}
+func (m *TestStreamPayload_Event) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload_Event.Size(m)
+}
+func (m *TestStreamPayload_Event) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload_Event.DiscardUnknown(m)
 }
 
-func (m *TestStreamPayload_Event) Reset()                    { *m = TestStreamPayload_Event{} }
-func (m *TestStreamPayload_Event) String() string            { return proto.CompactTextString(m) }
-func (*TestStreamPayload_Event) ProtoMessage()               {}
-func (*TestStreamPayload_Event) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21, 0} }
+var xxx_messageInfo_TestStreamPayload_Event proto.InternalMessageInfo
 
-type isTestStreamPayload_Event_Event interface{ isTestStreamPayload_Event_Event() }
+type isTestStreamPayload_Event_Event interface {
+	isTestStreamPayload_Event_Event()
+}
 
 type TestStreamPayload_Event_WatermarkEvent struct {
 	WatermarkEvent *TestStreamPayload_Event_AdvanceWatermark `protobuf:"bytes,1,opt,name=watermark_event,json=watermarkEvent,oneof"`
@@ -2089,17 +2626,17 @@ func _TestStreamPayload_Event_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Event.(type) {
 	case *TestStreamPayload_Event_WatermarkEvent:
 		s := proto.Size(x.WatermarkEvent)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *TestStreamPayload_Event_ProcessingTimeEvent:
 		s := proto.Size(x.ProcessingTimeEvent)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *TestStreamPayload_Event_ElementEvent:
 		s := proto.Size(x.ElementEvent)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -2110,7 +2647,10 @@ func _TestStreamPayload_Event_OneofSizer(msg proto.Message) (n int) {
 }
 
 type TestStreamPayload_Event_AdvanceWatermark struct {
-	NewWatermark int64 `protobuf:"varint,1,opt,name=new_watermark,json=newWatermark" json:"new_watermark,omitempty"`
+	NewWatermark         int64    `protobuf:"varint,1,opt,name=new_watermark,json=newWatermark" json:"new_watermark,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *TestStreamPayload_Event_AdvanceWatermark) Reset() {
@@ -2119,8 +2659,25 @@ func (m *TestStreamPayload_Event_AdvanceWatermark) Reset() {
 func (m *TestStreamPayload_Event_AdvanceWatermark) String() string { return proto.CompactTextString(m) }
 func (*TestStreamPayload_Event_AdvanceWatermark) ProtoMessage()    {}
 func (*TestStreamPayload_Event_AdvanceWatermark) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{21, 0, 0}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21, 0, 0}
+}
+func (m *TestStreamPayload_Event_AdvanceWatermark) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark.Unmarshal(m, b)
+}
+func (m *TestStreamPayload_Event_AdvanceWatermark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload_Event_AdvanceWatermark) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark.Merge(dst, src)
+}
+func (m *TestStreamPayload_Event_AdvanceWatermark) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark.Size(m)
 }
+func (m *TestStreamPayload_Event_AdvanceWatermark) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestStreamPayload_Event_AdvanceWatermark proto.InternalMessageInfo
 
 func (m *TestStreamPayload_Event_AdvanceWatermark) GetNewWatermark() int64 {
 	if m != nil {
@@ -2130,7 +2687,10 @@ func (m *TestStreamPayload_Event_AdvanceWatermark) GetNewWatermark() int64 {
 }
 
 type TestStreamPayload_Event_AdvanceProcessingTime struct {
-	AdvanceDuration int64 `protobuf:"varint,1,opt,name=advance_duration,json=advanceDuration" json:"advance_duration,omitempty"`
+	AdvanceDuration      int64    `protobuf:"varint,1,opt,name=advance_duration,json=advanceDuration" json:"advance_duration,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *TestStreamPayload_Event_AdvanceProcessingTime) Reset() {
@@ -2141,9 +2701,26 @@ func (m *TestStreamPayload_Event_AdvanceProcessingTime) String() string {
 }
 func (*TestStreamPayload_Event_AdvanceProcessingTime) ProtoMessage() {}
 func (*TestStreamPayload_Event_AdvanceProcessingTime) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{21, 0, 1}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21, 0, 1}
+}
+func (m *TestStreamPayload_Event_AdvanceProcessingTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime.Unmarshal(m, b)
+}
+func (m *TestStreamPayload_Event_AdvanceProcessingTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload_Event_AdvanceProcessingTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime.Merge(dst, src)
+}
+func (m *TestStreamPayload_Event_AdvanceProcessingTime) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime.Size(m)
+}
+func (m *TestStreamPayload_Event_AdvanceProcessingTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_TestStreamPayload_Event_AdvanceProcessingTime proto.InternalMessageInfo
+
 func (m *TestStreamPayload_Event_AdvanceProcessingTime) GetAdvanceDuration() int64 {
 	if m != nil {
 		return m.AdvanceDuration
@@ -2152,15 +2729,35 @@ func (m *TestStreamPayload_Event_AdvanceProcessingTime) GetAdvanceDuration() int
 }
 
 type TestStreamPayload_Event_AddElements struct {
-	Elements []*TestStreamPayload_TimestampedElement `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
+	Elements             []*TestStreamPayload_TimestampedElement `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
+	XXX_unrecognized     []byte                                  `json:"-"`
+	XXX_sizecache        int32                                   `json:"-"`
 }
 
 func (m *TestStreamPayload_Event_AddElements) Reset()         { *m = TestStreamPayload_Event_AddElements{} }
 func (m *TestStreamPayload_Event_AddElements) String() string { return proto.CompactTextString(m) }
 func (*TestStreamPayload_Event_AddElements) ProtoMessage()    {}
 func (*TestStreamPayload_Event_AddElements) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{21, 0, 2}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21, 0, 2}
+}
+func (m *TestStreamPayload_Event_AddElements) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload_Event_AddElements.Unmarshal(m, b)
+}
+func (m *TestStreamPayload_Event_AddElements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload_Event_AddElements.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload_Event_AddElements) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload_Event_AddElements.Merge(dst, src)
 }
+func (m *TestStreamPayload_Event_AddElements) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload_Event_AddElements.Size(m)
+}
+func (m *TestStreamPayload_Event_AddElements) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload_Event_AddElements.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestStreamPayload_Event_AddElements proto.InternalMessageInfo
 
 func (m *TestStreamPayload_Event_AddElements) GetElements() []*TestStreamPayload_TimestampedElement {
 	if m != nil {
@@ -2170,16 +2767,36 @@ func (m *TestStreamPayload_Event_AddElements) GetElements() []*TestStreamPayload
 }
 
 type TestStreamPayload_TimestampedElement struct {
-	EncodedElement []byte `protobuf:"bytes,1,opt,name=encoded_element,json=encodedElement,proto3" json:"encoded_element,omitempty"`
-	Timestamp      int64  `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	EncodedElement       []byte   `protobuf:"bytes,1,opt,name=encoded_element,json=encodedElement,proto3" json:"encoded_element,omitempty"`
+	Timestamp            int64    `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *TestStreamPayload_TimestampedElement) Reset()         { *m = TestStreamPayload_TimestampedElement{} }
 func (m *TestStreamPayload_TimestampedElement) String() string { return proto.CompactTextString(m) }
 func (*TestStreamPayload_TimestampedElement) ProtoMessage()    {}
 func (*TestStreamPayload_TimestampedElement) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{21, 1}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{21, 1}
 }
+func (m *TestStreamPayload_TimestampedElement) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestStreamPayload_TimestampedElement.Unmarshal(m, b)
+}
+func (m *TestStreamPayload_TimestampedElement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestStreamPayload_TimestampedElement.Marshal(b, m, deterministic)
+}
+func (dst *TestStreamPayload_TimestampedElement) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestStreamPayload_TimestampedElement.Merge(dst, src)
+}
+func (m *TestStreamPayload_TimestampedElement) XXX_Size() int {
+	return xxx_messageInfo_TestStreamPayload_TimestampedElement.Size(m)
+}
+func (m *TestStreamPayload_TimestampedElement) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestStreamPayload_TimestampedElement.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestStreamPayload_TimestampedElement proto.InternalMessageInfo
 
 func (m *TestStreamPayload_TimestampedElement) GetEncodedElement() []byte {
 	if m != nil {
@@ -2204,12 +2821,34 @@ type WriteFilesPayload struct {
 	WindowedWrites           bool                  `protobuf:"varint,3,opt,name=windowed_writes,json=windowedWrites" json:"windowed_writes,omitempty"`
 	RunnerDeterminedSharding bool                  `protobuf:"varint,4,opt,name=runner_determined_sharding,json=runnerDeterminedSharding" json:"runner_determined_sharding,omitempty"`
 	SideInputs               map[string]*SideInput `protobuf:"bytes,5,rep,name=side_inputs,json=sideInputs" json:"side_inputs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral     struct{}              `json:"-"`
+	XXX_unrecognized         []byte                `json:"-"`
+	XXX_sizecache            int32                 `json:"-"`
+}
+
+func (m *WriteFilesPayload) Reset()         { *m = WriteFilesPayload{} }
+func (m *WriteFilesPayload) String() string { return proto.CompactTextString(m) }
+func (*WriteFilesPayload) ProtoMessage()    {}
+func (*WriteFilesPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{22}
+}
+func (m *WriteFilesPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WriteFilesPayload.Unmarshal(m, b)
+}
+func (m *WriteFilesPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WriteFilesPayload.Marshal(b, m, deterministic)
+}
+func (dst *WriteFilesPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WriteFilesPayload.Merge(dst, src)
+}
+func (m *WriteFilesPayload) XXX_Size() int {
+	return xxx_messageInfo_WriteFilesPayload.Size(m)
+}
+func (m *WriteFilesPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_WriteFilesPayload.DiscardUnknown(m)
 }
 
-func (m *WriteFilesPayload) Reset()                    { *m = WriteFilesPayload{} }
-func (m *WriteFilesPayload) String() string            { return proto.CompactTextString(m) }
-func (*WriteFilesPayload) ProtoMessage()               {}
-func (*WriteFilesPayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+var xxx_messageInfo_WriteFilesPayload proto.InternalMessageInfo
 
 func (m *WriteFilesPayload) GetSink() *SdkFunctionSpec {
 	if m != nil {
@@ -2258,13 +2897,35 @@ type Coder struct {
 	// (Optional) If this coder is parametric, such as ListCoder(VarIntCoder),
 	// this is a list of the components. In order for encodings to be identical,
 	// the SdkFunctionSpec and all components must be identical, recursively.
-	ComponentCoderIds []string `protobuf:"bytes,2,rep,name=component_coder_ids,json=componentCoderIds" json:"component_coder_ids,omitempty"`
+	ComponentCoderIds    []string `protobuf:"bytes,2,rep,name=component_coder_ids,json=componentCoderIds" json:"component_coder_ids,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Coder) Reset()         { *m = Coder{} }
+func (m *Coder) String() string { return proto.CompactTextString(m) }
+func (*Coder) ProtoMessage()    {}
+func (*Coder) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{23}
+}
+func (m *Coder) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Coder.Unmarshal(m, b)
+}
+func (m *Coder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Coder.Marshal(b, m, deterministic)
+}
+func (dst *Coder) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Coder.Merge(dst, src)
+}
+func (m *Coder) XXX_Size() int {
+	return xxx_messageInfo_Coder.Size(m)
+}
+func (m *Coder) XXX_DiscardUnknown() {
+	xxx_messageInfo_Coder.DiscardUnknown(m)
 }
 
-func (m *Coder) Reset()                    { *m = Coder{} }
-func (m *Coder) String() string            { return proto.CompactTextString(m) }
-func (*Coder) ProtoMessage()               {}
-func (*Coder) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+var xxx_messageInfo_Coder proto.InternalMessageInfo
 
 func (m *Coder) GetSpec() *SdkFunctionSpec {
 	if m != nil {
@@ -2281,12 +2942,34 @@ func (m *Coder) GetComponentCoderIds() []string {
 }
 
 type StandardCoders struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *StandardCoders) Reset()                    { *m = StandardCoders{} }
-func (m *StandardCoders) String() string            { return proto.CompactTextString(m) }
-func (*StandardCoders) ProtoMessage()               {}
-func (*StandardCoders) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+func (m *StandardCoders) Reset()         { *m = StandardCoders{} }
+func (m *StandardCoders) String() string { return proto.CompactTextString(m) }
+func (*StandardCoders) ProtoMessage()    {}
+func (*StandardCoders) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{24}
+}
+func (m *StandardCoders) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StandardCoders.Unmarshal(m, b)
+}
+func (m *StandardCoders) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StandardCoders.Marshal(b, m, deterministic)
+}
+func (dst *StandardCoders) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StandardCoders.Merge(dst, src)
+}
+func (m *StandardCoders) XXX_Size() int {
+	return xxx_messageInfo_StandardCoders.Size(m)
+}
+func (m *StandardCoders) XXX_DiscardUnknown() {
+	xxx_messageInfo_StandardCoders.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StandardCoders proto.InternalMessageInfo
 
 // A windowing strategy describes the window function, triggering, allowed
 // lateness, and accumulation mode for a PCollection.
@@ -2329,13 +3012,35 @@ type WindowingStrategy struct {
 	// (Required) Whether or not the window fn assigns inputs to exactly one window
 	//
 	// This knowledge is required for some optimizations
-	AssignsToOneWindow bool `protobuf:"varint,10,opt,name=assigns_to_one_window,json=assignsToOneWindow" json:"assigns_to_one_window,omitempty"`
+	AssignsToOneWindow   bool     `protobuf:"varint,10,opt,name=assigns_to_one_window,json=assignsToOneWindow" json:"assigns_to_one_window,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *WindowingStrategy) Reset()                    { *m = WindowingStrategy{} }
-func (m *WindowingStrategy) String() string            { return proto.CompactTextString(m) }
-func (*WindowingStrategy) ProtoMessage()               {}
-func (*WindowingStrategy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (m *WindowingStrategy) Reset()         { *m = WindowingStrategy{} }
+func (m *WindowingStrategy) String() string { return proto.CompactTextString(m) }
+func (*WindowingStrategy) ProtoMessage()    {}
+func (*WindowingStrategy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{25}
+}
+func (m *WindowingStrategy) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WindowingStrategy.Unmarshal(m, b)
+}
+func (m *WindowingStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WindowingStrategy.Marshal(b, m, deterministic)
+}
+func (dst *WindowingStrategy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WindowingStrategy.Merge(dst, src)
+}
+func (m *WindowingStrategy) XXX_Size() int {
+	return xxx_messageInfo_WindowingStrategy.Size(m)
+}
+func (m *WindowingStrategy) XXX_DiscardUnknown() {
+	xxx_messageInfo_WindowingStrategy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WindowingStrategy proto.InternalMessageInfo
 
 func (m *WindowingStrategy) GetWindowFn() *SdkFunctionSpec {
 	if m != nil {
@@ -2411,62 +3116,194 @@ func (m *WindowingStrategy) GetAssignsToOneWindow() bool {
 // merging-but-already-merged, in which case a subsequent GroupByKey is almost
 // always going to do something the user does not want
 type MergeStatus struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *MergeStatus) Reset()                    { *m = MergeStatus{} }
-func (m *MergeStatus) String() string            { return proto.CompactTextString(m) }
-func (*MergeStatus) ProtoMessage()               {}
-func (*MergeStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+func (m *MergeStatus) Reset()         { *m = MergeStatus{} }
+func (m *MergeStatus) String() string { return proto.CompactTextString(m) }
+func (*MergeStatus) ProtoMessage()    {}
+func (*MergeStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{26}
+}
+func (m *MergeStatus) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeStatus.Unmarshal(m, b)
+}
+func (m *MergeStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeStatus.Marshal(b, m, deterministic)
+}
+func (dst *MergeStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeStatus.Merge(dst, src)
+}
+func (m *MergeStatus) XXX_Size() int {
+	return xxx_messageInfo_MergeStatus.Size(m)
+}
+func (m *MergeStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeStatus proto.InternalMessageInfo
 
 // Whether or not subsequent outputs of aggregations should be entire
 // replacement values or just the aggregation of inputs received since
 // the prior output.
 type AccumulationMode struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AccumulationMode) Reset()         { *m = AccumulationMode{} }
+func (m *AccumulationMode) String() string { return proto.CompactTextString(m) }
+func (*AccumulationMode) ProtoMessage()    {}
+func (*AccumulationMode) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{27}
+}
+func (m *AccumulationMode) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AccumulationMode.Unmarshal(m, b)
+}
+func (m *AccumulationMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AccumulationMode.Marshal(b, m, deterministic)
+}
+func (dst *AccumulationMode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AccumulationMode.Merge(dst, src)
+}
+func (m *AccumulationMode) XXX_Size() int {
+	return xxx_messageInfo_AccumulationMode.Size(m)
+}
+func (m *AccumulationMode) XXX_DiscardUnknown() {
+	xxx_messageInfo_AccumulationMode.DiscardUnknown(m)
 }
 
-func (m *AccumulationMode) Reset()                    { *m = AccumulationMode{} }
-func (m *AccumulationMode) String() string            { return proto.CompactTextString(m) }
-func (*AccumulationMode) ProtoMessage()               {}
-func (*AccumulationMode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+var xxx_messageInfo_AccumulationMode proto.InternalMessageInfo
 
 // Controls whether or not an aggregating transform should output data
 // when a window expires.
 type ClosingBehavior struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *ClosingBehavior) Reset()                    { *m = ClosingBehavior{} }
-func (m *ClosingBehavior) String() string            { return proto.CompactTextString(m) }
-func (*ClosingBehavior) ProtoMessage()               {}
-func (*ClosingBehavior) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (m *ClosingBehavior) Reset()         { *m = ClosingBehavior{} }
+func (m *ClosingBehavior) String() string { return proto.CompactTextString(m) }
+func (*ClosingBehavior) ProtoMessage()    {}
+func (*ClosingBehavior) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{28}
+}
+func (m *ClosingBehavior) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ClosingBehavior.Unmarshal(m, b)
+}
+func (m *ClosingBehavior) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ClosingBehavior.Marshal(b, m, deterministic)
+}
+func (dst *ClosingBehavior) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ClosingBehavior.Merge(dst, src)
+}
+func (m *ClosingBehavior) XXX_Size() int {
+	return xxx_messageInfo_ClosingBehavior.Size(m)
+}
+func (m *ClosingBehavior) XXX_DiscardUnknown() {
+	xxx_messageInfo_ClosingBehavior.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ClosingBehavior proto.InternalMessageInfo
 
 // Controls whether or not an aggregating transform should output data
 // when an on-time pane is empty.
 type OnTimeBehavior struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnTimeBehavior) Reset()         { *m = OnTimeBehavior{} }
+func (m *OnTimeBehavior) String() string { return proto.CompactTextString(m) }
+func (*OnTimeBehavior) ProtoMessage()    {}
+func (*OnTimeBehavior) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{29}
+}
+func (m *OnTimeBehavior) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnTimeBehavior.Unmarshal(m, b)
+}
+func (m *OnTimeBehavior) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnTimeBehavior.Marshal(b, m, deterministic)
+}
+func (dst *OnTimeBehavior) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnTimeBehavior.Merge(dst, src)
+}
+func (m *OnTimeBehavior) XXX_Size() int {
+	return xxx_messageInfo_OnTimeBehavior.Size(m)
+}
+func (m *OnTimeBehavior) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnTimeBehavior.DiscardUnknown(m)
 }
 
-func (m *OnTimeBehavior) Reset()                    { *m = OnTimeBehavior{} }
-func (m *OnTimeBehavior) String() string            { return proto.CompactTextString(m) }
-func (*OnTimeBehavior) ProtoMessage()               {}
-func (*OnTimeBehavior) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+var xxx_messageInfo_OnTimeBehavior proto.InternalMessageInfo
 
 // When a number of windowed, timestamped inputs are aggregated, the timestamp
 // for the resulting output.
 type OutputTime struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OutputTime) Reset()         { *m = OutputTime{} }
+func (m *OutputTime) String() string { return proto.CompactTextString(m) }
+func (*OutputTime) ProtoMessage()    {}
+func (*OutputTime) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{30}
+}
+func (m *OutputTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OutputTime.Unmarshal(m, b)
+}
+func (m *OutputTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OutputTime.Marshal(b, m, deterministic)
+}
+func (dst *OutputTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OutputTime.Merge(dst, src)
+}
+func (m *OutputTime) XXX_Size() int {
+	return xxx_messageInfo_OutputTime.Size(m)
+}
+func (m *OutputTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_OutputTime.DiscardUnknown(m)
 }
 
-func (m *OutputTime) Reset()                    { *m = OutputTime{} }
-func (m *OutputTime) String() string            { return proto.CompactTextString(m) }
-func (*OutputTime) ProtoMessage()               {}
-func (*OutputTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+var xxx_messageInfo_OutputTime proto.InternalMessageInfo
 
 // The different time domains in the Beam model.
 type TimeDomain struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TimeDomain) Reset()         { *m = TimeDomain{} }
+func (m *TimeDomain) String() string { return proto.CompactTextString(m) }
+func (*TimeDomain) ProtoMessage()    {}
+func (*TimeDomain) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{31}
+}
+func (m *TimeDomain) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimeDomain.Unmarshal(m, b)
+}
+func (m *TimeDomain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimeDomain.Marshal(b, m, deterministic)
+}
+func (dst *TimeDomain) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimeDomain.Merge(dst, src)
+}
+func (m *TimeDomain) XXX_Size() int {
+	return xxx_messageInfo_TimeDomain.Size(m)
+}
+func (m *TimeDomain) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimeDomain.DiscardUnknown(m)
 }
 
-func (m *TimeDomain) Reset()                    { *m = TimeDomain{} }
-func (m *TimeDomain) String() string            { return proto.CompactTextString(m) }
-func (*TimeDomain) ProtoMessage()               {}
-func (*TimeDomain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+var xxx_messageInfo_TimeDomain proto.InternalMessageInfo
 
 // A small DSL for expressing when to emit new aggregations
 // from a GroupByKey or CombinePerKey
@@ -2488,15 +3325,39 @@ type Trigger struct {
 	//	*Trigger_Never_
 	//	*Trigger_OrFinally_
 	//	*Trigger_Repeat_
-	Trigger isTrigger_Trigger `protobuf_oneof:"trigger"`
+	Trigger              isTrigger_Trigger `protobuf_oneof:"trigger"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
-func (m *Trigger) Reset()                    { *m = Trigger{} }
-func (m *Trigger) String() string            { return proto.CompactTextString(m) }
-func (*Trigger) ProtoMessage()               {}
-func (*Trigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
+func (m *Trigger) Reset()         { *m = Trigger{} }
+func (m *Trigger) String() string { return proto.CompactTextString(m) }
+func (*Trigger) ProtoMessage()    {}
+func (*Trigger) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32}
+}
+func (m *Trigger) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger.Unmarshal(m, b)
+}
+func (m *Trigger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger.Marshal(b, m, deterministic)
+}
+func (dst *Trigger) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger.Merge(dst, src)
+}
+func (m *Trigger) XXX_Size() int {
+	return xxx_messageInfo_Trigger.Size(m)
+}
+func (m *Trigger) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger.DiscardUnknown(m)
+}
 
-type isTrigger_Trigger interface{ isTrigger_Trigger() }
+var xxx_messageInfo_Trigger proto.InternalMessageInfo
+
+type isTrigger_Trigger interface {
+	isTrigger_Trigger()
+}
 
 type Trigger_AfterAll_ struct {
 	AfterAll *Trigger_AfterAll `protobuf:"bytes,1,opt,name=after_all,json=afterAll,oneof"`
@@ -2838,62 +3699,62 @@ func _Trigger_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Trigger.(type) {
 	case *Trigger_AfterAll_:
 		s := proto.Size(x.AfterAll)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_AfterAny_:
 		s := proto.Size(x.AfterAny)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_AfterEach_:
 		s := proto.Size(x.AfterEach)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_AfterEndOfWindow_:
 		s := proto.Size(x.AfterEndOfWindow)
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_AfterProcessingTime_:
 		s := proto.Size(x.AfterProcessingTime)
-		n += proto.SizeVarint(5<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_AfterSynchronizedProcessingTime_:
 		s := proto.Size(x.AfterSynchronizedProcessingTime)
-		n += proto.SizeVarint(6<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_Always_:
 		s := proto.Size(x.Always)
-		n += proto.SizeVarint(12<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_Default_:
 		s := proto.Size(x.Default)
-		n += proto.SizeVarint(7<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_ElementCount_:
 		s := proto.Size(x.ElementCount)
-		n += proto.SizeVarint(8<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_Never_:
 		s := proto.Size(x.Never)
-		n += proto.SizeVarint(9<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_OrFinally_:
 		s := proto.Size(x.OrFinally)
-		n += proto.SizeVarint(10<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *Trigger_Repeat_:
 		s := proto.Size(x.Repeat)
-		n += proto.SizeVarint(11<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -2905,13 +3766,35 @@ func _Trigger_OneofSizer(msg proto.Message) (n int) {
 
 // Ready when all subtriggers are ready.
 type Trigger_AfterAll struct {
-	Subtriggers []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	Subtriggers          []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *Trigger_AfterAll) Reset()         { *m = Trigger_AfterAll{} }
+func (m *Trigger_AfterAll) String() string { return proto.CompactTextString(m) }
+func (*Trigger_AfterAll) ProtoMessage()    {}
+func (*Trigger_AfterAll) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 0}
+}
+func (m *Trigger_AfterAll) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterAll.Unmarshal(m, b)
+}
+func (m *Trigger_AfterAll) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterAll.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterAll) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterAll.Merge(dst, src)
+}
+func (m *Trigger_AfterAll) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterAll.Size(m)
+}
+func (m *Trigger_AfterAll) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterAll.DiscardUnknown(m)
 }
 
-func (m *Trigger_AfterAll) Reset()                    { *m = Trigger_AfterAll{} }
-func (m *Trigger_AfterAll) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_AfterAll) ProtoMessage()               {}
-func (*Trigger_AfterAll) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 0} }
+var xxx_messageInfo_Trigger_AfterAll proto.InternalMessageInfo
 
 func (m *Trigger_AfterAll) GetSubtriggers() []*Trigger {
 	if m != nil {
@@ -2922,13 +3805,35 @@ func (m *Trigger_AfterAll) GetSubtriggers() []*Trigger {
 
 // Ready when any subtrigger is ready.
 type Trigger_AfterAny struct {
-	Subtriggers []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	Subtriggers          []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *Trigger_AfterAny) Reset()         { *m = Trigger_AfterAny{} }
+func (m *Trigger_AfterAny) String() string { return proto.CompactTextString(m) }
+func (*Trigger_AfterAny) ProtoMessage()    {}
+func (*Trigger_AfterAny) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 1}
+}
+func (m *Trigger_AfterAny) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterAny.Unmarshal(m, b)
+}
+func (m *Trigger_AfterAny) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterAny.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterAny) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterAny.Merge(dst, src)
+}
+func (m *Trigger_AfterAny) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterAny.Size(m)
+}
+func (m *Trigger_AfterAny) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterAny.DiscardUnknown(m)
 }
 
-func (m *Trigger_AfterAny) Reset()                    { *m = Trigger_AfterAny{} }
-func (m *Trigger_AfterAny) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_AfterAny) ProtoMessage()               {}
-func (*Trigger_AfterAny) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 1} }
+var xxx_messageInfo_Trigger_AfterAny proto.InternalMessageInfo
 
 func (m *Trigger_AfterAny) GetSubtriggers() []*Trigger {
 	if m != nil {
@@ -2940,13 +3845,35 @@ func (m *Trigger_AfterAny) GetSubtriggers() []*Trigger {
 // Starting with the first subtrigger, ready when the _current_ subtrigger
 // is ready. After output, advances the current trigger by one.
 type Trigger_AfterEach struct {
-	Subtriggers []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	Subtriggers          []*Trigger `protobuf:"bytes,1,rep,name=subtriggers" json:"subtriggers,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *Trigger_AfterEach) Reset()         { *m = Trigger_AfterEach{} }
+func (m *Trigger_AfterEach) String() string { return proto.CompactTextString(m) }
+func (*Trigger_AfterEach) ProtoMessage()    {}
+func (*Trigger_AfterEach) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 2}
+}
+func (m *Trigger_AfterEach) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterEach.Unmarshal(m, b)
+}
+func (m *Trigger_AfterEach) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterEach.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterEach) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterEach.Merge(dst, src)
+}
+func (m *Trigger_AfterEach) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterEach.Size(m)
+}
+func (m *Trigger_AfterEach) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterEach.DiscardUnknown(m)
 }
 
-func (m *Trigger_AfterEach) Reset()                    { *m = Trigger_AfterEach{} }
-func (m *Trigger_AfterEach) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_AfterEach) ProtoMessage()               {}
-func (*Trigger_AfterEach) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 2} }
+var xxx_messageInfo_Trigger_AfterEach proto.InternalMessageInfo
 
 func (m *Trigger_AfterEach) GetSubtriggers() []*Trigger {
 	if m != nil {
@@ -2964,13 +3891,35 @@ type Trigger_AfterEndOfWindow struct {
 	// (Optional) A trigger governing output prior to the end of the window.
 	EarlyFirings *Trigger `protobuf:"bytes,1,opt,name=early_firings,json=earlyFirings" json:"early_firings,omitempty"`
 	// (Optional) A trigger governing output after the end of the window.
-	LateFirings *Trigger `protobuf:"bytes,2,opt,name=late_firings,json=lateFirings" json:"late_firings,omitempty"`
+	LateFirings          *Trigger `protobuf:"bytes,2,opt,name=late_firings,json=lateFirings" json:"late_firings,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Trigger_AfterEndOfWindow) Reset()         { *m = Trigger_AfterEndOfWindow{} }
+func (m *Trigger_AfterEndOfWindow) String() string { return proto.CompactTextString(m) }
+func (*Trigger_AfterEndOfWindow) ProtoMessage()    {}
+func (*Trigger_AfterEndOfWindow) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 3}
+}
+func (m *Trigger_AfterEndOfWindow) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterEndOfWindow.Unmarshal(m, b)
+}
+func (m *Trigger_AfterEndOfWindow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterEndOfWindow.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterEndOfWindow) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterEndOfWindow.Merge(dst, src)
+}
+func (m *Trigger_AfterEndOfWindow) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterEndOfWindow.Size(m)
+}
+func (m *Trigger_AfterEndOfWindow) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterEndOfWindow.DiscardUnknown(m)
 }
 
-func (m *Trigger_AfterEndOfWindow) Reset()                    { *m = Trigger_AfterEndOfWindow{} }
-func (m *Trigger_AfterEndOfWindow) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_AfterEndOfWindow) ProtoMessage()               {}
-func (*Trigger_AfterEndOfWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 3} }
+var xxx_messageInfo_Trigger_AfterEndOfWindow proto.InternalMessageInfo
 
 func (m *Trigger_AfterEndOfWindow) GetEarlyFirings() *Trigger {
 	if m != nil {
@@ -2990,13 +3939,35 @@ func (m *Trigger_AfterEndOfWindow) GetLateFirings() *Trigger {
 type Trigger_AfterProcessingTime struct {
 	// (Required) The transforms to apply to an arriving element's timestamp,
 	// in order
-	TimestampTransforms []*TimestampTransform `protobuf:"bytes,1,rep,name=timestamp_transforms,json=timestampTransforms" json:"timestamp_transforms,omitempty"`
+	TimestampTransforms  []*TimestampTransform `protobuf:"bytes,1,rep,name=timestamp_transforms,json=timestampTransforms" json:"timestamp_transforms,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *Trigger_AfterProcessingTime) Reset()         { *m = Trigger_AfterProcessingTime{} }
+func (m *Trigger_AfterProcessingTime) String() string { return proto.CompactTextString(m) }
+func (*Trigger_AfterProcessingTime) ProtoMessage()    {}
+func (*Trigger_AfterProcessingTime) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 4}
+}
+func (m *Trigger_AfterProcessingTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterProcessingTime.Unmarshal(m, b)
+}
+func (m *Trigger_AfterProcessingTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterProcessingTime.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterProcessingTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterProcessingTime.Merge(dst, src)
+}
+func (m *Trigger_AfterProcessingTime) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterProcessingTime.Size(m)
+}
+func (m *Trigger_AfterProcessingTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterProcessingTime.DiscardUnknown(m)
 }
 
-func (m *Trigger_AfterProcessingTime) Reset()                    { *m = Trigger_AfterProcessingTime{} }
-func (m *Trigger_AfterProcessingTime) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_AfterProcessingTime) ProtoMessage()               {}
-func (*Trigger_AfterProcessingTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 4} }
+var xxx_messageInfo_Trigger_AfterProcessingTime proto.InternalMessageInfo
 
 func (m *Trigger_AfterProcessingTime) GetTimestampTransforms() []*TimestampTransform {
 	if m != nil {
@@ -3008,6 +3979,9 @@ func (m *Trigger_AfterProcessingTime) GetTimestampTransforms() []*TimestampTrans
 // Ready whenever upstream processing time has all caught up with
 // the arrival time of an input element
 type Trigger_AfterSynchronizedProcessingTime struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Trigger_AfterSynchronizedProcessingTime) Reset() {
@@ -3016,28 +3990,89 @@ func (m *Trigger_AfterSynchronizedProcessingTime) Reset() {
 func (m *Trigger_AfterSynchronizedProcessingTime) String() string { return proto.CompactTextString(m) }
 func (*Trigger_AfterSynchronizedProcessingTime) ProtoMessage()    {}
 func (*Trigger_AfterSynchronizedProcessingTime) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{32, 5}
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 5}
+}
+func (m *Trigger_AfterSynchronizedProcessingTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime.Unmarshal(m, b)
+}
+func (m *Trigger_AfterSynchronizedProcessingTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_AfterSynchronizedProcessingTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime.Merge(dst, src)
+}
+func (m *Trigger_AfterSynchronizedProcessingTime) XXX_Size() int {
+	return xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime.Size(m)
+}
+func (m *Trigger_AfterSynchronizedProcessingTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_Trigger_AfterSynchronizedProcessingTime proto.InternalMessageInfo
+
 // The default trigger. Equivalent to Repeat { AfterEndOfWindow } but
 // specially denoted to indicate the user did not alter the triggering.
 type Trigger_Default struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Trigger_Default) Reset()         { *m = Trigger_Default{} }
+func (m *Trigger_Default) String() string { return proto.CompactTextString(m) }
+func (*Trigger_Default) ProtoMessage()    {}
+func (*Trigger_Default) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 6}
+}
+func (m *Trigger_Default) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_Default.Unmarshal(m, b)
+}
+func (m *Trigger_Default) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_Default.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_Default) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_Default.Merge(dst, src)
+}
+func (m *Trigger_Default) XXX_Size() int {
+	return xxx_messageInfo_Trigger_Default.Size(m)
+}
+func (m *Trigger_Default) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_Default.DiscardUnknown(m)
 }
 
-func (m *Trigger_Default) Reset()                    { *m = Trigger_Default{} }
-func (m *Trigger_Default) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_Default) ProtoMessage()               {}
-func (*Trigger_Default) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 6} }
+var xxx_messageInfo_Trigger_Default proto.InternalMessageInfo
 
 // Ready whenever the requisite number of input elements have arrived
 type Trigger_ElementCount struct {
-	ElementCount int32 `protobuf:"varint,1,opt,name=element_count,json=elementCount" json:"element_count,omitempty"`
+	ElementCount         int32    `protobuf:"varint,1,opt,name=element_count,json=elementCount" json:"element_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Trigger_ElementCount) Reset()         { *m = Trigger_ElementCount{} }
+func (m *Trigger_ElementCount) String() string { return proto.CompactTextString(m) }
+func (*Trigger_ElementCount) ProtoMessage()    {}
+func (*Trigger_ElementCount) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 7}
+}
+func (m *Trigger_ElementCount) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_ElementCount.Unmarshal(m, b)
+}
+func (m *Trigger_ElementCount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_ElementCount.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_ElementCount) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_ElementCount.Merge(dst, src)
+}
+func (m *Trigger_ElementCount) XXX_Size() int {
+	return xxx_messageInfo_Trigger_ElementCount.Size(m)
+}
+func (m *Trigger_ElementCount) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_ElementCount.DiscardUnknown(m)
 }
 
-func (m *Trigger_ElementCount) Reset()                    { *m = Trigger_ElementCount{} }
-func (m *Trigger_ElementCount) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_ElementCount) ProtoMessage()               {}
-func (*Trigger_ElementCount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 7} }
+var xxx_messageInfo_Trigger_ElementCount proto.InternalMessageInfo
 
 func (m *Trigger_ElementCount) GetElementCount() int32 {
 	if m != nil {
@@ -3049,22 +4084,66 @@ func (m *Trigger_ElementCount) GetElementCount() int32 {
 // Never ready. There will only be an ON_TIME output and a final
 // output at window expiration.
 type Trigger_Never struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Trigger_Never) Reset()                    { *m = Trigger_Never{} }
-func (m *Trigger_Never) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_Never) ProtoMessage()               {}
-func (*Trigger_Never) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 8} }
+func (m *Trigger_Never) Reset()         { *m = Trigger_Never{} }
+func (m *Trigger_Never) String() string { return proto.CompactTextString(m) }
+func (*Trigger_Never) ProtoMessage()    {}
+func (*Trigger_Never) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 8}
+}
+func (m *Trigger_Never) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_Never.Unmarshal(m, b)
+}
+func (m *Trigger_Never) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_Never.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_Never) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_Never.Merge(dst, src)
+}
+func (m *Trigger_Never) XXX_Size() int {
+	return xxx_messageInfo_Trigger_Never.Size(m)
+}
+func (m *Trigger_Never) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_Never.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Trigger_Never proto.InternalMessageInfo
 
 // Always ready. This can also be expressed as ElementCount(1) but
 // is more explicit.
 type Trigger_Always struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Trigger_Always) Reset()                    { *m = Trigger_Always{} }
-func (m *Trigger_Always) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_Always) ProtoMessage()               {}
-func (*Trigger_Always) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 9} }
+func (m *Trigger_Always) Reset()         { *m = Trigger_Always{} }
+func (m *Trigger_Always) String() string { return proto.CompactTextString(m) }
+func (*Trigger_Always) ProtoMessage()    {}
+func (*Trigger_Always) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 9}
+}
+func (m *Trigger_Always) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_Always.Unmarshal(m, b)
+}
+func (m *Trigger_Always) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_Always.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_Always) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_Always.Merge(dst, src)
+}
+func (m *Trigger_Always) XXX_Size() int {
+	return xxx_messageInfo_Trigger_Always.Size(m)
+}
+func (m *Trigger_Always) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_Always.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Trigger_Always proto.InternalMessageInfo
 
 // Ready whenever either of its subtriggers are ready, but finishes output
 // when the finally subtrigger fires.
@@ -3072,13 +4151,35 @@ type Trigger_OrFinally struct {
 	// (Required) Trigger governing main output; may fire repeatedly.
 	Main *Trigger `protobuf:"bytes,1,opt,name=main" json:"main,omitempty"`
 	// (Required) Trigger governing termination of output.
-	Finally *Trigger `protobuf:"bytes,2,opt,name=finally" json:"finally,omitempty"`
+	Finally              *Trigger `protobuf:"bytes,2,opt,name=finally" json:"finally,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Trigger_OrFinally) Reset()         { *m = Trigger_OrFinally{} }
+func (m *Trigger_OrFinally) String() string { return proto.CompactTextString(m) }
+func (*Trigger_OrFinally) ProtoMessage()    {}
+func (*Trigger_OrFinally) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 10}
+}
+func (m *Trigger_OrFinally) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_OrFinally.Unmarshal(m, b)
+}
+func (m *Trigger_OrFinally) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_OrFinally.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_OrFinally) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_OrFinally.Merge(dst, src)
+}
+func (m *Trigger_OrFinally) XXX_Size() int {
+	return xxx_messageInfo_Trigger_OrFinally.Size(m)
+}
+func (m *Trigger_OrFinally) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_OrFinally.DiscardUnknown(m)
 }
 
-func (m *Trigger_OrFinally) Reset()                    { *m = Trigger_OrFinally{} }
-func (m *Trigger_OrFinally) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_OrFinally) ProtoMessage()               {}
-func (*Trigger_OrFinally) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 10} }
+var xxx_messageInfo_Trigger_OrFinally proto.InternalMessageInfo
 
 func (m *Trigger_OrFinally) GetMain() *Trigger {
 	if m != nil {
@@ -3098,13 +4199,35 @@ func (m *Trigger_OrFinally) GetFinally() *Trigger {
 // completes.
 type Trigger_Repeat struct {
 	// (Require) Trigger that is run repeatedly.
-	Subtrigger *Trigger `protobuf:"bytes,1,opt,name=subtrigger" json:"subtrigger,omitempty"`
+	Subtrigger           *Trigger `protobuf:"bytes,1,opt,name=subtrigger" json:"subtrigger,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *Trigger_Repeat) Reset()                    { *m = Trigger_Repeat{} }
-func (m *Trigger_Repeat) String() string            { return proto.CompactTextString(m) }
-func (*Trigger_Repeat) ProtoMessage()               {}
-func (*Trigger_Repeat) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 11} }
+func (m *Trigger_Repeat) Reset()         { *m = Trigger_Repeat{} }
+func (m *Trigger_Repeat) String() string { return proto.CompactTextString(m) }
+func (*Trigger_Repeat) ProtoMessage()    {}
+func (*Trigger_Repeat) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{32, 11}
+}
+func (m *Trigger_Repeat) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Trigger_Repeat.Unmarshal(m, b)
+}
+func (m *Trigger_Repeat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Trigger_Repeat.Marshal(b, m, deterministic)
+}
+func (dst *Trigger_Repeat) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Trigger_Repeat.Merge(dst, src)
+}
+func (m *Trigger_Repeat) XXX_Size() int {
+	return xxx_messageInfo_Trigger_Repeat.Size(m)
+}
+func (m *Trigger_Repeat) XXX_DiscardUnknown() {
+	xxx_messageInfo_Trigger_Repeat.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Trigger_Repeat proto.InternalMessageInfo
 
 func (m *Trigger_Repeat) GetSubtrigger() *Trigger {
 	if m != nil {
@@ -3121,15 +4244,39 @@ type TimestampTransform struct {
 	// Types that are valid to be assigned to TimestampTransform:
 	//	*TimestampTransform_Delay_
 	//	*TimestampTransform_AlignTo_
-	TimestampTransform isTimestampTransform_TimestampTransform `protobuf_oneof:"timestamp_transform"`
+	TimestampTransform   isTimestampTransform_TimestampTransform `protobuf_oneof:"timestamp_transform"`
+	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
+	XXX_unrecognized     []byte                                  `json:"-"`
+	XXX_sizecache        int32                                   `json:"-"`
+}
+
+func (m *TimestampTransform) Reset()         { *m = TimestampTransform{} }
+func (m *TimestampTransform) String() string { return proto.CompactTextString(m) }
+func (*TimestampTransform) ProtoMessage()    {}
+func (*TimestampTransform) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{33}
+}
+func (m *TimestampTransform) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimestampTransform.Unmarshal(m, b)
+}
+func (m *TimestampTransform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimestampTransform.Marshal(b, m, deterministic)
+}
+func (dst *TimestampTransform) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimestampTransform.Merge(dst, src)
+}
+func (m *TimestampTransform) XXX_Size() int {
+	return xxx_messageInfo_TimestampTransform.Size(m)
+}
+func (m *TimestampTransform) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimestampTransform.DiscardUnknown(m)
 }
 
-func (m *TimestampTransform) Reset()                    { *m = TimestampTransform{} }
-func (m *TimestampTransform) String() string            { return proto.CompactTextString(m) }
-func (*TimestampTransform) ProtoMessage()               {}
-func (*TimestampTransform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
+var xxx_messageInfo_TimestampTransform proto.InternalMessageInfo
 
-type isTimestampTransform_TimestampTransform interface{ isTimestampTransform_TimestampTransform() }
+type isTimestampTransform_TimestampTransform interface {
+	isTimestampTransform_TimestampTransform()
+}
 
 type TimestampTransform_Delay_ struct {
 	Delay *TimestampTransform_Delay `protobuf:"bytes,1,opt,name=delay,oneof"`
@@ -3221,12 +4368,12 @@ func _TimestampTransform_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.TimestampTransform.(type) {
 	case *TimestampTransform_Delay_:
 		s := proto.Size(x.Delay)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *TimestampTransform_AlignTo_:
 		s := proto.Size(x.AlignTo)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -3238,13 +4385,35 @@ func _TimestampTransform_OneofSizer(msg proto.Message) (n int) {
 
 type TimestampTransform_Delay struct {
 	// (Required) The delay, in milliseconds.
-	DelayMillis int64 `protobuf:"varint,1,opt,name=delay_millis,json=delayMillis" json:"delay_millis,omitempty"`
+	DelayMillis          int64    `protobuf:"varint,1,opt,name=delay_millis,json=delayMillis" json:"delay_millis,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TimestampTransform_Delay) Reset()         { *m = TimestampTransform_Delay{} }
+func (m *TimestampTransform_Delay) String() string { return proto.CompactTextString(m) }
+func (*TimestampTransform_Delay) ProtoMessage()    {}
+func (*TimestampTransform_Delay) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{33, 0}
+}
+func (m *TimestampTransform_Delay) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimestampTransform_Delay.Unmarshal(m, b)
+}
+func (m *TimestampTransform_Delay) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimestampTransform_Delay.Marshal(b, m, deterministic)
+}
+func (dst *TimestampTransform_Delay) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimestampTransform_Delay.Merge(dst, src)
+}
+func (m *TimestampTransform_Delay) XXX_Size() int {
+	return xxx_messageInfo_TimestampTransform_Delay.Size(m)
+}
+func (m *TimestampTransform_Delay) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimestampTransform_Delay.DiscardUnknown(m)
 }
 
-func (m *TimestampTransform_Delay) Reset()                    { *m = TimestampTransform_Delay{} }
-func (m *TimestampTransform_Delay) String() string            { return proto.CompactTextString(m) }
-func (*TimestampTransform_Delay) ProtoMessage()               {}
-func (*TimestampTransform_Delay) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33, 0} }
+var xxx_messageInfo_TimestampTransform_Delay proto.InternalMessageInfo
 
 func (m *TimestampTransform_Delay) GetDelayMillis() int64 {
 	if m != nil {
@@ -3259,13 +4428,35 @@ type TimestampTransform_AlignTo struct {
 	Period int64 `protobuf:"varint,3,opt,name=period" json:"period,omitempty"`
 	// (Required) An offset from 0 for the quantization specified by
 	// alignment_size, in milliseconds
-	Offset int64 `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"`
+	Offset               int64    `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TimestampTransform_AlignTo) Reset()         { *m = TimestampTransform_AlignTo{} }
+func (m *TimestampTransform_AlignTo) String() string { return proto.CompactTextString(m) }
+func (*TimestampTransform_AlignTo) ProtoMessage()    {}
+func (*TimestampTransform_AlignTo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{33, 1}
+}
+func (m *TimestampTransform_AlignTo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimestampTransform_AlignTo.Unmarshal(m, b)
+}
+func (m *TimestampTransform_AlignTo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimestampTransform_AlignTo.Marshal(b, m, deterministic)
+}
+func (dst *TimestampTransform_AlignTo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimestampTransform_AlignTo.Merge(dst, src)
+}
+func (m *TimestampTransform_AlignTo) XXX_Size() int {
+	return xxx_messageInfo_TimestampTransform_AlignTo.Size(m)
+}
+func (m *TimestampTransform_AlignTo) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimestampTransform_AlignTo.DiscardUnknown(m)
 }
 
-func (m *TimestampTransform_AlignTo) Reset()                    { *m = TimestampTransform_AlignTo{} }
-func (m *TimestampTransform_AlignTo) String() string            { return proto.CompactTextString(m) }
-func (*TimestampTransform_AlignTo) ProtoMessage()               {}
-func (*TimestampTransform_AlignTo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33, 1} }
+var xxx_messageInfo_TimestampTransform_AlignTo proto.InternalMessageInfo
 
 func (m *TimestampTransform_AlignTo) GetPeriod() int64 {
 	if m != nil {
@@ -3305,13 +4496,35 @@ type SideInput struct {
 	// For example, when the main input is in fixed windows of one hour, this
 	// can specify that the side input should be accessed according to the day
 	// in which that hour falls.
-	WindowMappingFn *SdkFunctionSpec `protobuf:"bytes,3,opt,name=window_mapping_fn,json=windowMappingFn" json:"window_mapping_fn,omitempty"`
+	WindowMappingFn      *SdkFunctionSpec `protobuf:"bytes,3,opt,name=window_mapping_fn,json=windowMappingFn" json:"window_mapping_fn,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
 }
 
-func (m *SideInput) Reset()                    { *m = SideInput{} }
-func (m *SideInput) String() string            { return proto.CompactTextString(m) }
-func (*SideInput) ProtoMessage()               {}
-func (*SideInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
+func (m *SideInput) Reset()         { *m = SideInput{} }
+func (m *SideInput) String() string { return proto.CompactTextString(m) }
+func (*SideInput) ProtoMessage()    {}
+func (*SideInput) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{34}
+}
+func (m *SideInput) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SideInput.Unmarshal(m, b)
+}
+func (m *SideInput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SideInput.Marshal(b, m, deterministic)
+}
+func (dst *SideInput) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SideInput.Merge(dst, src)
+}
+func (m *SideInput) XXX_Size() int {
+	return xxx_messageInfo_SideInput.Size(m)
+}
+func (m *SideInput) XXX_DiscardUnknown() {
+	xxx_messageInfo_SideInput.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SideInput proto.InternalMessageInfo
 
 func (m *SideInput) GetAccessPattern() *FunctionSpec {
 	if m != nil {
@@ -3342,13 +4555,35 @@ type Environment struct {
 	//
 	// TODO: reconcile with Fn API's DockerContainer structure by
 	// adding adequate metadata to know how to interpret the container
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url                  string   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Environment) Reset()         { *m = Environment{} }
+func (m *Environment) String() string { return proto.CompactTextString(m) }
+func (*Environment) ProtoMessage()    {}
+func (*Environment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{35}
+}
+func (m *Environment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Environment.Unmarshal(m, b)
+}
+func (m *Environment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Environment.Marshal(b, m, deterministic)
+}
+func (dst *Environment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Environment.Merge(dst, src)
+}
+func (m *Environment) XXX_Size() int {
+	return xxx_messageInfo_Environment.Size(m)
+}
+func (m *Environment) XXX_DiscardUnknown() {
+	xxx_messageInfo_Environment.DiscardUnknown(m)
 }
 
-func (m *Environment) Reset()                    { *m = Environment{} }
-func (m *Environment) String() string            { return proto.CompactTextString(m) }
-func (*Environment) ProtoMessage()               {}
-func (*Environment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
+var xxx_messageInfo_Environment proto.InternalMessageInfo
 
 func (m *Environment) GetUrl() string {
 	if m != nil {
@@ -3364,13 +4599,35 @@ type SdkFunctionSpec struct {
 	Spec *FunctionSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"`
 	// (Required) Reference to an execution environment capable of
 	// invoking this function.
-	EnvironmentId string `protobuf:"bytes,2,opt,name=environment_id,json=environmentId" json:"environment_id,omitempty"`
+	EnvironmentId        string   `protobuf:"bytes,2,opt,name=environment_id,json=environmentId" json:"environment_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SdkFunctionSpec) Reset()         { *m = SdkFunctionSpec{} }
+func (m *SdkFunctionSpec) String() string { return proto.CompactTextString(m) }
+func (*SdkFunctionSpec) ProtoMessage()    {}
+func (*SdkFunctionSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{36}
+}
+func (m *SdkFunctionSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SdkFunctionSpec.Unmarshal(m, b)
+}
+func (m *SdkFunctionSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SdkFunctionSpec.Marshal(b, m, deterministic)
+}
+func (dst *SdkFunctionSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SdkFunctionSpec.Merge(dst, src)
+}
+func (m *SdkFunctionSpec) XXX_Size() int {
+	return xxx_messageInfo_SdkFunctionSpec.Size(m)
+}
+func (m *SdkFunctionSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_SdkFunctionSpec.DiscardUnknown(m)
 }
 
-func (m *SdkFunctionSpec) Reset()                    { *m = SdkFunctionSpec{} }
-func (m *SdkFunctionSpec) String() string            { return proto.CompactTextString(m) }
-func (*SdkFunctionSpec) ProtoMessage()               {}
-func (*SdkFunctionSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
+var xxx_messageInfo_SdkFunctionSpec proto.InternalMessageInfo
 
 func (m *SdkFunctionSpec) GetSpec() *FunctionSpec {
 	if m != nil {
@@ -3421,13 +4678,35 @@ type FunctionSpec struct {
 	Urn string `protobuf:"bytes,1,opt,name=urn" json:"urn,omitempty"`
 	// (Optional) The data specifying any parameters to the URN. If
 	// the URN does not require any arguments, this may be omitted.
-	Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
+	Payload              []byte   `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FunctionSpec) Reset()         { *m = FunctionSpec{} }
+func (m *FunctionSpec) String() string { return proto.CompactTextString(m) }
+func (*FunctionSpec) ProtoMessage()    {}
+func (*FunctionSpec) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{37}
+}
+func (m *FunctionSpec) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FunctionSpec.Unmarshal(m, b)
+}
+func (m *FunctionSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FunctionSpec.Marshal(b, m, deterministic)
+}
+func (dst *FunctionSpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FunctionSpec.Merge(dst, src)
+}
+func (m *FunctionSpec) XXX_Size() int {
+	return xxx_messageInfo_FunctionSpec.Size(m)
+}
+func (m *FunctionSpec) XXX_DiscardUnknown() {
+	xxx_messageInfo_FunctionSpec.DiscardUnknown(m)
 }
 
-func (m *FunctionSpec) Reset()                    { *m = FunctionSpec{} }
-func (m *FunctionSpec) String() string            { return proto.CompactTextString(m) }
-func (*FunctionSpec) ProtoMessage()               {}
-func (*FunctionSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+var xxx_messageInfo_FunctionSpec proto.InternalMessageInfo
 
 func (m *FunctionSpec) GetUrn() string {
 	if m != nil {
@@ -3446,13 +4725,35 @@ func (m *FunctionSpec) GetPayload() []byte {
 // TODO: transfer javadoc here
 type DisplayData struct {
 	// (Required) The list of display data.
-	Items []*DisplayData_Item `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
+	Items                []*DisplayData_Item `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *DisplayData) Reset()         { *m = DisplayData{} }
+func (m *DisplayData) String() string { return proto.CompactTextString(m) }
+func (*DisplayData) ProtoMessage()    {}
+func (*DisplayData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{38}
+}
+func (m *DisplayData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DisplayData.Unmarshal(m, b)
+}
+func (m *DisplayData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DisplayData.Marshal(b, m, deterministic)
+}
+func (dst *DisplayData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DisplayData.Merge(dst, src)
+}
+func (m *DisplayData) XXX_Size() int {
+	return xxx_messageInfo_DisplayData.Size(m)
+}
+func (m *DisplayData) XXX_DiscardUnknown() {
+	xxx_messageInfo_DisplayData.DiscardUnknown(m)
 }
 
-func (m *DisplayData) Reset()                    { *m = DisplayData{} }
-func (m *DisplayData) String() string            { return proto.CompactTextString(m) }
-func (*DisplayData) ProtoMessage()               {}
-func (*DisplayData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
+var xxx_messageInfo_DisplayData proto.InternalMessageInfo
 
 func (m *DisplayData) GetItems() []*DisplayData_Item {
 	if m != nil {
@@ -3467,14 +4768,36 @@ type DisplayData_Identifier struct {
 	TransformId string `protobuf:"bytes,1,opt,name=transform_id,json=transformId" json:"transform_id,omitempty"`
 	// (Optional) The URN indicating the type of the originating transform,
 	// if there is one.
-	TransformUrn string `protobuf:"bytes,2,opt,name=transform_urn,json=transformUrn" json:"transform_urn,omitempty"`
-	Key          string `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"`
+	TransformUrn         string   `protobuf:"bytes,2,opt,name=transform_urn,json=transformUrn" json:"transform_urn,omitempty"`
+	Key                  string   `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DisplayData_Identifier) Reset()         { *m = DisplayData_Identifier{} }
+func (m *DisplayData_Identifier) String() string { return proto.CompactTextString(m) }
+func (*DisplayData_Identifier) ProtoMessage()    {}
+func (*DisplayData_Identifier) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{38, 0}
+}
+func (m *DisplayData_Identifier) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DisplayData_Identifier.Unmarshal(m, b)
+}
+func (m *DisplayData_Identifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DisplayData_Identifier.Marshal(b, m, deterministic)
+}
+func (dst *DisplayData_Identifier) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DisplayData_Identifier.Merge(dst, src)
+}
+func (m *DisplayData_Identifier) XXX_Size() int {
+	return xxx_messageInfo_DisplayData_Identifier.Size(m)
+}
+func (m *DisplayData_Identifier) XXX_DiscardUnknown() {
+	xxx_messageInfo_DisplayData_Identifier.DiscardUnknown(m)
 }
 
-func (m *DisplayData_Identifier) Reset()                    { *m = DisplayData_Identifier{} }
-func (m *DisplayData_Identifier) String() string            { return proto.CompactTextString(m) }
-func (*DisplayData_Identifier) ProtoMessage()               {}
-func (*DisplayData_Identifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 0} }
+var xxx_messageInfo_DisplayData_Identifier proto.InternalMessageInfo
 
 func (m *DisplayData_Identifier) GetTransformId() string {
 	if m != nil {
@@ -3504,19 +4827,41 @@ type DisplayData_Item struct {
 	// (Required)
 	Type DisplayData_Type_Enum `protobuf:"varint,2,opt,name=type,enum=org.apache.beam.model.pipeline.v1.DisplayData_Type_Enum" json:"type,omitempty"`
 	// (Required)
-	Value *google_protobuf.Any `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
+	Value *any.Any `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
 	// (Optional)
-	ShortValue *google_protobuf.Any `protobuf:"bytes,4,opt,name=short_value,json=shortValue" json:"short_value,omitempty"`
+	ShortValue *any.Any `protobuf:"bytes,4,opt,name=short_value,json=shortValue" json:"short_value,omitempty"`
 	// (Optional)
 	Label string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"`
 	// (Optional)
-	LinkUrl string `protobuf:"bytes,6,opt,name=link_url,json=linkUrl" json:"link_url,omitempty"`
+	LinkUrl              string   `protobuf:"bytes,6,opt,name=link_url,json=linkUrl" json:"link_url,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DisplayData_Item) Reset()         { *m = DisplayData_Item{} }
+func (m *DisplayData_Item) String() string { return proto.CompactTextString(m) }
+func (*DisplayData_Item) ProtoMessage()    {}
+func (*DisplayData_Item) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{38, 1}
+}
+func (m *DisplayData_Item) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DisplayData_Item.Unmarshal(m, b)
+}
+func (m *DisplayData_Item) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DisplayData_Item.Marshal(b, m, deterministic)
+}
+func (dst *DisplayData_Item) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DisplayData_Item.Merge(dst, src)
+}
+func (m *DisplayData_Item) XXX_Size() int {
+	return xxx_messageInfo_DisplayData_Item.Size(m)
+}
+func (m *DisplayData_Item) XXX_DiscardUnknown() {
+	xxx_messageInfo_DisplayData_Item.DiscardUnknown(m)
 }
 
-func (m *DisplayData_Item) Reset()                    { *m = DisplayData_Item{} }
-func (m *DisplayData_Item) String() string            { return proto.CompactTextString(m) }
-func (*DisplayData_Item) ProtoMessage()               {}
-func (*DisplayData_Item) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 1} }
+var xxx_messageInfo_DisplayData_Item proto.InternalMessageInfo
 
 func (m *DisplayData_Item) GetId() *DisplayData_Identifier {
 	if m != nil {
@@ -3532,14 +4877,14 @@ func (m *DisplayData_Item) GetType() DisplayData_Type_Enum {
 	return DisplayData_Type_UNSPECIFIED
 }
 
-func (m *DisplayData_Item) GetValue() *google_protobuf.Any {
+func (m *DisplayData_Item) GetValue() *any.Any {
 	if m != nil {
 		return m.Value
 	}
 	return nil
 }
 
-func (m *DisplayData_Item) GetShortValue() *google_protobuf.Any {
+func (m *DisplayData_Item) GetShortValue() *any.Any {
 	if m != nil {
 		return m.ShortValue
 	}
@@ -3561,15 +4906,37 @@ func (m *DisplayData_Item) GetLinkUrl() string {
 }
 
 type DisplayData_Type struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DisplayData_Type) Reset()         { *m = DisplayData_Type{} }
+func (m *DisplayData_Type) String() string { return proto.CompactTextString(m) }
+func (*DisplayData_Type) ProtoMessage()    {}
+func (*DisplayData_Type) Descriptor() ([]byte, []int) {
+	return fileDescriptor_beam_runner_api_da90710f86618305, []int{38, 2}
+}
+func (m *DisplayData_Type) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DisplayData_Type.Unmarshal(m, b)
+}
+func (m *DisplayData_Type) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DisplayData_Type.Marshal(b, m, deterministic)
+}
+func (dst *DisplayData_Type) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DisplayData_Type.Merge(dst, src)
+}
+func (m *DisplayData_Type) XXX_Size() int {
+	return xxx_messageInfo_DisplayData_Type.Size(m)
+}
+func (m *DisplayData_Type) XXX_DiscardUnknown() {
+	xxx_messageInfo_DisplayData_Type.DiscardUnknown(m)
 }
 
-func (m *DisplayData_Type) Reset()                    { *m = DisplayData_Type{} }
-func (m *DisplayData_Type) String() string            { return proto.CompactTextString(m) }
-func (*DisplayData_Type) ProtoMessage()               {}
-func (*DisplayData_Type) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 2} }
+var xxx_messageInfo_DisplayData_Type proto.InternalMessageInfo
 
 var E_BeamUrn = &proto.ExtensionDesc{
-	ExtendedType:  (*google_protobuf1.EnumValueOptions)(nil),
+	ExtendedType:  (*descriptor.EnumValueOptions)(nil),
 	ExtensionType: (*string)(nil),
 	Field:         185324356,
 	Name:          "org.apache.beam.model.pipeline.v1.beam_urn",
@@ -3579,15 +4946,25 @@ var E_BeamUrn = &proto.ExtensionDesc{
 
 func init() {
 	proto.RegisterType((*Components)(nil), "org.apache.beam.model.pipeline.v1.Components")
+	proto.RegisterMapType((map[string]*Coder)(nil), "org.apache.beam.model.pipeline.v1.Components.CodersEntry")
+	proto.RegisterMapType((map[string]*Environment)(nil), "org.apache.beam.model.pipeline.v1.Components.EnvironmentsEntry")
+	proto.RegisterMapType((map[string]*PCollection)(nil), "org.apache.beam.model.pipeline.v1.Components.PcollectionsEntry")
+	proto.RegisterMapType((map[string]*PTransform)(nil), "org.apache.beam.model.pipeline.v1.Components.TransformsEntry")
+	proto.RegisterMapType((map[string]*WindowingStrategy)(nil), "org.apache.beam.model.pipeline.v1.Components.WindowingStrategiesEntry")
 	proto.RegisterType((*MessageWithComponents)(nil), "org.apache.beam.model.pipeline.v1.MessageWithComponents")
 	proto.RegisterType((*Pipeline)(nil), "org.apache.beam.model.pipeline.v1.Pipeline")
 	proto.RegisterType((*PTransform)(nil), "org.apache.beam.model.pipeline.v1.PTransform")
+	proto.RegisterMapType((map[string]string)(nil), "org.apache.beam.model.pipeline.v1.PTransform.InputsEntry")
+	proto.RegisterMapType((map[string]string)(nil), "org.apache.beam.model.pipeline.v1.PTransform.OutputsEntry")
 	proto.RegisterType((*StandardPTransforms)(nil), "org.apache.beam.model.pipeline.v1.StandardPTransforms")
 	proto.RegisterType((*StandardSideInputTypes)(nil), "org.apache.beam.model.pipeline.v1.StandardSideInputTypes")
 	proto.RegisterType((*PCollection)(nil), "org.apache.beam.model.pipeline.v1.PCollection")
 	proto.RegisterType((*ExecutableStagePayload)(nil), "org.apache.beam.model.pipeline.v1.ExecutableStagePayload")
 	proto.RegisterType((*ExecutableStagePayload_SideInputId)(nil), "org.apache.beam.model.pipeline.v1.ExecutableStagePayload.SideInputId")
 	proto.RegisterType((*ParDoPayload)(nil), "org.apache.beam.model.pipeline.v1.ParDoPayload")
+	proto.RegisterMapType((map[string]*SideInput)(nil), "org.apache.beam.model.pipeline.v1.ParDoPayload.SideInputsEntry")
+	proto.RegisterMapType((map[string]*StateSpec)(nil), "org.apache.beam.model.pipeline.v1.ParDoPayload.StateSpecsEntry")
+	proto.RegisterMapType((map[string]*TimerSpec)(nil), "org.apache.beam.model.pipeline.v1.ParDoPayload.TimerSpecsEntry")
 	proto.RegisterType((*Parameter)(nil), "org.apache.beam.model.pipeline.v1.Parameter")
 	proto.RegisterType((*Parameter_Type)(nil), "org.apache.beam.model.pipeline.v1.Parameter.Type")
 	proto.RegisterType((*StateSpec)(nil), "org.apache.beam.model.pipeline.v1.StateSpec")
@@ -3608,6 +4985,7 @@ func init() {
 	proto.RegisterType((*TestStreamPayload_Event_AddElements)(nil), "org.apache.beam.model.pipeline.v1.TestStreamPayload.Event.AddElements")
 	proto.RegisterType((*TestStreamPayload_TimestampedElement)(nil), "org.apache.beam.model.pipeline.v1.TestStreamPayload.TimestampedElement")
 	proto.RegisterType((*WriteFilesPayload)(nil), "org.apache.beam.model.pipeline.v1.WriteFilesPayload")
+	proto.RegisterMapType((map[string]*SideInput)(nil), "org.apache.beam.model.pipeline.v1.WriteFilesPayload.SideInputsEntry")
 	proto.RegisterType((*Coder)(nil), "org.apache.beam.model.pipeline.v1.Coder")
 	proto.RegisterType((*StandardCoders)(nil), "org.apache.beam.model.pipeline.v1.StandardCoders")
 	proto.RegisterType((*WindowingStrategy)(nil), "org.apache.beam.model.pipeline.v1.WindowingStrategy")
@@ -3660,285 +5038,291 @@ func init() {
 	proto.RegisterExtension(E_BeamUrn)
 }
 
-func init() { proto.RegisterFile("beam_runner_api.proto", fileDescriptor0) }
+func init() {
+	proto.RegisterFile("beam_runner_api.proto", fileDescriptor_beam_runner_api_da90710f86618305)
+}
 
-var fileDescriptor0 = []byte{
-	// 4432 bytes of a gzipped FileDescriptorProto
+var fileDescriptor_beam_runner_api_da90710f86618305 = []byte{
+	// 4490 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5b, 0xcd, 0x6f, 0xe3, 0x58,
-	0x72, 0xd7, 0xb7, 0xa5, 0x92, 0x2c, 0xd3, 0xcf, 0xdd, 0xbd, 0x6e, 0x66, 0x3e, 0xba, 0x39, 0x93,
-	0x99, 0xde, 0xd9, 0x1e, 0xf5, 0xb4, 0x7b, 0x3e, 0x3d, 0xbb, 0x33, 0x2b, 0x5b, 0x94, 0xc5, 0x6e,
-	0x7d, 0x0d, 0x25, 0xdb, 0xd3, 0xb3, 0x9b, 0xe1, 0xd0, 0xe2, 0x93, 0x4c, 0x98, 0x22, 0x15, 0x92,
-	0xb2, 0x47, 0x41, 0x16, 0x0b, 0xe4, 0x10, 0x04, 0xc8, 0x25, 0x39, 0xe4, 0xb0, 0xd7, 0x0d, 0x90,
-	0x4b, 0x02, 0x04, 0xc9, 0x06, 0x01, 0x02, 0x04, 0x09, 0xb0, 0xc9, 0x7f, 0x90, 0x5b, 0xce, 0xf9,
-	0x07, 0x16, 0x41, 0x10, 0x20, 0x97, 0x04, 0xef, 0x83, 0x14, 0x25, 0xd9, 0x3d, 0x92, 0xdd, 0xc8,
-	0x4d, 0x2c, 0xbe, 0xfa, 0x55, 0xb1, 0x5e, 0xbd, 0x7a, 0x55, 0xf5, 0x9e, 0xe0, 0xf6, 0x09, 0xd6,
-	0x87, 0x9a, 0x3b, 0xb6, 0x6d, 0xec, 0x6a, 0xfa, 0xc8, 0x2c, 0x8d, 0x5c, 0xc7, 0x77, 0xd0, 0x7d,
-	0xc7, 0x1d, 0x94, 0xf4, 0x91, 0xde, 0x3b, 0xc5, 0x25, 0x32, 0xa2, 0x34, 0x74, 0x0c, 0x6c, 0x95,
-	0x46, 0xe6, 0x08, 0x5b, 0xa6, 0x8d, 0x4b, 0xe7, 0x8f, 0xc5, 0xbb, 0x03, 0xc7, 0x19, 0x58, 0xf8,
-	0x11, 0x65, 0x38, 0x19, 0xf7, 0x1f, 0xe9, 0xf6, 0x84, 0x71, 0x8b, 0xf7, 0xe6, 0x5f, 0x19, 0xd8,
-	0xeb, 0xb9, 0xe6, 0xc8, 0x77, 0x5c, 0x36, 0x42, 0xfa, 0xfb, 0x2c, 0xc0, 0xbe, 0x33, 0x1c, 0x39,
-	0x36, 0xb6, 0x7d, 0x0f, 0xfd, 0x0e, 0x80, 0xef, 0xea, 0xb6, 0xd7, 0x77, 0xdc, 0xa1, 0xb7, 0x1d,
-	0xbf, 0x97, 0x7c, 0x90, 0xdf, 0xf9, 0x51, 0xe9, 0x3b, 0x75, 0x28, 0x4d, 0x21, 0x4a, 0xdd, 0x90,
-	0x5f, 0xb6, 0x7d, 0x77, 0xa2, 0x46, 0x00, 0x51, 0x0f, 0x0a, 0xa3, 0x9e, 0x63, 0x59, 0xb8, 0xe7,
-	0x9b, 0x8e, 0xed, 0x6d, 0x27, 0xa8, 0x80, 0xcf, 0x57, 0x13, 0xd0, 0x8e, 0x20, 0x30, 0x11, 0x33,
-	0xa0, 0x68, 0x02, 0xb7, 0x2e, 0x4c, 0xdb, 0x70, 0x2e, 0x4c, 0x7b, 0xa0, 0x79, 0xbe, 0xab, 0xfb,
-	0x78, 0x60, 0x62, 0x6f, 0x3b, 0x49, 0x85, 0x55, 0x57, 0x13, 0x76, 0x1c, 0x20, 0x75, 0x42, 0x20,
-	0x26, 0x73, 0xeb, 0x62, 0xf1, 0x0d, 0xfa, 0x02, 0x32, 0x3d, 0xc7, 0xc0, 0xae, 0xb7, 0x9d, 0xa2,
-	0xc2, 0x3e, 0x59, 0x4d, 0xd8, 0x3e, 0xe5, 0x65, 0xf8, 0x1c, 0x88, 0x98, 0x0c, 0xdb, 0xe7, 0xa6,
-	0xeb, 0xd8, 0x43, 0x32, 0x66, 0x3b, 0x7d, 0x1d, 0x93, 0xc9, 0x11, 0x04, 0x6e, 0xb2, 0x28, 0xa8,
-	0x68, 0xc1, 0xc6, 0xdc, 0xb4, 0x21, 0x01, 0x92, 0x67, 0x78, 0xb2, 0x1d, 0xbf, 0x17, 0x7f, 0x90,
-	0x53, 0xc9, 0x4f, 0xb4, 0x0f, 0xe9, 0x73, 0xdd, 0x1a, 0xe3, 0xed, 0xc4, 0xbd, 0xf8, 0x83, 0xfc,
-	0xce, 0xbb, 0x4b, 0xa8, 0xd0, 0x0e, 0x51, 0x55, 0xc6, 0xbb, 0x9b, 0xf8, 0x38, 0x2e, 0x3a, 0xb0,
-	0xb9, 0x30, 0x87, 0x97, 0xc8, 0xab, 0xcc, 0xca, 0x2b, 0x2d, 0x23, 0x6f, 0x3f, 0x84, 0x8d, 0x0a,
-	0xfc, 0x7d, 0xd8, 0xbe, 0x6a, 0x1e, 0x2f, 0x91, 0xfb, 0x74, 0x56, 0xee, 0xfb, 0x4b, 0xc8, 0x9d,
-	0x47, 0x9f, 0x44, 0xa5, 0xf7, 0x20, 0x1f, 0x99, 0xd8, 0x4b, 0x04, 0x7e, 0x36, 0x2b, 0xf0, 0xc1,
-	0x52, 0x73, 0x6b, 0x60, 0x77, 0xce, 0xa6, 0x0b, 0x93, 0xfc, 0x72, 0x6c, 0x1a, 0x81, 0x8d, 0x08,
-	0x94, 0xfe, 0x21, 0x0b, 0xb7, 0x1b, 0xd8, 0xf3, 0xf4, 0x01, 0x3e, 0x36, 0xfd, 0xd3, 0x48, 0x0c,
-	0x69, 0x00, 0xf4, 0xc2, 0x27, 0x2a, 0x7c, 0x39, 0x67, 0x99, 0x42, 0xa8, 0x11, 0x00, 0xf4, 0x63,
-	0x48, 0xd3, 0xa5, 0xb0, 0xaa, 0x75, 0x6a, 0x31, 0x95, 0x31, 0xa2, 0x9f, 0xc2, 0x46, 0xcf, 0x19,
-	0x9e, 0x98, 0x36, 0xd6, 0x46, 0xfa, 0xc4, 0x72, 0x74, 0x63, 0x3b, 0x49, 0xb1, 0x1e, 0x2f, 0xa7,
-	0x15, 0xe1, 0x6c, 0x33, 0xc6, 0x5a, 0x4c, 0x2d, 0xf6, 0x66, 0x28, 0xe8, 0x1b, 0xd8, 0xf4, 0x8c,
-	0x33, 0xad, 0x3f, 0xb6, 0xa9, 0xdf, 0x69, 0xde, 0x08, 0xf7, 0xb6, 0x53, 0x14, 0x7f, 0x67, 0x09,
-	0xfc, 0x8e, 0x71, 0x56, 0xe5, 0xac, 0x9d, 0x11, 0xee, 0xd5, 0x62, 0xea, 0x86, 0x37, 0x4b, 0x42,
-	0xc7, 0x50, 0x1c, 0xe9, 0xae, 0x66, 0x38, 0xa1, 0xfa, 0x19, 0x0a, 0xff, 0x68, 0x99, 0x15, 0xa1,
-	0xbb, 0x15, 0x67, 0xaa, 0x7c, 0x61, 0x14, 0x79, 0x46, 0x2d, 0x80, 0x51, 0x18, 0x9d, 0xb7, 0xd7,
-	0xae, 0xb1, 0xac, 0x6b, 0x31, 0x35, 0x02, 0x81, 0x54, 0xc8, 0x47, 0x42, 0xf1, 0x76, 0xf6, 0x3a,
-	0x0b, 0xb7, 0x16, 0x53, 0xa3, 0x20, 0xa8, 0x03, 0x05, 0x17, 0xeb, 0x46, 0xf8, 0xed, 0xb9, 0xa5,
-	0x41, 0x55, 0xac, 0x1b, 0xd3, 0x4f, 0xcf, 0xbb, 0xd3, 0x47, 0xe2, 0xa3, 0x9e, 0x69, 0x60, 0xcd,
-	0xb4, 0x47, 0x63, 0x7f, 0x3b, 0x4f, 0x21, 0x1f, 0x2e, 0x33, 0x5b, 0xa6, 0x81, 0x15, 0xc2, 0x53,
-	0x8b, 0xa9, 0x39, 0x2f, 0x78, 0x40, 0x7d, 0xe0, 0xdb, 0x81, 0x66, 0xda, 0xfe, 0x74, 0x9a, 0x0a,
-	0x2b, 0x06, 0x10, 0xc5, 0xf6, 0x23, 0x73, 0xb5, 0x79, 0x31, 0x4f, 0x44, 0x18, 0xd0, 0xc2, 0xd6,
-	0x36, 0xd9, 0x5e, 0xbf, 0x7e, 0x9c, 0x9a, 0x8a, 0x89, 0x10, 0xd1, 0x11, 0xac, 0xcf, 0xba, 0x73,
-	0x71, 0x69, 0x7f, 0x9b, 0xf3, 0xe5, 0x42, 0x3f, 0xf2, 0xbc, 0x97, 0x81, 0x94, 0xeb, 0x38, 0xbe,
-	0xf4, 0xef, 0x71, 0xc8, 0xb6, 0x39, 0xd3, 0xcb, 0x0e, 0x17, 0x0f, 0x01, 0x11, 0x19, 0x5a, 0xe8,
-	0x94, 0x9a, 0x69, 0xb0, 0x44, 0x23, 0xa7, 0x0a, 0xe4, 0x4d, 0xe8, 0xbb, 0x8a, 0x41, 0x36, 0xec,
-	0x82, 0x61, 0x7a, 0x23, 0x4b, 0x9f, 0x68, 0x86, 0xee, 0xeb, 0x3c, 0x2e, 0x2c, 0xe3, 0x5c, 0x15,
-	0xc6, 0x56, 0xd1, 0x7d, 0x5d, 0xcd, 0x1b, 0xd3, 0x07, 0xe9, 0x8f, 0x53, 0x00, 0xd3, 0x05, 0x82,
-	0x5e, 0x87, 0xfc, 0xd8, 0x36, 0x7f, 0x77, 0x8c, 0x35, 0x5b, 0x1f, 0xe2, 0xed, 0x34, 0x8d, 0xc5,
-	0xc0, 0x48, 0x4d, 0x7d, 0x88, 0xd1, 0x3e, 0xa4, 0xa8, 0x8d, 0xe3, 0xd7, 0xb2, 0xb1, 0x4a, 0x99,
-	0xd1, 0x9b, 0xb0, 0xee, 0x8d, 0x4f, 0x22, 0xa9, 0x1b, 0xfb, 0xe0, 0x59, 0x22, 0x49, 0x4f, 0xa8,
-	0xc3, 0x07, 0xb9, 0xd0, 0x27, 0x2b, 0xad, 0xf5, 0x12, 0xf5, 0xf5, 0x20, 0x3d, 0x61, 0x40, 0xa8,
-	0x0b, 0x6b, 0xce, 0xd8, 0xa7, 0x98, 0x2c, 0xe5, 0xd9, 0x5d, 0x0d, 0xb3, 0xc5, 0x98, 0x19, 0x68,
-	0x00, 0xb5, 0x30, 0x2d, 0x99, 0x1b, 0x4f, 0x8b, 0xf8, 0x09, 0xe4, 0x23, 0xfa, 0x5f, 0xb2, 0x35,
-	0xde, 0x8a, 0x6e, 0x8d, 0xb9, 0xe8, 0xde, 0xba, 0x0b, 0x85, 0xa8, 0x9a, 0xab, 0xf0, 0x4a, 0xff,
-	0x08, 0xb0, 0xd5, 0xf1, 0x75, 0xdb, 0xd0, 0x5d, 0x63, 0xfa, 0xd9, 0x9e, 0xf4, 0xdf, 0x09, 0x80,
-	0xb6, 0x6b, 0x0e, 0x4d, 0xdf, 0x3c, 0xc7, 0x1e, 0x7a, 0x17, 0x32, 0xed, 0xb2, 0xaa, 0x55, 0x5a,
-	0x42, 0x4c, 0xbc, 0xff, 0xcb, 0xbf, 0xfb, 0x9f, 0x5f, 0xa7, 0x7f, 0x6b, 0xec, 0xda, 0xbb, 0xe4,
-	0x23, 0x77, 0xc3, 0x09, 0xdc, 0x1d, 0xe9, 0xae, 0xe1, 0xec, 0x9e, 0x3f, 0x46, 0x0f, 0x61, 0xad,
-	0x5a, 0x2f, 0x77, 0xbb, 0x72, 0x53, 0x88, 0x8b, 0xaf, 0xd3, 0xf1, 0x77, 0xe7, 0xc6, 0xf6, 0x2d,
-	0xdd, 0xf7, 0xb1, 0x4d, 0x46, 0x7f, 0x08, 0x85, 0x03, 0xb5, 0x75, 0xd8, 0xd6, 0xf6, 0x9e, 0x6b,
-	0xcf, 0xe4, 0xe7, 0x42, 0x42, 0x7c, 0x93, 0xb2, 0xbc, 0x36, 0xc7, 0x32, 0x70, 0x9d, 0xf1, 0x48,
-	0x3b, 0x99, 0x68, 0x67, 0x78, 0xc2, 0xa5, 0x28, 0x8d, 0xf6, 0x61, 0xbd, 0x23, 0x0b, 0xc9, 0x2b,
-	0xa4, 0x98, 0xc3, 0xd1, 0xd8, 0xf2, 0x30, 0x19, 0xfd, 0x11, 0x14, 0xcb, 0x9d, 0x8e, 0x72, 0xd0,
-	0xd4, 0x8e, 0x95, 0x66, 0xa5, 0x75, 0xdc, 0x11, 0x52, 0xe2, 0x1b, 0x94, 0xe9, 0xd5, 0x39, 0xa6,
-	0x48, 0xa8, 0x64, 0x8c, 0xf9, 0xae, 0xdc, 0xe9, 0x6a, 0x9d, 0xae, 0x2a, 0x97, 0x1b, 0x42, 0x5a,
-	0x7c, 0x8b, 0x72, 0xdd, 0xbb, 0xc4, 0x00, 0x3e, 0xf6, 0x7c, 0xcf, 0x77, 0x09, 0xf1, 0xfc, 0x31,
-	0x7a, 0x1f, 0xf2, 0x8d, 0x72, 0x3b, 0x14, 0x97, 0xb9, 0x42, 0xdc, 0x50, 0x1f, 0x69, 0x4c, 0xa4,
-	0xb7, 0x7b, 0xfe, 0x58, 0xf2, 0xe1, 0x56, 0x05, 0x8f, 0x5c, 0xdc, 0xd3, 0x7d, 0x6c, 0x44, 0xa6,
-	0xe0, 0x2d, 0x48, 0xa9, 0x72, 0xb9, 0x22, 0xc4, 0xc4, 0x57, 0x28, 0xcc, 0x9d, 0x39, 0x18, 0xb2,
-	0x7d, 0x70, 0xa9, 0xfb, 0xaa, 0x5c, 0xee, 0xca, 0xda, 0x91, 0x22, 0x1f, 0x0b, 0xf1, 0x2b, 0xa4,
-	0xf6, 0x5c, 0xac, 0xfb, 0x58, 0x3b, 0x37, 0xf1, 0x05, 0x91, 0xfa, 0x4f, 0x09, 0x5e, 0x67, 0x79,
-	0xa6, 0x8f, 0x3d, 0xf4, 0x43, 0xd8, 0xd8, 0x6f, 0x35, 0xf6, 0x94, 0xa6, 0xac, 0xb5, 0x65, 0x95,
-	0xce, 0x4a, 0x4c, 0x7c, 0x9b, 0x02, 0xdd, 0x9f, 0x07, 0x0a, 0x52, 0x17, 0xec, 0x06, 0x13, 0xf3,
-	0x19, 0x08, 0x01, 0xf7, 0x41, 0xbd, 0xb5, 0x57, 0xae, 0xd7, 0x9f, 0x0b, 0x71, 0xf1, 0x01, 0x65,
-	0x97, 0xae, 0x60, 0x1f, 0x58, 0xce, 0x89, 0x6e, 0x59, 0x94, 0xff, 0x29, 0xdc, 0x09, 0xf9, 0x89,
-	0x63, 0xc8, 0x15, 0xed, 0xa8, 0x5c, 0x3f, 0x94, 0x3b, 0x42, 0x42, 0x2c, 0x51, 0x94, 0x07, 0x57,
-	0xa1, 0x10, 0x17, 0xc1, 0x86, 0x46, 0x1d, 0x9c, 0x98, 0x13, 0xbd, 0x07, 0x39, 0x55, 0xee, 0xd4,
-	0x0e, 0xab, 0xd5, 0x3a, 0x71, 0x13, 0xee, 0xbc, 0x0b, 0xb6, 0xf3, 0x4e, 0xc7, 0xfd, 0xbe, 0x85,
-	0xb9, 0x01, 0x8f, 0x55, 0xa5, 0x2b, 0x6b, 0x55, 0xa5, 0x2e, 0xbf, 0xc0, 0x4b, 0x5c, 0xd3, 0xc7,
-	0x5a, 0xdf, 0xb4, 0xa8, 0x1c, 0xe9, 0x37, 0x71, 0xd8, 0xe4, 0xb9, 0x58, 0x24, 0xd7, 0xdc, 0x85,
-	0x62, 0x68, 0xc7, 0x83, 0xbd, 0x67, 0xfb, 0x47, 0x42, 0x2c, 0x70, 0x9f, 0xab, 0xcc, 0x38, 0x38,
-	0x39, 0xeb, 0x9d, 0x13, 0x3d, 0x54, 0x10, 0x03, 0xde, 0x86, 0xac, 0x1e, 0xc8, 0x5a, 0x79, 0x7f,
-	0xff, 0xb0, 0x71, 0x58, 0x2f, 0x77, 0x5b, 0x6a, 0x47, 0x88, 0x8b, 0x3b, 0x14, 0xe7, 0xe1, 0x15,
-	0x38, 0x43, 0xec, 0x0e, 0xb0, 0xa6, 0xf7, 0x7a, 0xe3, 0xe1, 0xd8, 0xd2, 0x7d, 0xc7, 0xa5, 0xd6,
-	0xa8, 0xc3, 0xf7, 0x02, 0x4c, 0xf9, 0xcb, 0xae, 0x5a, 0xde, 0xef, 0x6a, 0xad, 0xc3, 0x6e, 0xfb,
-	0xb0, 0x4b, 0x4c, 0xfb, 0x88, 0x02, 0x7e, 0xff, 0x0a, 0x40, 0xfc, 0xad, 0xef, 0xea, 0x3d, 0x5f,
-	0xe3, 0x31, 0x90, 0x7c, 0xf3, 0xff, 0xc6, 0xe1, 0x6e, 0x67, 0x64, 0x99, 0xbe, 0xaf, 0x9f, 0x58,
-	0x98, 0xa6, 0x72, 0x91, 0x6f, 0xaf, 0xc3, 0xed, 0x76, 0x59, 0x51, 0xb5, 0x63, 0xa5, 0x5b, 0xd3,
-	0x54, 0xb9, 0xd3, 0x55, 0x95, 0xfd, 0xae, 0xd2, 0x6a, 0x0a, 0x31, 0xf1, 0x31, 0x95, 0xf4, 0x83,
-	0x39, 0x49, 0x9e, 0xd1, 0xd7, 0x46, 0xba, 0xe9, 0x6a, 0x17, 0xa6, 0x7f, 0xaa, 0xb9, 0xd8, 0xf3,
-	0x5d, 0x93, 0x6e, 0x24, 0x44, 0xf3, 0x0a, 0x6c, 0x76, 0xda, 0x75, 0xa5, 0x3b, 0x83, 0x14, 0x17,
-	0xdf, 0xa5, 0x48, 0x6f, 0x5f, 0x82, 0xe4, 0x11, 0xc5, 0xe6, 0x51, 0x9a, 0x70, 0xa7, 0xad, 0xb6,
-	0xf6, 0xe5, 0x4e, 0x87, 0xf8, 0xb4, 0x5c, 0xd1, 0xe4, 0xba, 0xdc, 0x90, 0x9b, 0xf4, 0xf3, 0x2f,
-	0xb7, 0x27, 0x55, 0xca, 0x75, 0x7a, 0xd8, 0xf3, 0x88, 0x7b, 0x63, 0x43, 0xc3, 0x16, 0xa6, 0x35,
-	0x0c, 0xb1, 0xc0, 0x1f, 0xc4, 0xe1, 0x4e, 0x10, 0x3e, 0xc3, 0xdc, 0xab, 0x3b, 0x19, 0x61, 0x4f,
-	0x3a, 0x85, 0x94, 0x6c, 0x8f, 0x87, 0xe8, 0x11, 0x64, 0x95, 0xae, 0xac, 0x96, 0xf7, 0xea, 0xf2,
-	0x34, 0x78, 0x52, 0x21, 0xd3, 0x0c, 0x6f, 0xd7, 0xf4, 0xb1, 0x4b, 0x6c, 0x48, 0x74, 0x7c, 0x04,
-	0xd9, 0xc6, 0x61, 0xbd, 0xab, 0x34, 0xca, 0x6d, 0x21, 0x7e, 0x15, 0xc3, 0x70, 0x6c, 0xf9, 0xe6,
-	0x50, 0x1f, 0x11, 0x25, 0x7e, 0x99, 0x80, 0x7c, 0x24, 0x41, 0x9d, 0xdf, 0xd2, 0xe3, 0x0b, 0x5b,
-	0xfa, 0x5d, 0xc8, 0xd2, 0xca, 0x43, 0x33, 0x0d, 0xbe, 0x23, 0xac, 0xd1, 0x67, 0xc5, 0x40, 0x6d,
-	0x00, 0xd3, 0xd3, 0x4e, 0x9c, 0xb1, 0x6d, 0x60, 0x56, 0x86, 0x14, 0x97, 0x2a, 0x43, 0x14, 0x6f,
-	0x8f, 0xf1, 0x94, 0xc8, 0x47, 0xab, 0x39, 0x33, 0x78, 0x46, 0x3b, 0x70, 0x7b, 0x31, 0x27, 0x24,
-	0x92, 0x53, 0x54, 0xf2, 0x42, 0x9f, 0x62, 0xa2, 0x18, 0x0b, 0xfb, 0x6b, 0xfa, 0xe6, 0x69, 0xcf,
-	0xaf, 0x93, 0x70, 0x47, 0xfe, 0x16, 0xf7, 0xc6, 0xd4, 0x57, 0x3b, 0xbe, 0x3e, 0x08, 0x2b, 0xa4,
-	0x36, 0xe4, 0x23, 0xdd, 0x06, 0x9e, 0xe8, 0xac, 0x5a, 0x7a, 0x46, 0x21, 0xc8, 0x7e, 0xcb, 0x32,
-	0x77, 0xbe, 0xdf, 0x9a, 0x3c, 0x0b, 0xcf, 0x4f, 0x67, 0x30, 0xc8, 0x71, 0xe4, 0x65, 0xe4, 0x5c,
-	0xaa, 0xf7, 0x34, 0xd9, 0x57, 0x0c, 0x15, 0xc2, 0x64, 0xdf, 0x43, 0xaf, 0xcd, 0x34, 0xc9, 0x52,
-	0x34, 0xd3, 0x8a, 0x76, 0xb9, 0xb6, 0xa7, 0x39, 0x51, 0x9a, 0xbe, 0x0c, 0xf3, 0x9a, 0xd9, 0x5c,
-	0x37, 0x73, 0xc3, 0x5c, 0x57, 0x6c, 0x41, 0x3e, 0xa2, 0x23, 0xba, 0x0f, 0x85, 0x68, 0xd6, 0xcb,
-	0x1d, 0x33, 0xef, 0x4f, 0x13, 0x5e, 0xf4, 0x2a, 0x80, 0xe5, 0xf4, 0x74, 0x8b, 0x79, 0x2e, 0xb3,
-	0x5e, 0x8e, 0x52, 0x88, 0xe3, 0x4a, 0xff, 0x91, 0x81, 0x42, 0xb4, 0x62, 0x44, 0x07, 0x90, 0x36,
-	0x1c, 0xad, 0x6f, 0xf3, 0x49, 0xbb, 0x46, 0x41, 0xab, 0xa6, 0x0c, 0xa7, 0x6a, 0xa3, 0x3a, 0xc0,
-	0x48, 0x77, 0xf5, 0x21, 0xf6, 0xb1, 0x1b, 0xf4, 0xfd, 0x1e, 0x2e, 0x57, 0xbf, 0x32, 0x26, 0x35,
-	0xc2, 0x8f, 0xbe, 0xb9, 0x6c, 0xa6, 0x3f, 0x5f, 0xb1, 0x1c, 0x9e, 0xce, 0x6f, 0xd0, 0xa9, 0x8c,
-	0xcc, 0x31, 0x91, 0xe0, 0x93, 0x0d, 0x9c, 0xa4, 0xd7, 0x41, 0x6e, 0xbb, 0xba, 0x04, 0x02, 0x41,
-	0xac, 0x10, 0x4a, 0x08, 0x09, 0x44, 0x82, 0x6f, 0x0e, 0xb1, 0xcb, 0x25, 0xa4, 0xaf, 0x27, 0xa1,
-	0x4b, 0x20, 0xa2, 0x12, 0xfc, 0x90, 0x40, 0xfc, 0xd4, 0x0b, 0x77, 0x0f, 0xea, 0x6d, 0x59, 0x35,
-	0x42, 0x41, 0xef, 0xc1, 0xad, 0x48, 0xf8, 0xd6, 0xc2, 0x90, 0xb5, 0x46, 0xdd, 0x02, 0x45, 0xde,
-	0xed, 0xb3, 0xe8, 0x25, 0x9e, 0xc1, 0xc6, 0x9c, 0xd1, 0x2e, 0x49, 0x86, 0xf7, 0x66, 0x7b, 0x4c,
-	0x2b, 0x95, 0xd5, 0xd1, 0xb4, 0x9b, 0x08, 0x9b, 0xb5, 0xdf, 0x4b, 0x12, 0x16, 0x80, 0xce, 0x09,
-	0x9b, 0x33, 0xe5, 0xcb, 0x11, 0x16, 0x82, 0x46, 0x8b, 0x82, 0x5f, 0xc5, 0x21, 0x17, 0x3a, 0x36,
-	0x7a, 0x0a, 0x29, 0x7f, 0x32, 0x62, 0xfb, 0x48, 0x71, 0xe7, 0xc3, 0x55, 0x16, 0x45, 0x89, 0x6c,
-	0x85, 0x6c, 0x47, 0xa0, 0x18, 0xe2, 0x57, 0x90, 0x22, 0x24, 0x49, 0xe5, 0x9b, 0xe3, 0x06, 0xe4,
-	0x0f, 0x9b, 0x9d, 0xb6, 0xbc, 0xaf, 0x54, 0x15, 0xb9, 0x22, 0xc4, 0x10, 0x40, 0x86, 0xe5, 0xcb,
-	0x42, 0x1c, 0xdd, 0x02, 0xa1, 0xad, 0xb4, 0xe5, 0x3a, 0xc9, 0x56, 0x5a, 0x6d, 0xb2, 0xe1, 0x77,
-	0x84, 0x04, 0xfa, 0x1e, 0x6c, 0x45, 0x52, 0x00, 0x8d, 0x24, 0x31, 0xcf, 0x64, 0x55, 0x48, 0x4a,
-	0x7f, 0x93, 0x84, 0x5c, 0x68, 0x3b, 0xa4, 0x02, 0xd0, 0x0f, 0xd2, 0x22, 0xc5, 0xeb, 0x32, 0x1b,
-	0xd9, 0x11, 0x61, 0x0a, 0x61, 0x6a, 0x31, 0x35, 0x47, 0x61, 0x28, 0x66, 0x1d, 0xb2, 0x27, 0xfa,
-	0x80, 0x21, 0x26, 0x96, 0x2e, 0x87, 0xf7, 0xf4, 0x41, 0x14, 0x6f, 0xed, 0x44, 0x1f, 0x50, 0xb4,
-	0xaf, 0x81, 0xb7, 0xea, 0xe8, 0xc6, 0x48, 0x30, 0x59, 0x75, 0xff, 0xc1, 0xd2, 0x5d, 0x3f, 0xba,
-	0x69, 0x4e, 0x91, 0xd7, 0x43, 0xb8, 0x40, 0x5b, 0x52, 0x5a, 0x44, 0xfa, 0x7d, 0xcb, 0x68, 0xdb,
-	0xd0, 0x47, 0x33, 0xda, 0x0e, 0xf5, 0x51, 0x80, 0xe6, 0x61, 0x9f, 0xa1, 0xa5, 0x97, 0x46, 0xeb,
-	0x60, 0x7f, 0x06, 0xcd, 0xc3, 0x7e, 0xd0, 0x69, 0x21, 0x48, 0xd2, 0x0f, 0xa0, 0x38, 0x6b, 0xf0,
-	0x99, 0xdc, 0x24, 0x3e, 0x93, 0x9b, 0x48, 0x1f, 0x43, 0x21, 0x6a, 0x4b, 0xf4, 0x00, 0x04, 0x9e,
-	0x8b, 0x69, 0x73, 0x2c, 0x45, 0x4e, 0xe7, 0x71, 0x41, 0xfa, 0x45, 0x1c, 0xd0, 0xa2, 0xc9, 0x48,
-	0x80, 0x89, 0x24, 0xc8, 0xf3, 0x20, 0x28, 0xf2, 0x8e, 0x03, 0xa1, 0x2f, 0xe8, 0x06, 0x49, 0xf3,
-	0xe1, 0xbe, 0xcd, 0x7d, 0xe0, 0x3a, 0x9b, 0x4e, 0x8e, 0xa3, 0x54, 0x6d, 0xe9, 0x08, 0x0a, 0x51,
-	0x9b, 0xa3, 0x7b, 0x50, 0x38, 0xc3, 0x93, 0x79, 0x65, 0xe0, 0x0c, 0x4f, 0x02, 0x25, 0xde, 0x84,
-	0x22, 0x73, 0xed, 0xb9, 0x24, 0xae, 0x40, 0xa9, 0xfb, 0x53, 0x6b, 0x45, 0xad, 0xbf, 0x82, 0xb5,
-	0xbe, 0x81, 0x5c, 0x18, 0x16, 0x50, 0x87, 0x6d, 0x03, 0x9a, 0xe1, 0x0c, 0x75, 0xd3, 0xe6, 0x41,
-	0x60, 0x67, 0xc9, 0xc8, 0x52, 0xa1, 0x4c, 0x2c, 0x00, 0xd0, 0xc8, 0xcf, 0x08, 0xd2, 0x8f, 0x21,
-	0x17, 0x26, 0x8c, 0xd2, 0x93, 0xab, 0x62, 0xc1, 0x3a, 0xe4, 0x0e, 0x9b, 0x7b, 0xad, 0xc3, 0x66,
-	0x45, 0xae, 0x08, 0x71, 0x94, 0x87, 0xb5, 0xe0, 0x21, 0x21, 0xfd, 0x65, 0x1c, 0xf2, 0x91, 0xfe,
-	0x29, 0x7a, 0x0a, 0x19, 0xcf, 0x19, 0xbb, 0x3d, 0x7c, 0x83, 0x4c, 0x80, 0x23, 0xcc, 0xe5, 0xc0,
-	0x89, 0x9b, 0xe7, 0xc0, 0x92, 0x01, 0x9b, 0x0b, 0x1d, 0x54, 0xd4, 0x82, 0x1c, 0xef, 0x34, 0xdc,
-	0x28, 0x7f, 0xc9, 0x32, 0x90, 0xaa, 0x2d, 0xfd, 0x59, 0x1c, 0x8a, 0xb3, 0xc7, 0x01, 0x73, 0xfe,
-	0x1a, 0x7f, 0x09, 0xfe, 0x7a, 0xe5, 0xa2, 0x49, 0x5c, 0xb5, 0x68, 0xa4, 0x7f, 0xcb, 0xc0, 0x66,
-	0x17, 0x7b, 0x7e, 0x87, 0x76, 0x46, 0x02, 0xd5, 0xae, 0x5e, 0xe8, 0x48, 0x85, 0x0c, 0x3e, 0xa7,
-	0x29, 0x68, 0x62, 0xe9, 0x9e, 0xdd, 0x82, 0x80, 0x92, 0x4c, 0x20, 0x54, 0x8e, 0x24, 0xfe, 0x26,
-	0x05, 0x69, 0x4a, 0x41, 0xe7, 0xb0, 0x71, 0xa1, 0xfb, 0xd8, 0x1d, 0xea, 0xee, 0x99, 0x46, 0xdf,
-	0x72, 0xc3, 0x3c, 0xbb, 0xbe, 0x98, 0x52, 0xd9, 0x38, 0xd7, 0xed, 0x1e, 0x3e, 0x0e, 0x80, 0x6b,
-	0x31, 0xb5, 0x18, 0x4a, 0x61, 0x72, 0xff, 0x30, 0x0e, 0xb7, 0x79, 0x25, 0x49, 0x22, 0x3e, 0x5d,
-	0x55, 0x4c, 0x3c, 0x8b, 0x23, 0xed, 0x9b, 0x8b, 0x6f, 0x87, 0xf0, 0x64, 0xf5, 0xd5, 0x62, 0xea,
-	0xd6, 0x68, 0x86, 0xc2, 0x14, 0x19, 0xc2, 0x7a, 0x10, 0x09, 0x98, 0x7c, 0xb6, 0xef, 0x54, 0x6f,
-	0x24, 0xdf, 0x90, 0x79, 0x59, 0x5c, 0x8b, 0xa9, 0x05, 0x0e, 0x4f, 0xdf, 0x89, 0x1f, 0x81, 0x30,
-	0x6f, 0x1d, 0xf4, 0x06, 0xac, 0xdb, 0xf8, 0x42, 0x0b, 0x2d, 0x44, 0x67, 0x20, 0xa9, 0x16, 0x6c,
-	0x7c, 0x11, 0x0e, 0x12, 0xf7, 0xe0, 0xf6, 0xa5, 0xdf, 0x85, 0xbe, 0x0f, 0x82, 0xce, 0x5e, 0x68,
-	0xc6, 0xd8, 0xd5, 0xe9, 0x59, 0x0e, 0x03, 0xd8, 0xe0, 0xf4, 0x0a, 0x27, 0x8b, 0x2e, 0xe4, 0x23,
-	0xba, 0xa1, 0x1e, 0x64, 0x83, 0xf2, 0x9d, 0xdf, 0x1e, 0x38, 0xb8, 0xd6, 0x57, 0x13, 0x35, 0x3c,
-	0x5f, 0x1f, 0x8e, 0x70, 0x80, 0xad, 0x86, 0xc0, 0x7b, 0x6b, 0x90, 0xa6, 0x76, 0x15, 0x7f, 0x02,
-	0x68, 0x71, 0x20, 0x7a, 0x1b, 0x36, 0xb0, 0x4d, 0x5c, 0x3d, 0x6c, 0x25, 0x50, 0xe5, 0x0b, 0x6a,
-	0x91, 0x93, 0x83, 0x81, 0xaf, 0x40, 0xce, 0x0f, 0xd8, 0xa9, 0x8f, 0x24, 0xd5, 0x29, 0x41, 0xfa,
-	0xcf, 0x24, 0x6c, 0x1e, 0xbb, 0xa6, 0x8f, 0xab, 0xa6, 0x85, 0xbd, 0x60, 0x55, 0x55, 0x21, 0xe5,
-	0x99, 0xf6, 0xd9, 0x4d, 0xea, 0x21, 0xc2, 0x8f, 0x7e, 0x02, 0x1b, 0xa4, 0x24, 0xd3, 0xfd, 0xf0,
-	0xe0, 0xf0, 0x06, 0xbb, 0x5d, 0x91, 0x41, 0x05, 0x34, 0x62, 0x01, 0x16, 0xb4, 0xb0, 0xa1, 0xd1,
-	0x36, 0x9a, 0x47, 0x5d, 0x30, 0xab, 0x16, 0x03, 0x32, 0xfd, 0x30, 0x0f, 0xfd, 0x10, 0x44, 0x7e,
-	0xe3, 0xc4, 0x20, 0xe9, 0xe4, 0xd0, 0xb4, 0xb1, 0xa1, 0x79, 0xa7, 0xba, 0x6b, 0x98, 0xf6, 0x80,
-	0x26, 0x35, 0x59, 0x75, 0x9b, 0x8d, 0xa8, 0x84, 0x03, 0x3a, 0xfc, 0x3d, 0xc2, 0xb3, 0x55, 0x18,
-	0xab, 0x60, 0x2a, 0xcb, 0x1c, 0x43, 0xcd, 0x9b, 0xf5, 0x45, 0xa5, 0xd8, 0xff, 0x6b, 0xd1, 0x21,
-	0xfd, 0x1c, 0xd2, 0x34, 0xac, 0xd2, 0x89, 0x9e, 0x66, 0xb6, 0xd7, 0x9b, 0x68, 0xb2, 0xbf, 0x97,
-	0x60, 0x2b, 0xac, 0xd8, 0xc3, 0x60, 0x1e, 0x9c, 0xcf, 0x6c, 0x86, 0xaf, 0x78, 0x2c, 0xf7, 0xa4,
-	0x7f, 0x4e, 0x42, 0x31, 0xe8, 0x78, 0xb1, 0x6b, 0x03, 0xd2, 0x5f, 0x25, 0xf9, 0x0e, 0xfe, 0x26,
-	0xa4, 0xf7, 0x9e, 0x77, 0xe5, 0x8e, 0x10, 0x13, 0xef, 0xd2, 0xb6, 0xd5, 0x16, 0x6d, 0x5b, 0x51,
-	0xd4, 0xdd, 0x93, 0x89, 0xcf, 0x3a, 0xb2, 0xaf, 0x41, 0xe2, 0xd9, 0x91, 0x10, 0x17, 0xef, 0xd0,
-	0x21, 0x42, 0x64, 0xc8, 0x19, 0xed, 0x7b, 0xbe, 0x05, 0x99, 0xa3, 0xb2, 0xaa, 0x34, 0xbb, 0x42,
-	0x42, 0x14, 0xe9, 0x98, 0x5b, 0x91, 0x31, 0xe7, 0xba, 0x6b, 0xda, 0x3e, 0x19, 0xf7, 0x4e, 0xa4,
-	0xb1, 0x96, 0x9c, 0x69, 0x8a, 0xb3, 0x91, 0xd1, 0x9e, 0xda, 0x43, 0xc8, 0x75, 0x95, 0x86, 0xdc,
-	0xe9, 0x96, 0x1b, 0x6d, 0x21, 0x25, 0xbe, 0x4a, 0x07, 0x7f, 0x2f, 0x32, 0x38, 0x5c, 0x57, 0x64,
-	0xf4, 0xc7, 0xb0, 0xa1, 0x34, 0xbb, 0xb2, 0x7a, 0x54, 0xae, 0xf3, 0xee, 0xbd, 0x90, 0x9e, 0xe9,
-	0x02, 0x73, 0x01, 0xb6, 0x8f, 0xdd, 0x73, 0xdd, 0xe2, 0xdd, 0x7b, 0xd6, 0x3b, 0x5e, 0xaf, 0xcb,
-	0xcd, 0x83, 0x6e, 0x4d, 0x6b, 0xab, 0x72, 0x55, 0xf9, 0x52, 0xc8, 0xcc, 0x34, 0xf0, 0x18, 0x9f,
-	0x85, 0xed, 0x81, 0x7f, 0xaa, 0x8d, 0x5c, 0xdc, 0x37, 0xbf, 0xe5, 0x5c, 0xac, 0x4f, 0x1e, 0x48,
-	0x5b, 0xbb, 0x84, 0x8b, 0x35, 0xc8, 0x23, 0xb2, 0x3e, 0x84, 0x22, 0x1b, 0x1e, 0xb4, 0xc7, 0x85,
-	0xac, 0x28, 0x51, 0xb6, 0x57, 0x22, 0x6c, 0xe1, 0x42, 0x63, 0x3e, 0x74, 0xfe, 0x58, 0xfa, 0xa3,
-	0x4c, 0x90, 0x8d, 0x44, 0xcf, 0x54, 0x5f, 0x76, 0x36, 0x82, 0x8e, 0xa0, 0xc0, 0x7a, 0xd0, 0x9e,
-	0xaf, 0xfb, 0x63, 0x8f, 0xe7, 0x51, 0x4f, 0x96, 0x29, 0x41, 0x08, 0x5b, 0x87, 0x72, 0xb1, 0x4c,
-	0x2a, 0x3f, 0x9c, 0x52, 0xd0, 0x5b, 0x41, 0xf0, 0x98, 0xa6, 0x1e, 0x49, 0xba, 0xce, 0xd6, 0x19,
-	0x39, 0xc8, 0x92, 0x2b, 0xb0, 0xe6, 0xbb, 0xe6, 0x60, 0x80, 0x5d, 0x5e, 0xfd, 0xbc, 0xb3, 0x4c,
-	0xa4, 0x67, 0x1c, 0x6a, 0xc0, 0x8a, 0x30, 0x6c, 0x86, 0x19, 0x8d, 0xe9, 0xd8, 0x1a, 0x61, 0xa1,
-	0xf5, 0x4f, 0x71, 0xe7, 0xe3, 0x25, 0xf0, 0xca, 0x11, 0xde, 0x86, 0x63, 0xf0, 0x5a, 0x58, 0xd0,
-	0xe7, 0xc8, 0x24, 0xcb, 0x66, 0x3d, 0x38, 0x9a, 0x16, 0xd0, 0x5e, 0xc8, 0x72, 0x59, 0x36, 0x3b,
-	0xf8, 0x23, 0xbb, 0x0c, 0xcf, 0xb2, 0x9d, 0x90, 0x80, 0x4e, 0x40, 0xe8, 0x59, 0x0e, 0x4d, 0x36,
-	0x4e, 0xf0, 0xa9, 0x7e, 0x6e, 0x3a, 0x2e, 0xed, 0x9d, 0x14, 0x77, 0x3e, 0x5a, 0xa6, 0xc4, 0x64,
-	0xac, 0x7b, 0x9c, 0x93, 0xc1, 0x6f, 0xf4, 0x66, 0xa9, 0x74, 0x2b, 0xb6, 0x2c, 0xea, 0x60, 0x96,
-	0xee, 0x63, 0x1b, 0x7b, 0x1e, 0xbd, 0x56, 0x41, 0xb6, 0x62, 0x46, 0xaf, 0x73, 0x32, 0xa9, 0x77,
-	0x5b, 0x36, 0x51, 0x2c, 0x60, 0xa6, 0x57, 0x25, 0x96, 0xeb, 0x28, 0xcc, 0x32, 0x32, 0x5d, 0xe6,
-	0xd0, 0xd0, 0x63, 0xb8, 0xad, 0x7b, 0x9e, 0x39, 0xb0, 0x3d, 0xcd, 0x77, 0x34, 0xc7, 0xc6, 0x7c,
-	0xad, 0x6c, 0x03, 0xdd, 0x27, 0x10, 0x7f, 0xd9, 0x75, 0x5a, 0x36, 0x66, 0xfe, 0x2f, 0xfd, 0x14,
-	0xf2, 0x11, 0x67, 0x93, 0x1a, 0x57, 0x55, 0x22, 0x1b, 0x90, 0x6f, 0xb6, 0x9a, 0xf4, 0x18, 0x46,
-	0x69, 0x1e, 0x08, 0x71, 0x4a, 0x90, 0xe5, 0x4a, 0x87, 0x9d, 0xcc, 0x08, 0x09, 0x84, 0xa0, 0x58,
-	0xae, 0xab, 0x72, 0xb9, 0xf2, 0x9c, 0x91, 0x2a, 0x42, 0x52, 0x6a, 0x80, 0x30, 0x3f, 0xff, 0xd2,
-	0x27, 0x57, 0x89, 0x28, 0x02, 0x54, 0x94, 0xce, 0x7e, 0x59, 0xad, 0x30, 0x09, 0x02, 0x14, 0xc2,
-	0xf3, 0x1e, 0x42, 0x49, 0x48, 0x5f, 0xc0, 0xc6, 0xdc, 0x9c, 0x48, 0x9f, 0xbd, 0x40, 0x61, 0xb9,
-	0xa1, 0x74, 0xb5, 0x72, 0xfd, 0xb8, 0xfc, 0xbc, 0xc3, 0x7a, 0x29, 0x94, 0xa0, 0x54, 0xb5, 0x66,
-	0xab, 0x29, 0x37, 0xda, 0xdd, 0xe7, 0x42, 0x42, 0x6a, 0xcf, 0x4f, 0xc9, 0x0b, 0x11, 0xab, 0x8a,
-	0x2a, 0xcf, 0x20, 0x52, 0xc2, 0x2c, 0xe2, 0x09, 0xc0, 0xd4, 0x25, 0xa5, 0xee, 0x55, 0x68, 0x9b,
-	0xb0, 0x2e, 0x37, 0x2b, 0x5a, 0xab, 0xaa, 0x85, 0xdd, 0x1e, 0x04, 0xc5, 0x7a, 0x99, 0x1e, 0xb4,
-	0x2a, 0x4d, 0xad, 0x5d, 0x6e, 0x12, 0xab, 0x12, 0xad, 0xcb, 0x6a, 0x5d, 0x89, 0x52, 0x93, 0x92,
-	0x05, 0x30, 0x2d, 0x2e, 0xa5, 0xaf, 0x5f, 0x60, 0x51, 0xf9, 0x48, 0x6e, 0x76, 0x35, 0x12, 0xf9,
-	0x85, 0x38, 0xda, 0x82, 0x0d, 0x7e, 0xf6, 0xa3, 0x34, 0x0f, 0x18, 0x31, 0x81, 0xee, 0xc1, 0x2b,
-	0x9d, 0xe7, 0xcd, 0xfd, 0x9a, 0xda, 0x6a, 0x2a, 0x5f, 0xc9, 0x15, 0x6d, 0x7e, 0x44, 0x52, 0xfa,
-	0x73, 0x01, 0xd6, 0x78, 0x58, 0x40, 0x2a, 0xe4, 0xf4, 0xbe, 0x8f, 0x5d, 0x4d, 0xb7, 0x2c, 0x1e,
-	0x24, 0x9f, 0x2c, 0x1f, 0x55, 0x4a, 0x65, 0xc2, 0x5b, 0xb6, 0xac, 0x5a, 0x4c, 0xcd, 0xea, 0xfc,
-	0x77, 0x04, 0xd3, 0x9e, 0xf0, 0xec, 0x60, 0x75, 0x4c, 0x7b, 0x32, 0xc5, 0xb4, 0x27, 0xe8, 0x10,
-	0x80, 0x61, 0x62, 0xbd, 0x77, 0xca, 0xd3, 0xfb, 0xf7, 0x57, 0x05, 0x95, 0xf5, 0xde, 0x69, 0x2d,
-	0xa6, 0x32, 0xed, 0xc8, 0x03, 0xb2, 0x60, 0x8b, 0xc3, 0xda, 0x86, 0xe6, 0xf4, 0x83, 0xf5, 0xc5,
-	0xc2, 0xeb, 0xa7, 0x2b, 0xe3, 0xdb, 0x46, 0xab, 0xcf, 0x16, 0x62, 0x2d, 0xa6, 0x0a, 0xfa, 0x1c,
-	0x0d, 0xf9, 0x70, 0x9b, 0x49, 0x9b, 0x2b, 0x9a, 0x78, 0xfb, 0xe9, 0xb3, 0x55, 0xe5, 0x2d, 0x16,
-	0x47, 0xfa, 0x22, 0x19, 0xfd, 0x22, 0x0e, 0x12, 0x13, 0xeb, 0x4d, 0xec, 0xde, 0xa9, 0xeb, 0xd8,
-	0xe6, 0xef, 0x61, 0x63, 0x41, 0x07, 0x76, 0x36, 0xf2, 0x74, 0x55, 0x1d, 0x3a, 0x11, 0xcc, 0x05,
-	0x7d, 0x5e, 0xd7, 0x5f, 0x3c, 0x04, 0x3d, 0x83, 0x8c, 0x6e, 0x5d, 0xe8, 0x13, 0x8f, 0xdf, 0xdc,
-	0x7a, 0xbc, 0x8a, 0x78, 0xca, 0x58, 0x8b, 0xa9, 0x1c, 0x02, 0x35, 0x61, 0xcd, 0xc0, 0x7d, 0x7d,
-	0x6c, 0xf9, 0xfc, 0x66, 0xdd, 0xce, 0x0a, 0x68, 0x15, 0xc6, 0x59, 0x8b, 0xa9, 0x01, 0x08, 0xfa,
-	0x7a, 0x5a, 0x55, 0xf6, 0x9c, 0xb1, 0xed, 0xf3, 0xdb, 0x75, 0x1f, 0xad, 0x80, 0x2a, 0x07, 0x7d,
-	0xa8, 0xb1, 0xed, 0x47, 0xca, 0x48, 0xfa, 0x8c, 0x6a, 0x90, 0xb6, 0xf1, 0x39, 0x76, 0xf9, 0x05,
-	0xbb, 0xf7, 0x56, 0xc0, 0x6d, 0x12, 0xbe, 0x5a, 0x4c, 0x65, 0x00, 0x64, 0x75, 0x38, 0xae, 0xd6,
-	0x37, 0x6d, 0xdd, 0xb2, 0x26, 0x74, 0x77, 0x58, 0x6d, 0x75, 0xb4, 0xdc, 0x2a, 0xe3, 0x25, 0xab,
-	0xc3, 0x09, 0x1e, 0xc8, 0xec, 0xb8, 0x78, 0x84, 0xf5, 0xe0, 0xbe, 0xde, 0x2a, 0xb3, 0xa3, 0x52,
-	0x46, 0x32, 0x3b, 0x0c, 0x42, 0xfc, 0x12, 0xb2, 0x41, 0xb4, 0x40, 0x75, 0xc8, 0xd3, 0x7b, 0x52,
-	0x74, 0x68, 0x50, 0xb7, 0xae, 0x92, 0xcd, 0x44, 0xd9, 0xa7, 0xc8, 0xf6, 0xe4, 0x25, 0x23, 0x3f,
-	0x87, 0x5c, 0x18, 0x38, 0x5e, 0x32, 0xf4, 0xdf, 0xc6, 0x41, 0x98, 0x0f, 0x1a, 0xa8, 0x05, 0xeb,
-	0x58, 0x77, 0xad, 0x89, 0xd6, 0x37, 0x5d, 0xd3, 0x1e, 0x04, 0x97, 0xf3, 0x56, 0x11, 0x52, 0xa0,
-	0x00, 0x55, 0xc6, 0x8f, 0x1a, 0x50, 0x20, 0x49, 0x4c, 0x88, 0x97, 0x58, 0x19, 0x2f, 0x4f, 0xf8,
-	0x39, 0x9c, 0xf8, 0x73, 0xd8, 0xba, 0x24, 0xf0, 0xa0, 0x53, 0xb8, 0x15, 0x56, 0x1b, 0xda, 0xc2,
-	0xbf, 0x19, 0x3e, 0x58, 0xb2, 0xb5, 0x4a, 0xd9, 0xa7, 0xd7, 0xd7, 0xb7, 0xfc, 0x05, 0x9a, 0x27,
-	0xde, 0x87, 0xd7, 0xbf, 0x23, 0xea, 0x88, 0x39, 0x58, 0xe3, 0x6b, 0x59, 0x7c, 0x02, 0x85, 0xe8,
-	0x02, 0x44, 0x6f, 0xcc, 0x2f, 0x68, 0x62, 0xde, 0xf4, 0xec, 0xaa, 0x14, 0xd7, 0x20, 0x4d, 0x57,
-	0x97, 0x98, 0x85, 0x0c, 0x0b, 0x31, 0xe2, 0x9f, 0xc6, 0x21, 0x17, 0x2e, 0x11, 0xf4, 0x19, 0xa4,
-	0xc2, 0xc6, 0xf1, 0x6a, 0xb6, 0xa4, 0x7c, 0x24, 0x8d, 0x0f, 0x56, 0xea, 0xea, 0xd3, 0x11, 0xb0,
-	0x8a, 0x5d, 0xc8, 0xb0, 0x25, 0x86, 0x9e, 0x02, 0x4c, 0x1d, 0xeb, 0x1a, 0x5a, 0x45, 0xb8, 0xf7,
-	0x72, 0x61, 0x89, 0x21, 0xfd, 0x4b, 0x22, 0xd2, 0xeb, 0x99, 0xde, 0xae, 0xec, 0x40, 0xda, 0xc0,
-	0x96, 0x3e, 0xe1, 0x82, 0x3e, 0xbd, 0xd6, 0xe4, 0x96, 0x2a, 0x04, 0x82, 0xc4, 0x2f, 0x8a, 0x85,
-	0xbe, 0x82, 0xac, 0x6e, 0x99, 0x03, 0x5b, 0xf3, 0x1d, 0x6e, 0x93, 0x1f, 0x5d, 0x0f, 0xb7, 0x4c,
-	0x50, 0xba, 0x0e, 0x89, 0xe2, 0x3a, 0xfb, 0x29, 0xbe, 0x03, 0x69, 0x2a, 0x0d, 0xdd, 0x87, 0x02,
-	0x95, 0xa6, 0x0d, 0x4d, 0xcb, 0x32, 0x3d, 0xde, 0x5f, 0xcb, 0x53, 0x5a, 0x83, 0x92, 0xc4, 0x4f,
-	0x60, 0x8d, 0x23, 0xa0, 0x3b, 0x90, 0x19, 0x61, 0xd7, 0x74, 0x58, 0x2d, 0x96, 0x54, 0xf9, 0x13,
-	0xa1, 0x3b, 0xfd, 0xbe, 0x87, 0x7d, 0x9a, 0x24, 0x24, 0x55, 0xfe, 0xb4, 0x77, 0x1b, 0xb6, 0x2e,
-	0x59, 0x03, 0xd2, 0x9f, 0x24, 0x20, 0x17, 0xb6, 0x3d, 0xd0, 0x11, 0x14, 0xf5, 0x1e, 0xbd, 0x78,
-	0x33, 0xd2, 0x7d, 0x1f, 0xbb, 0xf6, 0x75, 0xef, 0xa0, 0xae, 0x33, 0x98, 0x36, 0x43, 0x41, 0xcf,
-	0x60, 0xed, 0xdc, 0xc4, 0x17, 0x37, 0x3b, 0xc1, 0xc9, 0x10, 0x88, 0xaa, 0x8d, 0xbe, 0x06, 0x7e,
-	0x41, 0x59, 0x1b, 0xea, 0xa3, 0x11, 0xc9, 0x0f, 0xfa, 0x36, 0xcf, 0xb8, 0xae, 0x03, 0xcb, 0x6b,
-	0xdb, 0x06, 0xc3, 0xaa, 0xda, 0xd2, 0xeb, 0x90, 0x8f, 0x5c, 0x33, 0x41, 0x02, 0x24, 0xc7, 0xae,
-	0x15, 0x74, 0x96, 0xc6, 0xae, 0x25, 0xfd, 0x0c, 0x36, 0xe6, 0x40, 0x5e, 0xce, 0x95, 0xdd, 0xdf,
-	0x86, 0x62, 0xe4, 0x4a, 0xcb, 0xb4, 0xc3, 0xbf, 0x1e, 0xa1, 0x2a, 0x86, 0xb4, 0x0b, 0x85, 0x19,
-	0xd9, 0x54, 0x41, 0x7b, 0xaa, 0xa0, 0x8d, 0xb6, 0x61, 0x2d, 0xfa, 0xb7, 0x86, 0x82, 0x1a, 0x3c,
-	0x4a, 0xff, 0x95, 0x82, 0x7c, 0xe4, 0xc2, 0x0e, 0x52, 0x20, 0x6d, 0xfa, 0x38, 0x0c, 0x85, 0x4f,
-	0x56, 0xbb, 0xef, 0x53, 0x52, 0x7c, 0x3c, 0x54, 0x19, 0x82, 0xd8, 0x07, 0x50, 0x0c, 0x6c, 0xfb,
-	0x66, 0xdf, 0xc4, 0xee, 0x32, 0x37, 0x4f, 0xde, 0x80, 0xf5, 0xe9, 0x10, 0xf2, 0x05, 0xfc, 0x4c,
-	0x2d, 0x24, 0x1e, 0xba, 0x76, 0xd0, 0xd7, 0x4b, 0x86, 0x7d, 0x3d, 0xf1, 0x57, 0x09, 0x48, 0x11,
-	0xb9, 0x48, 0x81, 0x04, 0x07, 0x5e, 0xee, 0xde, 0xf2, 0x8c, 0xe2, 0xa1, 0xa6, 0x6a, 0xc2, 0x34,
-	0x50, 0x9d, 0x1f, 0xb8, 0x27, 0x96, 0x6e, 0x33, 0x44, 0xc1, 0xe6, 0x8e, 0xdc, 0xd1, 0x3b, 0x41,
-	0xe7, 0x91, 0x39, 0xe5, 0xad, 0x12, 0xfb, 0xcf, 0x5d, 0x29, 0xf8, 0xcf, 0x5d, 0xa9, 0x6c, 0x07,
-	0x7f, 0x07, 0x42, 0x1f, 0x40, 0xde, 0x3b, 0x75, 0x5c, 0x9f, 0x35, 0x8b, 0x78, 0x62, 0x7f, 0x39,
-	0x07, 0xd0, 0x81, 0xf4, 0xf0, 0x16, 0xdd, 0x82, 0xb4, 0xa5, 0x9f, 0x60, 0x8b, 0xdf, 0x1e, 0x67,
-	0x0f, 0xe8, 0x2e, 0x64, 0x2d, 0xd3, 0x3e, 0xd3, 0x88, 0xbf, 0x66, 0xd8, 0x01, 0x0f, 0x79, 0x3e,
-	0x74, 0x2d, 0xf1, 0x67, 0xfc, 0x1a, 0xc0, 0xf8, 0x05, 0xd7, 0x00, 0x3a, 0x5d, 0x95, 0x55, 0xc2,
-	0x79, 0x58, 0x53, 0x9a, 0x5d, 0xf9, 0x40, 0x56, 0x85, 0x04, 0xca, 0x41, 0xba, 0x5a, 0x6f, 0x95,
-	0xbb, 0x42, 0x92, 0x9d, 0x07, 0xb6, 0xea, 0x72, 0xb9, 0x29, 0xa4, 0xd0, 0x7a, 0xb4, 0xc1, 0x97,
-	0x46, 0x05, 0xc8, 0x56, 0x0e, 0xd5, 0x32, 0xbd, 0x24, 0x98, 0x21, 0x95, 0xe0, 0xd3, 0xf2, 0x51,
-	0x59, 0xdb, 0xaf, 0x97, 0x3b, 0x1d, 0x61, 0x6d, 0xf7, 0x73, 0xc8, 0xd2, 0x7f, 0x33, 0x12, 0xef,
-	0xbc, 0xbf, 0xf0, 0x75, 0x44, 0x23, 0xfa, 0x5d, 0xad, 0x11, 0xfb, 0x17, 0xe0, 0xbf, 0xfe, 0xc5,
-	0x5f, 0x7f, 0xc9, 0xf4, 0x27, 0x5c, 0x87, 0xae, 0xbd, 0xf7, 0x29, 0x7c, 0xf7, 0xff, 0x1e, 0xf7,
-	0x72, 0x2a, 0x6d, 0x4c, 0x97, 0x47, 0xe6, 0x57, 0xf9, 0x80, 0xae, 0x9d, 0x3f, 0x3e, 0xc9, 0x50,
-	0x49, 0x4f, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xe6, 0x6e, 0x98, 0x52, 0x39, 0x00, 0x00,
+	0x72, 0xd7, 0xb7, 0xad, 0x92, 0x2c, 0xd3, 0xcf, 0xdd, 0x3d, 0x6e, 0x66, 0x66, 0xba, 0x9b, 0x33,
+	0x99, 0xe9, 0x9d, 0xed, 0x51, 0x8f, 0xbb, 0xe7, 0xd3, 0xb3, 0xdb, 0xb3, 0xb2, 0x45, 0x59, 0xec,
+	0xd6, 0xd7, 0x50, 0xb2, 0x3d, 0x3d, 0x3b, 0x19, 0x0e, 0x2d, 0x3e, 0xc9, 0x84, 0x29, 0x52, 0x21,
+	0x29, 0x7b, 0x14, 0x64, 0xb1, 0x40, 0x0e, 0x49, 0x80, 0x5c, 0x92, 0x43, 0x0e, 0x7b, 0xdd, 0x00,
+	0xb9, 0x24, 0x40, 0x90, 0x6c, 0x10, 0x20, 0x97, 0x04, 0xd8, 0xe4, 0x2f, 0x48, 0x6e, 0x39, 0xe7,
+	0x1f, 0x08, 0x82, 0x20, 0x40, 0x2e, 0x09, 0xde, 0x07, 0x29, 0x4a, 0xb2, 0xbb, 0x25, 0xbb, 0x91,
+	0x9b, 0x58, 0x7c, 0xf5, 0xab, 0x62, 0xbd, 0x7a, 0xf5, 0xaa, 0xea, 0x3d, 0xc1, 0xcd, 0x63, 0xac,
+	0x0f, 0x34, 0x77, 0x64, 0xdb, 0xd8, 0xd5, 0xf4, 0xa1, 0x59, 0x1c, 0xba, 0x8e, 0xef, 0xa0, 0x7b,
+	0x8e, 0xdb, 0x2f, 0xea, 0x43, 0xbd, 0x7b, 0x82, 0x8b, 0x64, 0x44, 0x71, 0xe0, 0x18, 0xd8, 0x2a,
+	0x0e, 0xcd, 0x21, 0xb6, 0x4c, 0x1b, 0x17, 0xcf, 0xb6, 0xc5, 0xdb, 0x7d, 0xc7, 0xe9, 0x5b, 0xf8,
+	0x21, 0x65, 0x38, 0x1e, 0xf5, 0x1e, 0xea, 0xf6, 0x98, 0x71, 0x8b, 0x77, 0x67, 0x5f, 0x19, 0xd8,
+	0xeb, 0xba, 0xe6, 0xd0, 0x77, 0x5c, 0x36, 0x42, 0xfa, 0xbb, 0x55, 0x80, 0x3d, 0x67, 0x30, 0x74,
+	0x6c, 0x6c, 0xfb, 0x1e, 0xfa, 0x2d, 0x00, 0xdf, 0xd5, 0x6d, 0xaf, 0xe7, 0xb8, 0x03, 0x6f, 0x2b,
+	0x7e, 0x37, 0x79, 0x3f, 0xf7, 0xe8, 0xc7, 0xc5, 0x97, 0xea, 0x50, 0x9c, 0x40, 0x14, 0x3b, 0x21,
+	0xbf, 0x6c, 0xfb, 0xee, 0x58, 0x8d, 0x00, 0xa2, 0x2e, 0xe4, 0x87, 0x5d, 0xc7, 0xb2, 0x70, 0xd7,
+	0x37, 0x1d, 0xdb, 0xdb, 0x4a, 0x50, 0x01, 0x5f, 0x2c, 0x27, 0xa0, 0x15, 0x41, 0x60, 0x22, 0xa6,
+	0x40, 0xd1, 0x18, 0x6e, 0x9c, 0x9b, 0xb6, 0xe1, 0x9c, 0x9b, 0x76, 0x5f, 0xf3, 0x7c, 0x57, 0xf7,
+	0x71, 0xdf, 0xc4, 0xde, 0x56, 0x92, 0x0a, 0xab, 0x2c, 0x27, 0xec, 0x28, 0x40, 0x6a, 0x87, 0x40,
+	0x4c, 0xe6, 0xe6, 0xf9, 0xfc, 0x1b, 0xf4, 0x25, 0x64, 0xba, 0x8e, 0x81, 0x5d, 0x6f, 0x2b, 0x45,
+	0x85, 0x7d, 0xb6, 0x9c, 0xb0, 0x3d, 0xca, 0xcb, 0xf0, 0x39, 0x10, 0x31, 0x19, 0xb6, 0xcf, 0x4c,
+	0xd7, 0xb1, 0x07, 0x64, 0xcc, 0x56, 0xfa, 0x2a, 0x26, 0x93, 0x23, 0x08, 0xdc, 0x64, 0x51, 0x50,
+	0xd1, 0x82, 0xf5, 0x99, 0x69, 0x43, 0x02, 0x24, 0x4f, 0xf1, 0x78, 0x2b, 0x7e, 0x37, 0x7e, 0x3f,
+	0xab, 0x92, 0x9f, 0x68, 0x0f, 0xd2, 0x67, 0xba, 0x35, 0xc2, 0x5b, 0x89, 0xbb, 0xf1, 0xfb, 0xb9,
+	0x47, 0xef, 0x2f, 0xa0, 0x42, 0x2b, 0x44, 0x55, 0x19, 0xef, 0x4e, 0xe2, 0xd3, 0xb8, 0xe8, 0xc0,
+	0xc6, 0xdc, 0x1c, 0x5e, 0x20, 0xaf, 0x3c, 0x2d, 0xaf, 0xb8, 0x88, 0xbc, 0xbd, 0x10, 0x36, 0x2a,
+	0xf0, 0x77, 0x61, 0xeb, 0xb2, 0x79, 0xbc, 0x40, 0xee, 0xd3, 0x69, 0xb9, 0x1f, 0x2e, 0x20, 0x77,
+	0x16, 0x7d, 0x1c, 0x95, 0xde, 0x85, 0x5c, 0x64, 0x62, 0x2f, 0x10, 0xf8, 0x64, 0x5a, 0xe0, 0xfd,
+	0x85, 0xe6, 0xd6, 0xc0, 0xee, 0x8c, 0x4d, 0xe7, 0x26, 0xf9, 0xd5, 0xd8, 0x34, 0x02, 0x1b, 0x11,
+	0x28, 0xfd, 0xfd, 0x2a, 0xdc, 0xac, 0x63, 0xcf, 0xd3, 0xfb, 0xf8, 0xc8, 0xf4, 0x4f, 0x22, 0x31,
+	0xa4, 0x0e, 0xd0, 0x0d, 0x9f, 0xa8, 0xf0, 0xc5, 0x9c, 0x65, 0x02, 0xa1, 0x46, 0x00, 0xd0, 0x4f,
+	0x20, 0x4d, 0x97, 0xc2, 0xb2, 0xd6, 0xa9, 0xc6, 0x54, 0xc6, 0x88, 0xbe, 0x81, 0xf5, 0xae, 0x33,
+	0x38, 0x36, 0x6d, 0xac, 0x0d, 0xf5, 0xb1, 0xe5, 0xe8, 0xc6, 0x56, 0x92, 0x62, 0x6d, 0x2f, 0xa6,
+	0x15, 0xe1, 0x6c, 0x31, 0xc6, 0x6a, 0x4c, 0x2d, 0x74, 0xa7, 0x28, 0xe8, 0x3b, 0xd8, 0xf0, 0x8c,
+	0x53, 0xad, 0x37, 0xb2, 0xa9, 0xdf, 0x69, 0xde, 0x10, 0x77, 0xb7, 0x52, 0x14, 0xff, 0xd1, 0x02,
+	0xf8, 0x6d, 0xe3, 0xb4, 0xc2, 0x59, 0xdb, 0x43, 0xdc, 0xad, 0xc6, 0xd4, 0x75, 0x6f, 0x9a, 0x84,
+	0x8e, 0xa0, 0x30, 0xd4, 0x5d, 0xcd, 0x70, 0x42, 0xf5, 0x33, 0x14, 0xfe, 0xe1, 0x22, 0x2b, 0x42,
+	0x77, 0xcb, 0xce, 0x44, 0xf9, 0xfc, 0x30, 0xf2, 0x8c, 0x9a, 0x00, 0xc3, 0x30, 0x3a, 0x6f, 0xad,
+	0x5c, 0x61, 0x59, 0x57, 0x63, 0x6a, 0x04, 0x02, 0xa9, 0x90, 0x8b, 0x84, 0xe2, 0xad, 0xd5, 0xab,
+	0x2c, 0xdc, 0x6a, 0x4c, 0x8d, 0x82, 0xa0, 0x36, 0xe4, 0x5d, 0xac, 0x1b, 0xe1, 0xb7, 0x67, 0x17,
+	0x06, 0x55, 0xb1, 0x6e, 0x4c, 0x3e, 0x3d, 0xe7, 0x4e, 0x1e, 0x89, 0x8f, 0x7a, 0xa6, 0x81, 0x35,
+	0xd3, 0x1e, 0x8e, 0xfc, 0xad, 0x1c, 0x85, 0x7c, 0xb0, 0xc8, 0x6c, 0x99, 0x06, 0x56, 0x08, 0x4f,
+	0x35, 0xa6, 0x66, 0xbd, 0xe0, 0x01, 0xf5, 0x80, 0x6f, 0x07, 0x9a, 0x69, 0xfb, 0x93, 0x69, 0xca,
+	0x2f, 0x19, 0x40, 0x14, 0xdb, 0x8f, 0xcc, 0xd5, 0xc6, 0xf9, 0x2c, 0x11, 0x61, 0x40, 0x73, 0x5b,
+	0xdb, 0x78, 0x6b, 0xed, 0xea, 0x71, 0x6a, 0x22, 0x26, 0x42, 0x44, 0x87, 0xb0, 0x36, 0xed, 0xce,
+	0x85, 0x85, 0xfd, 0x6d, 0xc6, 0x97, 0xf3, 0xbd, 0xc8, 0xf3, 0x6e, 0x06, 0x52, 0xae, 0xe3, 0xf8,
+	0xd2, 0xbf, 0xc5, 0x61, 0xb5, 0xc5, 0x99, 0x5e, 0x75, 0xb8, 0x78, 0x00, 0x88, 0xc8, 0xd0, 0x42,
+	0xa7, 0xd4, 0x4c, 0x83, 0x25, 0x1a, 0x59, 0x55, 0x20, 0x6f, 0x42, 0xdf, 0x55, 0x0c, 0xb2, 0x61,
+	0xe7, 0x0d, 0xd3, 0x1b, 0x5a, 0xfa, 0x58, 0x33, 0x74, 0x5f, 0xe7, 0x71, 0x61, 0x11, 0xe7, 0x2a,
+	0x33, 0xb6, 0xb2, 0xee, 0xeb, 0x6a, 0xce, 0x98, 0x3c, 0x48, 0x7f, 0x94, 0x02, 0x98, 0x2c, 0x10,
+	0x74, 0x07, 0x72, 0x23, 0xdb, 0xfc, 0xed, 0x11, 0xd6, 0x6c, 0x7d, 0x80, 0xb7, 0xd2, 0x34, 0x16,
+	0x03, 0x23, 0x35, 0xf4, 0x01, 0x46, 0x7b, 0x90, 0xa2, 0x36, 0x8e, 0x5f, 0xc9, 0xc6, 0x2a, 0x65,
+	0x46, 0x6f, 0xc3, 0x9a, 0x37, 0x3a, 0x8e, 0xa4, 0x6e, 0xec, 0x83, 0xa7, 0x89, 0x24, 0x3d, 0xa1,
+	0x0e, 0x1f, 0xe4, 0x42, 0x9f, 0x2d, 0xb5, 0xd6, 0x8b, 0xd4, 0xd7, 0x83, 0xf4, 0x84, 0x01, 0xa1,
+	0x0e, 0xac, 0x38, 0x23, 0x9f, 0x62, 0xb2, 0x94, 0x67, 0x67, 0x39, 0xcc, 0x26, 0x63, 0x66, 0xa0,
+	0x01, 0xd4, 0xdc, 0xb4, 0x64, 0xae, 0x3d, 0x2d, 0xe2, 0x67, 0x90, 0x8b, 0xe8, 0x7f, 0xc1, 0xd6,
+	0x78, 0x23, 0xba, 0x35, 0x66, 0xa3, 0x7b, 0xeb, 0x0e, 0xe4, 0xa3, 0x6a, 0x2e, 0xc3, 0x2b, 0xfd,
+	0x4b, 0x1e, 0x36, 0xdb, 0xbe, 0x6e, 0x1b, 0xba, 0x6b, 0x4c, 0x3e, 0xdb, 0x93, 0xfe, 0x3b, 0x01,
+	0xd0, 0x72, 0xcd, 0x81, 0xe9, 0x9b, 0x67, 0xd8, 0x43, 0xef, 0x43, 0xa6, 0x55, 0x52, 0xb5, 0x72,
+	0x53, 0x88, 0x89, 0xf7, 0x7e, 0xf9, 0xb7, 0xff, 0xf3, 0xeb, 0xf4, 0x6f, 0x8c, 0x5c, 0x7b, 0x87,
+	0x7c, 0xe4, 0x4e, 0x38, 0x81, 0x3b, 0x43, 0xdd, 0x35, 0x9c, 0x9d, 0xb3, 0x6d, 0xf4, 0x00, 0x56,
+	0x2a, 0xb5, 0x52, 0xa7, 0x23, 0x37, 0x84, 0xb8, 0x78, 0x87, 0x8e, 0xbf, 0x3d, 0x33, 0xb6, 0x67,
+	0xe9, 0xbe, 0x8f, 0x6d, 0x32, 0xfa, 0x63, 0xc8, 0xef, 0xab, 0xcd, 0x83, 0x96, 0xb6, 0xfb, 0x5c,
+	0x7b, 0x26, 0x3f, 0x17, 0x12, 0xe2, 0xdb, 0x94, 0xe5, 0xcd, 0x19, 0x96, 0xbe, 0xeb, 0x8c, 0x86,
+	0xda, 0xf1, 0x58, 0x3b, 0xc5, 0x63, 0x2e, 0x45, 0xa9, 0xb7, 0x0e, 0x6a, 0x6d, 0x59, 0x48, 0x5e,
+	0x22, 0xc5, 0x1c, 0x0c, 0x47, 0x96, 0x87, 0xc9, 0xe8, 0x4f, 0xa0, 0x50, 0x6a, 0xb7, 0x95, 0xfd,
+	0x86, 0x76, 0xa4, 0x34, 0xca, 0xcd, 0xa3, 0xb6, 0x90, 0x12, 0xdf, 0xa2, 0x4c, 0x6f, 0xcc, 0x30,
+	0x45, 0x42, 0x25, 0x63, 0xcc, 0x75, 0xe4, 0x76, 0x47, 0x6b, 0x77, 0x54, 0xb9, 0x54, 0x17, 0xd2,
+	0xe2, 0x3b, 0x94, 0xeb, 0xee, 0x05, 0x06, 0xf0, 0xb1, 0xe7, 0x7b, 0xbe, 0x4b, 0x88, 0x67, 0xdb,
+	0xe8, 0x43, 0xc8, 0xd5, 0x4b, 0xad, 0x50, 0x5c, 0xe6, 0x12, 0x71, 0x03, 0x7d, 0xa8, 0x31, 0x91,
+	0xde, 0xce, 0xd9, 0xb6, 0xe4, 0xc3, 0x8d, 0x32, 0x1e, 0xba, 0xb8, 0xab, 0xfb, 0xd8, 0x88, 0x4c,
+	0xc1, 0x3b, 0x90, 0x52, 0xe5, 0x52, 0x59, 0x88, 0x89, 0xaf, 0x53, 0x98, 0x5b, 0x33, 0x30, 0x64,
+	0xfb, 0xe0, 0x52, 0xf7, 0x54, 0xb9, 0xd4, 0x91, 0xb5, 0x43, 0x45, 0x3e, 0x12, 0xe2, 0x97, 0x48,
+	0xed, 0xba, 0x58, 0xf7, 0xb1, 0x76, 0x66, 0xe2, 0x73, 0x22, 0xf5, 0x1f, 0x12, 0xbc, 0xce, 0xf2,
+	0x4c, 0x1f, 0x7b, 0xe8, 0x47, 0xb0, 0xbe, 0xd7, 0xac, 0xef, 0x2a, 0x0d, 0x59, 0x6b, 0xc9, 0x2a,
+	0x9d, 0x95, 0x98, 0xf8, 0x2e, 0x05, 0xba, 0x37, 0x0b, 0x14, 0xa4, 0x2e, 0xd8, 0x0d, 0x26, 0xe6,
+	0x09, 0x08, 0x01, 0xf7, 0x7e, 0xad, 0xb9, 0x5b, 0xaa, 0xd5, 0x9e, 0x0b, 0x71, 0xf1, 0x3e, 0x65,
+	0x97, 0x2e, 0x61, 0xef, 0x5b, 0xce, 0xb1, 0x6e, 0x59, 0x94, 0xff, 0x29, 0xdc, 0x0a, 0xf9, 0x89,
+	0x63, 0xc8, 0x65, 0xed, 0xb0, 0x54, 0x3b, 0x90, 0xdb, 0x42, 0x42, 0x2c, 0x52, 0x94, 0xfb, 0x97,
+	0xa1, 0x10, 0x17, 0xc1, 0x86, 0x46, 0x1d, 0x9c, 0x98, 0x13, 0x7d, 0x00, 0x59, 0x55, 0x6e, 0x57,
+	0x0f, 0x2a, 0x95, 0x1a, 0x71, 0x13, 0xee, 0xbc, 0x73, 0xb6, 0xf3, 0x4e, 0x46, 0xbd, 0x9e, 0x85,
+	0xb9, 0x01, 0x8f, 0x54, 0xa5, 0x23, 0x6b, 0x15, 0xa5, 0x26, 0xbf, 0xc0, 0x4b, 0x5c, 0xd3, 0xc7,
+	0x5a, 0xcf, 0xb4, 0xa8, 0x1c, 0xe9, 0x0f, 0x52, 0xb0, 0xc1, 0x73, 0xb1, 0x48, 0xae, 0xb9, 0x03,
+	0x85, 0xd0, 0x8e, 0xfb, 0xbb, 0xcf, 0xf6, 0x0e, 0x85, 0x58, 0xe0, 0x3e, 0x97, 0x99, 0xb1, 0x7f,
+	0x7c, 0xda, 0x3d, 0x23, 0x7a, 0xa8, 0x20, 0x06, 0xbc, 0x75, 0x59, 0xdd, 0x97, 0xb5, 0xd2, 0xde,
+	0xde, 0x41, 0xfd, 0xa0, 0x56, 0xea, 0x34, 0xd5, 0xb6, 0x10, 0x17, 0x1f, 0x51, 0x9c, 0x07, 0x97,
+	0xe0, 0x0c, 0xb0, 0xdb, 0xc7, 0x9a, 0xde, 0xed, 0x8e, 0x06, 0x23, 0x4b, 0xf7, 0x1d, 0x97, 0x5a,
+	0xa3, 0x06, 0xaf, 0x05, 0x98, 0xf2, 0x57, 0x1d, 0xb5, 0xb4, 0xd7, 0xd1, 0x9a, 0x07, 0x9d, 0xd6,
+	0x41, 0x87, 0x98, 0xf6, 0x21, 0x05, 0xfc, 0xc1, 0x25, 0x80, 0xf8, 0x7b, 0xdf, 0xd5, 0xbb, 0xbe,
+	0xc6, 0x63, 0xe0, 0x8c, 0x86, 0xdc, 0x4b, 0xb4, 0x96, 0x2a, 0x73, 0x92, 0x90, 0x7c, 0x89, 0x86,
+	0xdc, 0x61, 0x34, 0xe2, 0xeb, 0x8c, 0x44, 0x30, 0x8f, 0x41, 0x9a, 0xc5, 0xbc, 0xe0, 0xeb, 0x53,
+	0xe2, 0x0e, 0xc5, 0xfe, 0xf0, 0x25, 0xd8, 0x17, 0x5b, 0xe1, 0x1b, 0xb8, 0x33, 0x2b, 0x63, 0xd6,
+	0x1a, 0x69, 0xf1, 0x13, 0x2a, 0x60, 0xfb, 0x25, 0x02, 0xe6, 0xad, 0x22, 0xfd, 0x6f, 0x1c, 0x6e,
+	0xb7, 0x87, 0x96, 0xe9, 0xfb, 0xfa, 0xb1, 0x85, 0x69, 0x82, 0x1b, 0xf1, 0x88, 0x1a, 0xdc, 0x6c,
+	0x95, 0x14, 0x55, 0x3b, 0x52, 0x3a, 0x55, 0x4d, 0x95, 0xdb, 0x1d, 0x55, 0xd9, 0xeb, 0x28, 0xcd,
+	0x86, 0x10, 0x13, 0xb7, 0xa9, 0xc4, 0x1f, 0xce, 0x48, 0xf4, 0x8c, 0x9e, 0x36, 0xd4, 0x4d, 0x57,
+	0x3b, 0x37, 0xfd, 0x13, 0xcd, 0xc5, 0x9e, 0xef, 0x9a, 0x74, 0x7b, 0x25, 0x5f, 0x52, 0x86, 0x8d,
+	0x76, 0xab, 0xa6, 0x74, 0xa6, 0x90, 0xe2, 0xe2, 0xfb, 0x14, 0xe9, 0xdd, 0x0b, 0x90, 0x3c, 0xa2,
+	0xd8, 0x2c, 0x4a, 0x03, 0x6e, 0xb5, 0xd4, 0xe6, 0x9e, 0xdc, 0x6e, 0x13, 0x5b, 0xc8, 0x65, 0x4d,
+	0xae, 0xc9, 0x75, 0xb9, 0x41, 0x9d, 0xe2, 0xe2, 0x39, 0xa4, 0x4a, 0xb9, 0x4e, 0x17, 0x7b, 0x1e,
+	0x31, 0x03, 0x36, 0x34, 0x6c, 0x61, 0x5a, 0xd9, 0x11, 0x0b, 0xfc, 0x5e, 0x1c, 0x6e, 0x05, 0x9b,
+	0x4a, 0x98, 0x91, 0x76, 0xc6, 0x43, 0xec, 0x49, 0x27, 0x90, 0x92, 0xed, 0xd1, 0x00, 0x3d, 0x84,
+	0x55, 0xa5, 0x23, 0xab, 0xa5, 0xdd, 0x9a, 0x3c, 0xd9, 0x52, 0xa8, 0x90, 0x49, 0xde, 0xbb, 0x63,
+	0xfa, 0xd8, 0x25, 0x36, 0x24, 0x3a, 0x3e, 0x84, 0xd5, 0xfa, 0x41, 0xad, 0xa3, 0xd4, 0x4b, 0x2d,
+	0x21, 0x7e, 0x19, 0xc3, 0x60, 0x64, 0xf9, 0xe6, 0x40, 0x1f, 0x12, 0x25, 0x7e, 0x99, 0x80, 0x5c,
+	0x24, 0x6d, 0x9f, 0x4d, 0x74, 0xe2, 0x73, 0x89, 0xce, 0x6d, 0x58, 0xa5, 0xf5, 0x98, 0x66, 0x1a,
+	0x7c, 0x9f, 0x5c, 0xa1, 0xcf, 0x8a, 0x81, 0x5a, 0x00, 0xa6, 0xa7, 0x1d, 0x3b, 0x23, 0xdb, 0xc0,
+	0xac, 0x38, 0x2b, 0x2c, 0x54, 0x9c, 0x29, 0xde, 0x2e, 0xe3, 0x29, 0x92, 0x8f, 0x56, 0xb3, 0x66,
+	0xf0, 0x8c, 0x1e, 0xc1, 0xcd, 0xf9, 0x4c, 0x99, 0x48, 0x4e, 0x51, 0xc9, 0x73, 0xdd, 0x9b, 0xb1,
+	0x62, 0xcc, 0x65, 0x1d, 0xe9, 0xeb, 0x27, 0x83, 0xbf, 0x4e, 0xc2, 0x2d, 0xf9, 0x7b, 0xdc, 0x1d,
+	0x51, 0x5f, 0x6d, 0xfb, 0x7a, 0x3f, 0xac, 0x1b, 0x5b, 0x90, 0x8b, 0xf4, 0x60, 0x78, 0xfa, 0xb7,
+	0x6c, 0x41, 0x1e, 0x85, 0x20, 0x59, 0x08, 0xab, 0x67, 0x78, 0x16, 0x62, 0xf2, 0xda, 0x24, 0x37,
+	0x99, 0xc1, 0x20, 0xf3, 0x93, 0x17, 0x91, 0x73, 0xa1, 0xde, 0x93, 0x12, 0x48, 0x31, 0x54, 0x08,
+	0x4b, 0x20, 0x0f, 0xbd, 0x39, 0xd5, 0x3a, 0x4c, 0xd1, 0xfc, 0x33, 0xda, 0xfb, 0xdb, 0x9a, 0x64,
+	0x8a, 0x69, 0xfa, 0x32, 0xcc, 0xf6, 0xa6, 0x2b, 0x80, 0xcc, 0x35, 0x2b, 0x00, 0xb1, 0x09, 0xb9,
+	0x88, 0x8e, 0xe8, 0x1e, 0xe4, 0xa3, 0xb5, 0x00, 0x77, 0xcc, 0x9c, 0x3f, 0x29, 0x03, 0xd0, 0x1b,
+	0x00, 0x96, 0xd3, 0xd5, 0x2d, 0xe6, 0xb9, 0xcc, 0x7a, 0x59, 0x4a, 0x21, 0x8e, 0x2b, 0xfd, 0x7b,
+	0x06, 0xf2, 0xd1, 0x3a, 0x1a, 0xed, 0x43, 0xda, 0x70, 0xb4, 0x9e, 0xcd, 0x27, 0xed, 0x0a, 0x65,
+	0xbe, 0x9a, 0x32, 0x9c, 0x8a, 0x8d, 0x6a, 0x00, 0x43, 0xdd, 0xd5, 0x07, 0xd8, 0xc7, 0x6e, 0xd0,
+	0x0d, 0x7d, 0xb0, 0x58, 0x55, 0xcf, 0x98, 0xd4, 0x08, 0x3f, 0xfa, 0xee, 0xa2, 0x99, 0xfe, 0x62,
+	0xc9, 0x26, 0xc1, 0x64, 0x7e, 0x83, 0xfe, 0x6d, 0x64, 0x8e, 0x89, 0x04, 0x9f, 0xa4, 0x35, 0xa4,
+	0xe8, 0x08, 0x32, 0xfe, 0xe5, 0x25, 0x10, 0x08, 0x62, 0x85, 0x50, 0x42, 0x48, 0x20, 0x12, 0x7c,
+	0x73, 0x80, 0x5d, 0x2e, 0x21, 0x7d, 0x35, 0x09, 0x1d, 0x02, 0x11, 0x95, 0xe0, 0x87, 0x04, 0xe2,
+	0xa7, 0x5e, 0xb8, 0x7b, 0x50, 0x6f, 0x5b, 0x55, 0x23, 0x14, 0xf4, 0x01, 0xdc, 0x88, 0x84, 0x6f,
+	0x2d, 0x0c, 0x59, 0x2b, 0xd4, 0x2d, 0x50, 0xe4, 0xdd, 0x1e, 0x8b, 0x5e, 0xe2, 0x29, 0xac, 0xcf,
+	0x18, 0xed, 0x82, 0x12, 0x61, 0x77, 0xba, 0xf3, 0xb6, 0x54, 0xb3, 0x21, 0x5a, 0x8c, 0x10, 0x61,
+	0xd3, 0xf6, 0x7b, 0x45, 0xc2, 0x02, 0xd0, 0x19, 0x61, 0x33, 0xa6, 0x7c, 0x35, 0xc2, 0x42, 0xd0,
+	0x68, 0xa9, 0xf4, 0xab, 0x38, 0x64, 0x43, 0xc7, 0x46, 0x4f, 0x21, 0xe5, 0x8f, 0x87, 0x6c, 0x1f,
+	0x29, 0x3c, 0xfa, 0x78, 0x99, 0x45, 0x51, 0x24, 0x5b, 0x21, 0xdb, 0x11, 0x28, 0x86, 0xf8, 0x35,
+	0xa4, 0x08, 0x49, 0x52, 0xf9, 0xe6, 0xb8, 0x0e, 0xb9, 0x83, 0x46, 0xbb, 0x25, 0xef, 0x29, 0x15,
+	0x45, 0x2e, 0x0b, 0x31, 0x04, 0x90, 0x61, 0x55, 0x84, 0x10, 0x47, 0x37, 0x40, 0x68, 0x29, 0x2d,
+	0xb9, 0x46, 0xb2, 0x97, 0x66, 0x8b, 0x6c, 0xf8, 0x6d, 0x21, 0x81, 0x5e, 0x83, 0xcd, 0x48, 0x0a,
+	0xa0, 0x91, 0x64, 0xe6, 0x99, 0xac, 0x0a, 0x49, 0xe9, 0xaf, 0x93, 0x90, 0x0d, 0x6d, 0x87, 0x54,
+	0x00, 0xfa, 0x41, 0x5a, 0xa4, 0xa4, 0x5f, 0x64, 0x23, 0x3b, 0x24, 0x4c, 0x21, 0x4c, 0x35, 0xa6,
+	0x66, 0x29, 0x0c, 0xc5, 0xac, 0xc1, 0xea, 0xb1, 0xde, 0x67, 0x88, 0x89, 0x85, 0x9b, 0x04, 0xbb,
+	0x7a, 0x3f, 0x8a, 0xb7, 0x72, 0xac, 0xf7, 0x29, 0xda, 0xb7, 0xc0, 0x1b, 0x98, 0x74, 0x63, 0x24,
+	0x98, 0xac, 0xe7, 0xf1, 0xd1, 0xc2, 0xbd, 0x50, 0xba, 0x69, 0x4e, 0x90, 0xd7, 0x42, 0xb8, 0x40,
+	0x5b, 0x52, 0x70, 0x45, 0xba, 0xa0, 0x8b, 0x68, 0x5b, 0xd7, 0x87, 0x53, 0xda, 0x0e, 0xf4, 0x61,
+	0x80, 0xe6, 0x61, 0x9f, 0xa1, 0xa5, 0x17, 0x46, 0x6b, 0x63, 0x7f, 0x0a, 0xcd, 0xc3, 0x7e, 0xd0,
+	0x7f, 0x22, 0x48, 0xd2, 0x0f, 0xa1, 0x30, 0x6d, 0xf0, 0xa9, 0xdc, 0x24, 0x3e, 0x95, 0x9b, 0x48,
+	0x9f, 0x42, 0x3e, 0x6a, 0x4b, 0x74, 0x1f, 0x04, 0x9e, 0x8b, 0x69, 0x33, 0x2c, 0x05, 0x4e, 0xe7,
+	0x71, 0x41, 0xfa, 0x45, 0x1c, 0xd0, 0xbc, 0xc9, 0x48, 0x80, 0x89, 0x24, 0xcc, 0xb3, 0x20, 0x28,
+	0xf2, 0x8e, 0x03, 0xa1, 0x2f, 0xe9, 0x06, 0x49, 0xf3, 0xe2, 0x9e, 0xcd, 0x7d, 0xe0, 0x2a, 0x9b,
+	0x4e, 0x96, 0xa3, 0x54, 0x6c, 0xe9, 0x10, 0xf2, 0x51, 0x9b, 0xa3, 0xbb, 0x90, 0x27, 0xe9, 0xf6,
+	0x8c, 0x32, 0x70, 0x8a, 0xc7, 0x81, 0x12, 0x6f, 0x43, 0x81, 0xb9, 0xf6, 0x4c, 0x12, 0x97, 0xa7,
+	0xd4, 0xbd, 0x89, 0xb5, 0xa2, 0xd6, 0x5f, 0xc2, 0x5a, 0xdf, 0x41, 0x36, 0x0c, 0x0b, 0xa8, 0xcd,
+	0xb6, 0x01, 0xcd, 0x70, 0x06, 0xba, 0x69, 0xf3, 0x20, 0xf0, 0x68, 0xc1, 0xc8, 0x52, 0xa6, 0x4c,
+	0x2c, 0x00, 0xd0, 0xc8, 0xcf, 0x08, 0xd2, 0x4f, 0x20, 0x1b, 0x26, 0x8c, 0xd2, 0xe3, 0xcb, 0x62,
+	0xc1, 0x1a, 0x64, 0x0f, 0x1a, 0xbb, 0xcd, 0x83, 0x46, 0x59, 0x2e, 0x0b, 0x71, 0x94, 0x83, 0x95,
+	0xe0, 0x21, 0x21, 0xfd, 0x45, 0x1c, 0x72, 0x91, 0xae, 0x32, 0x7a, 0x0a, 0x19, 0xcf, 0x19, 0xb9,
+	0x5d, 0x7c, 0x8d, 0x4c, 0x80, 0x23, 0xcc, 0xe4, 0xc0, 0x89, 0xeb, 0xe7, 0xc0, 0x92, 0x01, 0x1b,
+	0x73, 0x7d, 0x65, 0xd4, 0x84, 0x2c, 0xef, 0xbf, 0x5c, 0x2b, 0x7f, 0x59, 0x65, 0x20, 0x15, 0x5b,
+	0xfa, 0xd3, 0x38, 0x14, 0xa6, 0x0f, 0x49, 0x66, 0xfc, 0x35, 0xfe, 0x0a, 0xfc, 0xf5, 0xd2, 0x45,
+	0x93, 0xb8, 0x6c, 0xd1, 0x48, 0xff, 0x9a, 0x81, 0x8d, 0x0e, 0xf6, 0xfc, 0x36, 0xed, 0x17, 0x05,
+	0xaa, 0x5d, 0xbe, 0xd0, 0x91, 0x0a, 0x19, 0x7c, 0x46, 0x53, 0xd0, 0xc4, 0xc2, 0x9d, 0xcc, 0x39,
+	0x01, 0x45, 0x99, 0x40, 0xa8, 0x1c, 0x49, 0xfc, 0x8f, 0x14, 0xa4, 0x29, 0x05, 0x9d, 0xc1, 0xfa,
+	0xb9, 0xee, 0x63, 0x77, 0xa0, 0xbb, 0xa7, 0x1a, 0x7d, 0xcb, 0x0d, 0xf3, 0xec, 0xea, 0x62, 0x8a,
+	0x25, 0xe3, 0x4c, 0xb7, 0xbb, 0xf8, 0x28, 0x00, 0xae, 0xc6, 0xd4, 0x42, 0x28, 0x85, 0xc9, 0xfd,
+	0xfd, 0x38, 0xdc, 0xe4, 0x95, 0x24, 0x89, 0xf8, 0x74, 0x55, 0x31, 0xf1, 0x2c, 0x8e, 0xb4, 0xae,
+	0x2f, 0xbe, 0x15, 0xc2, 0x93, 0xd5, 0x57, 0x8d, 0xa9, 0x9b, 0xc3, 0x29, 0x0a, 0x53, 0x64, 0x00,
+	0x6b, 0x41, 0x24, 0x60, 0xf2, 0xd9, 0xbe, 0x53, 0xb9, 0x96, 0x7c, 0x43, 0xe6, 0x65, 0x71, 0x35,
+	0xa6, 0xe6, 0x39, 0x3c, 0x7d, 0x27, 0x7e, 0x02, 0xc2, 0xac, 0x75, 0xd0, 0x5b, 0xb0, 0x66, 0xe3,
+	0x73, 0x2d, 0xb4, 0x10, 0x9d, 0x81, 0xa4, 0x9a, 0xb7, 0xf1, 0x79, 0x38, 0x48, 0xdc, 0x85, 0x9b,
+	0x17, 0x7e, 0x17, 0xfa, 0x01, 0x08, 0x3a, 0x7b, 0xa1, 0x19, 0x23, 0x57, 0xa7, 0x27, 0x5c, 0x0c,
+	0x60, 0x9d, 0xd3, 0xcb, 0x9c, 0x2c, 0xba, 0x90, 0x8b, 0xe8, 0x86, 0xba, 0xb0, 0x1a, 0x94, 0xef,
+	0xfc, 0x4e, 0xc5, 0xfe, 0x95, 0xbe, 0x9a, 0xa8, 0xe1, 0xf9, 0xfa, 0x60, 0x88, 0x03, 0x6c, 0x35,
+	0x04, 0xde, 0x5d, 0x81, 0x34, 0xb5, 0xab, 0xf8, 0x53, 0x40, 0xf3, 0x03, 0xd1, 0xbb, 0xb0, 0x8e,
+	0x6d, 0xe2, 0xea, 0x61, 0x2b, 0x81, 0x2a, 0x9f, 0x57, 0x0b, 0x9c, 0x1c, 0x0c, 0x7c, 0x1d, 0xb2,
+	0x7e, 0xc0, 0x4e, 0x7d, 0x24, 0xa9, 0x4e, 0x08, 0xd2, 0x7f, 0x26, 0x61, 0xe3, 0xc8, 0x35, 0x7d,
+	0x5c, 0x31, 0x2d, 0xec, 0x05, 0xab, 0xaa, 0x02, 0x29, 0xcf, 0xb4, 0x4f, 0xaf, 0x53, 0x0f, 0x11,
+	0x7e, 0xf4, 0x53, 0x58, 0x27, 0x25, 0x99, 0xee, 0x87, 0xc7, 0xa9, 0xd7, 0xd8, 0xed, 0x0a, 0x0c,
+	0x2a, 0xa0, 0x11, 0x0b, 0xb0, 0xa0, 0x85, 0x0d, 0x8d, 0x36, 0x17, 0x3d, 0xea, 0x82, 0xab, 0x6a,
+	0x21, 0x20, 0xd3, 0x0f, 0xf3, 0xd0, 0x8f, 0x40, 0xe4, 0xf7, 0x70, 0x0c, 0x92, 0x4e, 0x0e, 0x4c,
+	0x1b, 0x1b, 0x9a, 0x77, 0xa2, 0xbb, 0x86, 0x69, 0xf7, 0x69, 0x52, 0xb3, 0xaa, 0x6e, 0xb1, 0x11,
+	0xe5, 0x70, 0x40, 0x9b, 0xbf, 0x47, 0x78, 0xba, 0x0a, 0x63, 0x15, 0x4c, 0x79, 0x91, 0xc3, 0xb9,
+	0x59, 0xb3, 0xbe, 0xa8, 0x14, 0xfb, 0x7f, 0x2d, 0x3a, 0xa4, 0x9f, 0x43, 0x9a, 0x86, 0x55, 0x3a,
+	0xd1, 0x93, 0xcc, 0xf6, 0x6a, 0x13, 0x4d, 0xf6, 0xf7, 0x22, 0x6c, 0x86, 0x15, 0x7b, 0x18, 0xcc,
+	0x83, 0x53, 0xab, 0x8d, 0xf0, 0x15, 0x8f, 0xe5, 0x9e, 0xf4, 0x8f, 0x49, 0x28, 0x04, 0x1d, 0x2f,
+	0x76, 0x99, 0x42, 0xfa, 0xcb, 0x24, 0xdf, 0xc1, 0xdf, 0x86, 0xf4, 0xee, 0xf3, 0x8e, 0xdc, 0x16,
+	0x62, 0xe2, 0x6d, 0xda, 0xb6, 0xda, 0xa4, 0x6d, 0x2b, 0x8a, 0xba, 0x73, 0x3c, 0xf6, 0x59, 0x9f,
+	0xfa, 0x4d, 0x48, 0x3c, 0x3b, 0x14, 0xe2, 0xe2, 0x2d, 0x3a, 0x44, 0x88, 0x0c, 0x39, 0xa5, 0xdd,
+	0xe0, 0x77, 0x20, 0x73, 0x58, 0x52, 0x95, 0x46, 0x47, 0x48, 0x88, 0x22, 0x1d, 0x73, 0x23, 0x32,
+	0xe6, 0x4c, 0x77, 0x4d, 0xdb, 0x27, 0xe3, 0xde, 0x8b, 0x34, 0xd6, 0x92, 0x53, 0x47, 0x05, 0x6c,
+	0x64, 0xb4, 0xa7, 0xf6, 0x00, 0xb2, 0x1d, 0xa5, 0x2e, 0xb7, 0x3b, 0xa5, 0x7a, 0x4b, 0x48, 0x89,
+	0x6f, 0xd0, 0xc1, 0xaf, 0x45, 0x06, 0x87, 0xeb, 0x8a, 0x8c, 0xfe, 0x14, 0xd6, 0x95, 0x46, 0x47,
+	0x56, 0x0f, 0x4b, 0x35, 0x7e, 0xa6, 0x21, 0xa4, 0xa7, 0x7a, 0xe3, 0x5c, 0x80, 0xed, 0x63, 0xf7,
+	0x4c, 0xb7, 0xf8, 0x99, 0x06, 0xeb, 0xa8, 0xaf, 0xd5, 0xe4, 0xc6, 0x7e, 0xa7, 0xaa, 0xb5, 0x54,
+	0xb9, 0xa2, 0x7c, 0x25, 0x64, 0xa6, 0x1a, 0x78, 0x8c, 0xcf, 0xc2, 0x76, 0xdf, 0x3f, 0xd1, 0x86,
+	0x2e, 0xee, 0x99, 0xdf, 0x73, 0x2e, 0x76, 0x7a, 0x10, 0x48, 0x5b, 0xb9, 0x80, 0x8b, 0x1d, 0x1b,
+	0x44, 0x64, 0x7d, 0x0c, 0x05, 0x36, 0x3c, 0x38, 0x34, 0x10, 0x56, 0x45, 0x89, 0xb2, 0xbd, 0x1e,
+	0x61, 0x0b, 0x17, 0x1a, 0xf3, 0xa1, 0xb3, 0x6d, 0xe9, 0x0f, 0x33, 0x41, 0x36, 0x12, 0x3d, 0x69,
+	0x7e, 0xd5, 0xd9, 0x08, 0x3a, 0x84, 0x3c, 0xeb, 0x49, 0x7b, 0xbe, 0xee, 0x8f, 0x3c, 0x9e, 0x47,
+	0x3d, 0x5e, 0xa4, 0x04, 0x21, 0x6c, 0x6d, 0xca, 0xc5, 0x32, 0xa9, 0xdc, 0x60, 0x42, 0x41, 0xef,
+	0x04, 0xc1, 0x63, 0x92, 0x7a, 0x24, 0xe9, 0x3a, 0x5b, 0x63, 0xe4, 0x20, 0x4b, 0x2e, 0xc3, 0x8a,
+	0xef, 0x9a, 0xfd, 0x3e, 0x76, 0x79, 0xf5, 0xf3, 0xde, 0x22, 0x91, 0x9e, 0x71, 0xa8, 0x01, 0x2b,
+	0xc2, 0xb0, 0x11, 0x66, 0x34, 0xa6, 0x63, 0x6b, 0x84, 0x85, 0xd6, 0x3f, 0x85, 0x47, 0x9f, 0x2e,
+	0x80, 0x57, 0x8a, 0xf0, 0xd6, 0x1d, 0x83, 0xd7, 0xc2, 0x82, 0x3e, 0x43, 0x26, 0x59, 0x36, 0xeb,
+	0xc1, 0xd1, 0xb4, 0x80, 0xf6, 0x42, 0x16, 0xcb, 0xb2, 0xd9, 0x71, 0x28, 0xd9, 0x65, 0x78, 0x96,
+	0xed, 0x84, 0x04, 0x74, 0x0c, 0x42, 0xd7, 0x72, 0x68, 0xb2, 0x71, 0x8c, 0x4f, 0xf4, 0x33, 0xd3,
+	0x71, 0x69, 0xef, 0xa4, 0xf0, 0xe8, 0x93, 0x45, 0x4a, 0x4c, 0xc6, 0xba, 0xcb, 0x39, 0x19, 0xfc,
+	0x7a, 0x77, 0x9a, 0x4a, 0xb7, 0x62, 0xcb, 0xa2, 0x0e, 0x66, 0xe9, 0x3e, 0xb6, 0xb1, 0xe7, 0xd1,
+	0xcb, 0x26, 0x64, 0x2b, 0x66, 0xf4, 0x1a, 0x27, 0x93, 0x7a, 0xb7, 0x69, 0x13, 0xc5, 0x02, 0x66,
+	0x7a, 0x81, 0x64, 0xb1, 0x8e, 0xc2, 0x34, 0x23, 0xd3, 0x65, 0x06, 0x0d, 0x6d, 0xc3, 0x4d, 0xdd,
+	0xf3, 0xcc, 0xbe, 0xed, 0x69, 0xbe, 0xa3, 0x39, 0x36, 0xe6, 0x6b, 0x65, 0x0b, 0xe8, 0x3e, 0x81,
+	0xf8, 0xcb, 0x8e, 0xd3, 0xb4, 0x31, 0xf3, 0x7f, 0xe9, 0x1b, 0xc8, 0x45, 0x9c, 0x4d, 0xaa, 0x5f,
+	0x56, 0x89, 0xac, 0x43, 0xae, 0xd1, 0x6c, 0xd0, 0xe3, 0x19, 0xa5, 0xb1, 0x2f, 0xc4, 0x29, 0x41,
+	0x96, 0xcb, 0x6d, 0x76, 0x62, 0x23, 0x24, 0x10, 0x82, 0x42, 0xa9, 0xa6, 0xca, 0xa5, 0x32, 0x3f,
+	0xc4, 0x29, 0x0b, 0x49, 0xa9, 0x0e, 0xc2, 0xec, 0xfc, 0x4b, 0x9f, 0x5d, 0x26, 0xa2, 0x00, 0x50,
+	0x56, 0xda, 0x7b, 0x25, 0xb5, 0xcc, 0x24, 0x08, 0x90, 0x0f, 0xcf, 0x81, 0x08, 0x25, 0x21, 0x7d,
+	0x09, 0xeb, 0x33, 0x73, 0x22, 0x3d, 0x79, 0x81, 0xc2, 0x72, 0x5d, 0xe9, 0x68, 0xa5, 0xda, 0x51,
+	0xe9, 0x79, 0x9b, 0xf5, 0x52, 0x28, 0x41, 0xa9, 0x68, 0x8d, 0x66, 0x43, 0xae, 0xb7, 0x3a, 0xcf,
+	0x85, 0x84, 0xd4, 0x9a, 0x9d, 0x92, 0x17, 0x22, 0x56, 0x14, 0x55, 0x9e, 0x42, 0xa4, 0x84, 0x69,
+	0xc4, 0x63, 0x80, 0x89, 0x4b, 0x4a, 0x9d, 0xcb, 0xd0, 0x36, 0x60, 0x4d, 0x6e, 0x94, 0xb5, 0x66,
+	0x45, 0x0b, 0xbb, 0x3d, 0x08, 0x0a, 0xb5, 0x12, 0x3d, 0x7e, 0x56, 0x1a, 0x5a, 0xab, 0xd4, 0x20,
+	0x56, 0x25, 0x5a, 0x97, 0xd4, 0x9a, 0x12, 0xa5, 0x26, 0x25, 0x0b, 0x60, 0x52, 0x5c, 0x4a, 0xdf,
+	0xbe, 0xc0, 0xa2, 0xf2, 0xa1, 0xdc, 0xe8, 0x68, 0x24, 0xf2, 0x0b, 0x71, 0xb4, 0x09, 0xeb, 0xfc,
+	0xec, 0x47, 0x69, 0xec, 0x33, 0x62, 0x02, 0xdd, 0x85, 0xd7, 0xdb, 0xcf, 0x1b, 0x7b, 0x55, 0xb5,
+	0xd9, 0x50, 0xbe, 0x96, 0xcb, 0xda, 0xec, 0x88, 0xa4, 0xf4, 0x67, 0x02, 0xac, 0xf0, 0xb0, 0x80,
+	0x54, 0xc8, 0xea, 0x3d, 0x1f, 0xbb, 0x9a, 0x6e, 0x59, 0x3c, 0x48, 0x3e, 0x5e, 0x3c, 0xaa, 0x14,
+	0x4b, 0x84, 0xb7, 0x64, 0x59, 0xd5, 0x98, 0xba, 0xaa, 0xf3, 0xdf, 0x11, 0x4c, 0x7b, 0xcc, 0xb3,
+	0x83, 0xe5, 0x31, 0xed, 0xf1, 0x04, 0xd3, 0x1e, 0xa3, 0x03, 0x00, 0x86, 0x89, 0xf5, 0xee, 0x09,
+	0x4f, 0xef, 0x3f, 0x5c, 0x16, 0x54, 0xd6, 0xbb, 0x27, 0xd5, 0x98, 0xca, 0xb4, 0x23, 0x0f, 0xc8,
+	0x82, 0x4d, 0x0e, 0x6b, 0x1b, 0x9a, 0xd3, 0x0b, 0xd6, 0x17, 0x0b, 0xaf, 0x9f, 0x2f, 0x8d, 0x6f,
+	0x1b, 0xcd, 0x1e, 0x5b, 0x88, 0xd5, 0x98, 0x2a, 0xe8, 0x33, 0x34, 0xe4, 0xc3, 0x4d, 0x26, 0x6d,
+	0xa6, 0x68, 0xe2, 0xed, 0xa7, 0x27, 0xcb, 0xca, 0x9b, 0x2f, 0x8e, 0xf4, 0x79, 0x32, 0xfa, 0x45,
+	0x1c, 0x24, 0x26, 0xd6, 0x1b, 0xdb, 0xdd, 0x13, 0xd7, 0xb1, 0xcd, 0xdf, 0xc1, 0xc6, 0x9c, 0x0e,
+	0xec, 0x6c, 0xe4, 0xe9, 0xb2, 0x3a, 0xb4, 0x23, 0x98, 0x73, 0xfa, 0xdc, 0xd1, 0x5f, 0x3c, 0x04,
+	0x3d, 0x83, 0x8c, 0x6e, 0x9d, 0xeb, 0x63, 0x8f, 0xdf, 0x67, 0xdb, 0x5e, 0x46, 0x3c, 0x65, 0xac,
+	0xc6, 0x54, 0x0e, 0x81, 0x1a, 0xb0, 0x62, 0xe0, 0x9e, 0x3e, 0xb2, 0x7c, 0x7e, 0xdf, 0xf0, 0xd1,
+	0x12, 0x68, 0x65, 0xc6, 0x59, 0x8d, 0xa9, 0x01, 0x08, 0xfa, 0x76, 0x52, 0x55, 0x76, 0x9d, 0x91,
+	0xed, 0xf3, 0x3b, 0x87, 0x9f, 0x2c, 0x81, 0x2a, 0x07, 0x7d, 0xa8, 0x91, 0xed, 0x47, 0xca, 0x48,
+	0xfa, 0x8c, 0xaa, 0x90, 0xb6, 0xf1, 0x19, 0x76, 0xf9, 0xb5, 0xc3, 0x0f, 0x96, 0xc0, 0x6d, 0x10,
+	0xbe, 0x6a, 0x4c, 0x65, 0x00, 0x64, 0x75, 0x38, 0xae, 0xd6, 0x33, 0x6d, 0xdd, 0xb2, 0xc6, 0x74,
+	0x77, 0x58, 0x6e, 0x75, 0x34, 0xdd, 0x0a, 0xe3, 0x25, 0xab, 0xc3, 0x09, 0x1e, 0xc8, 0xec, 0xb8,
+	0x78, 0x88, 0xf5, 0xe0, 0x16, 0xe3, 0x32, 0xb3, 0xa3, 0x52, 0x46, 0x32, 0x3b, 0x0c, 0x42, 0xfc,
+	0x0a, 0x56, 0x83, 0x68, 0x81, 0x6a, 0x90, 0xa3, 0xb7, 0xc7, 0xe8, 0xd0, 0xa0, 0x6e, 0x5d, 0x26,
+	0x9b, 0x89, 0xb2, 0x4f, 0x90, 0xed, 0xf1, 0x2b, 0x46, 0x7e, 0x0e, 0xd9, 0x30, 0x70, 0xbc, 0x62,
+	0xe8, 0xbf, 0x89, 0x83, 0x30, 0x1b, 0x34, 0x50, 0x13, 0xd6, 0xb0, 0xee, 0x5a, 0x63, 0xad, 0x67,
+	0xba, 0xa6, 0xdd, 0x0f, 0xae, 0x2c, 0x2e, 0x23, 0x24, 0x4f, 0x01, 0x2a, 0x8c, 0x1f, 0xd5, 0x21,
+	0x4f, 0x92, 0x98, 0x10, 0x2f, 0xb1, 0x34, 0x5e, 0x8e, 0xf0, 0x73, 0x38, 0xf1, 0xe7, 0xb0, 0x79,
+	0x41, 0xe0, 0x41, 0x27, 0x70, 0x23, 0xac, 0x36, 0xb4, 0xb9, 0xff, 0x78, 0x7c, 0xb4, 0x60, 0x6b,
+	0x95, 0xb2, 0x4f, 0x2e, 0xf5, 0x6f, 0xfa, 0x73, 0x34, 0x4f, 0xbc, 0x07, 0x77, 0x5e, 0x12, 0x75,
+	0xc4, 0x2c, 0xac, 0xf0, 0xb5, 0x2c, 0x3e, 0x86, 0x7c, 0x74, 0x01, 0xa2, 0xb7, 0x66, 0x17, 0x34,
+	0x31, 0x6f, 0x7a, 0x7a, 0x55, 0x8a, 0x2b, 0x90, 0xa6, 0xab, 0x4b, 0x5c, 0x85, 0x0c, 0x0b, 0x31,
+	0xe2, 0x9f, 0xc4, 0x21, 0x1b, 0x2e, 0x11, 0xf4, 0x04, 0x52, 0x61, 0xe3, 0x78, 0x39, 0x5b, 0x52,
+	0x3e, 0x92, 0xc6, 0x07, 0x2b, 0x75, 0xf9, 0xe9, 0x08, 0x58, 0xc5, 0x0e, 0x64, 0xd8, 0x12, 0x43,
+	0x4f, 0x01, 0x26, 0x8e, 0x75, 0x05, 0xad, 0x22, 0xdc, 0xbb, 0xd9, 0xb0, 0xc4, 0x90, 0xfe, 0x29,
+	0x11, 0xe9, 0xf5, 0x4c, 0xee, 0x9c, 0xb6, 0x21, 0x6d, 0x60, 0x4b, 0x1f, 0x73, 0x41, 0x9f, 0x5f,
+	0x69, 0x72, 0x8b, 0x65, 0x02, 0x41, 0xe2, 0x17, 0xc5, 0x42, 0x5f, 0xc3, 0xaa, 0x6e, 0x99, 0x7d,
+	0x5b, 0xf3, 0x1d, 0x6e, 0x93, 0x1f, 0x5f, 0x0d, 0xb7, 0x44, 0x50, 0x3a, 0x0e, 0x89, 0xe2, 0x3a,
+	0xfb, 0x29, 0xbe, 0x07, 0x69, 0x2a, 0x0d, 0xdd, 0x83, 0x3c, 0x95, 0xa6, 0x0d, 0x4c, 0xcb, 0x32,
+	0x3d, 0xde, 0x5f, 0xcb, 0x51, 0x5a, 0x9d, 0x92, 0xc4, 0xcf, 0x60, 0x85, 0x23, 0xa0, 0x5b, 0x90,
+	0x19, 0x62, 0xd7, 0x74, 0x58, 0x2d, 0x96, 0x54, 0xf9, 0x13, 0xa1, 0x3b, 0xbd, 0x9e, 0x87, 0x7d,
+	0x9a, 0x24, 0x24, 0x55, 0xfe, 0xb4, 0x7b, 0x13, 0x36, 0x2f, 0x58, 0x03, 0xd2, 0x1f, 0x27, 0x20,
+	0x1b, 0xb6, 0x3d, 0xd0, 0x21, 0x14, 0xf4, 0x2e, 0xbd, 0x78, 0x33, 0xd4, 0x7d, 0x1f, 0xbb, 0xf6,
+	0x55, 0x6f, 0xe6, 0xae, 0x31, 0x98, 0x16, 0x43, 0x41, 0xcf, 0x60, 0xe5, 0xcc, 0xc4, 0xe7, 0xd7,
+	0x3b, 0xc1, 0xc9, 0x10, 0x88, 0x8a, 0x8d, 0xbe, 0x05, 0x7e, 0x6d, 0x5b, 0x1b, 0xe8, 0xc3, 0x21,
+	0xc9, 0x0f, 0x7a, 0x36, 0xcf, 0xb8, 0xae, 0x02, 0xcb, 0x6b, 0xdb, 0x3a, 0xc3, 0xaa, 0xd8, 0xd2,
+	0x1d, 0xc8, 0x45, 0xae, 0x99, 0x20, 0x01, 0x92, 0x23, 0xd7, 0x0a, 0x3a, 0x4b, 0x23, 0xd7, 0x92,
+	0x7e, 0x06, 0xeb, 0x33, 0x20, 0xaf, 0xe6, 0x22, 0xf3, 0x6f, 0x42, 0x21, 0x72, 0xa5, 0x65, 0xd2,
+	0xe1, 0x5f, 0x8b, 0x50, 0x15, 0x43, 0xda, 0x81, 0xfc, 0x94, 0x6c, 0xaa, 0xa0, 0x3d, 0x51, 0xd0,
+	0x46, 0x5b, 0xb0, 0x12, 0xfd, 0xb3, 0x47, 0x5e, 0x0d, 0x1e, 0xa5, 0xff, 0x4a, 0x41, 0x2e, 0x72,
+	0x61, 0x07, 0x29, 0x90, 0x36, 0x7d, 0x1c, 0x86, 0xc2, 0xc7, 0xcb, 0xdd, 0xf7, 0x29, 0x2a, 0x3e,
+	0x1e, 0xa8, 0x0c, 0x41, 0xec, 0x01, 0x28, 0x06, 0xb6, 0x7d, 0xb3, 0x67, 0x62, 0x77, 0x91, 0x9b,
+	0x27, 0x6f, 0xc1, 0xda, 0x64, 0x08, 0xf9, 0x02, 0x7e, 0xa6, 0x16, 0x12, 0x0f, 0x5c, 0x3b, 0xe8,
+	0xeb, 0x25, 0xc3, 0xbe, 0x9e, 0xf8, 0xab, 0x04, 0xa4, 0x88, 0x5c, 0xa4, 0x40, 0x82, 0x03, 0x2f,
+	0x76, 0x9b, 0x7b, 0x4a, 0xf1, 0x50, 0x53, 0x35, 0x61, 0x1a, 0xa8, 0xc6, 0x0f, 0xdc, 0x13, 0x0b,
+	0xb7, 0x19, 0xa2, 0x60, 0x33, 0x47, 0xee, 0xe8, 0xbd, 0xa0, 0xf3, 0xc8, 0x9c, 0xf2, 0x46, 0x91,
+	0xfd, 0x13, 0xb1, 0x18, 0xfc, 0x13, 0xb1, 0x58, 0xb2, 0x83, 0x3f, 0x49, 0xa1, 0x8f, 0x20, 0xe7,
+	0x9d, 0x38, 0xae, 0xcf, 0x9a, 0x45, 0x3c, 0xb1, 0xbf, 0x98, 0x03, 0xe8, 0x40, 0x7a, 0x78, 0x8b,
+	0x6e, 0x40, 0xda, 0xd2, 0x8f, 0xb1, 0xc5, 0xef, 0xd4, 0xb3, 0x07, 0x74, 0x1b, 0x56, 0x2d, 0xd3,
+	0x3e, 0xd5, 0x88, 0xbf, 0x66, 0xd8, 0x01, 0x0f, 0x79, 0x3e, 0x70, 0x2d, 0xf1, 0x67, 0xfc, 0x1a,
+	0xc0, 0xe8, 0x05, 0xd7, 0x00, 0xda, 0x1d, 0x95, 0x55, 0xc2, 0x39, 0x58, 0x51, 0x1a, 0x1d, 0x79,
+	0x5f, 0x56, 0x85, 0x04, 0xca, 0x42, 0xba, 0x52, 0x6b, 0x96, 0x3a, 0x42, 0x92, 0x9d, 0x07, 0x36,
+	0x6b, 0x72, 0xa9, 0x21, 0xa4, 0xd0, 0x5a, 0xb4, 0xc1, 0x97, 0x46, 0x79, 0x58, 0x2d, 0x1f, 0xa8,
+	0x25, 0x7a, 0x49, 0x30, 0x43, 0x2a, 0xc1, 0xa7, 0xa5, 0xc3, 0x92, 0xb6, 0x57, 0x2b, 0xb5, 0xdb,
+	0xc2, 0xca, 0xce, 0x17, 0xb0, 0x4a, 0xff, 0xe3, 0x49, 0xbc, 0xf3, 0xde, 0xdc, 0xd7, 0x11, 0x8d,
+	0xe8, 0x77, 0x35, 0x87, 0xec, 0xbf, 0x91, 0xff, 0xfc, 0xe7, 0x7f, 0xf5, 0x15, 0xd3, 0x9f, 0x70,
+	0x1d, 0xb8, 0xf6, 0xee, 0xe7, 0xf0, 0xf2, 0x7f, 0x83, 0xee, 0x66, 0x55, 0xda, 0x98, 0x2e, 0x0d,
+	0xcd, 0xaf, 0x73, 0x01, 0x5d, 0x3b, 0xdb, 0x3e, 0xce, 0x50, 0x49, 0x8f, 0xff, 0x2f, 0x00, 0x00,
+	0xff, 0xff, 0xef, 0x2d, 0xc1, 0x29, 0x68, 0x3a, 0x00, 0x00,
 }
diff --git a/sdks/go/pkg/beam/model/pipeline_v1/endpoints.pb.go b/sdks/go/pkg/beam/model/pipeline_v1/endpoints.pb.go
index d19e9daaef0..41b404af0fe 100644
--- a/sdks/go/pkg/beam/model/pipeline_v1/endpoints.pb.go
+++ b/sdks/go/pkg/beam/model/pipeline_v1/endpoints.pb.go
@@ -12,6 +12,12 @@ var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
 type ApiServiceDescriptor struct {
 	// (Required) The URL to connect to.
 	Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
@@ -21,15 +27,39 @@ type ApiServiceDescriptor struct {
 	//
 	// Types that are valid to be assigned to Authentication:
 	//	*ApiServiceDescriptor_Oauth2ClientCredentialsGrant
-	Authentication isApiServiceDescriptor_Authentication `protobuf_oneof:"authentication"`
+	Authentication       isApiServiceDescriptor_Authentication `protobuf_oneof:"authentication"`
+	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
+	XXX_unrecognized     []byte                                `json:"-"`
+	XXX_sizecache        int32                                 `json:"-"`
+}
+
+func (m *ApiServiceDescriptor) Reset()         { *m = ApiServiceDescriptor{} }
+func (m *ApiServiceDescriptor) String() string { return proto.CompactTextString(m) }
+func (*ApiServiceDescriptor) ProtoMessage()    {}
+func (*ApiServiceDescriptor) Descriptor() ([]byte, []int) {
+	return fileDescriptor_endpoints_09141d845209a85b, []int{0}
+}
+func (m *ApiServiceDescriptor) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ApiServiceDescriptor.Unmarshal(m, b)
+}
+func (m *ApiServiceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ApiServiceDescriptor.Marshal(b, m, deterministic)
+}
+func (dst *ApiServiceDescriptor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ApiServiceDescriptor.Merge(dst, src)
+}
+func (m *ApiServiceDescriptor) XXX_Size() int {
+	return xxx_messageInfo_ApiServiceDescriptor.Size(m)
+}
+func (m *ApiServiceDescriptor) XXX_DiscardUnknown() {
+	xxx_messageInfo_ApiServiceDescriptor.DiscardUnknown(m)
 }
 
-func (m *ApiServiceDescriptor) Reset()                    { *m = ApiServiceDescriptor{} }
-func (m *ApiServiceDescriptor) String() string            { return proto.CompactTextString(m) }
-func (*ApiServiceDescriptor) ProtoMessage()               {}
-func (*ApiServiceDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+var xxx_messageInfo_ApiServiceDescriptor proto.InternalMessageInfo
 
-type isApiServiceDescriptor_Authentication interface{ isApiServiceDescriptor_Authentication() }
+type isApiServiceDescriptor_Authentication interface {
+	isApiServiceDescriptor_Authentication()
+}
 
 type ApiServiceDescriptor_Oauth2ClientCredentialsGrant struct {
 	Oauth2ClientCredentialsGrant *OAuth2ClientCredentialsGrant `protobuf:"bytes,3,opt,name=oauth2_client_credentials_grant,json=oauth2ClientCredentialsGrant,oneof"`
@@ -103,7 +133,7 @@ func _ApiServiceDescriptor_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Authentication.(type) {
 	case *ApiServiceDescriptor_Oauth2ClientCredentialsGrant:
 		s := proto.Size(x.Oauth2ClientCredentialsGrant)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -116,13 +146,35 @@ func _ApiServiceDescriptor_OneofSizer(msg proto.Message) (n int) {
 type OAuth2ClientCredentialsGrant struct {
 	// (Required) The URL to submit a "client_credentials" grant type request for
 	// an OAuth access token which will be used as a bearer token for requests.
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url                  string   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OAuth2ClientCredentialsGrant) Reset()         { *m = OAuth2ClientCredentialsGrant{} }
+func (m *OAuth2ClientCredentialsGrant) String() string { return proto.CompactTextString(m) }
+func (*OAuth2ClientCredentialsGrant) ProtoMessage()    {}
+func (*OAuth2ClientCredentialsGrant) Descriptor() ([]byte, []int) {
+	return fileDescriptor_endpoints_09141d845209a85b, []int{1}
+}
+func (m *OAuth2ClientCredentialsGrant) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OAuth2ClientCredentialsGrant.Unmarshal(m, b)
+}
+func (m *OAuth2ClientCredentialsGrant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OAuth2ClientCredentialsGrant.Marshal(b, m, deterministic)
+}
+func (dst *OAuth2ClientCredentialsGrant) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OAuth2ClientCredentialsGrant.Merge(dst, src)
+}
+func (m *OAuth2ClientCredentialsGrant) XXX_Size() int {
+	return xxx_messageInfo_OAuth2ClientCredentialsGrant.Size(m)
+}
+func (m *OAuth2ClientCredentialsGrant) XXX_DiscardUnknown() {
+	xxx_messageInfo_OAuth2ClientCredentialsGrant.DiscardUnknown(m)
 }
 
-func (m *OAuth2ClientCredentialsGrant) Reset()                    { *m = OAuth2ClientCredentialsGrant{} }
-func (m *OAuth2ClientCredentialsGrant) String() string            { return proto.CompactTextString(m) }
-func (*OAuth2ClientCredentialsGrant) ProtoMessage()               {}
-func (*OAuth2ClientCredentialsGrant) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+var xxx_messageInfo_OAuth2ClientCredentialsGrant proto.InternalMessageInfo
 
 func (m *OAuth2ClientCredentialsGrant) GetUrl() string {
 	if m != nil {
@@ -136,9 +188,9 @@ func init() {
 	proto.RegisterType((*OAuth2ClientCredentialsGrant)(nil), "org.apache.beam.model.pipeline.v1.OAuth2ClientCredentialsGrant")
 }
 
-func init() { proto.RegisterFile("endpoints.proto", fileDescriptor1) }
+func init() { proto.RegisterFile("endpoints.proto", fileDescriptor_endpoints_09141d845209a85b) }
 
-var fileDescriptor1 = []byte{
+var fileDescriptor_endpoints_09141d845209a85b = []byte{
 	// 235 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xb1, 0x4a, 0x03, 0x41,
 	0x10, 0x86, 0x5d, 0x03, 0x42, 0x36, 0xa0, 0xe1, 0xb0, 0x48, 0x11, 0x30, 0xa6, 0x4a, 0xb5, 0x98,
diff --git a/sdks/go/pkg/beam/model/pipeline_v1/standard_window_fns.pb.go b/sdks/go/pkg/beam/model/pipeline_v1/standard_window_fns.pb.go
index c2773437538..a74c2095dce 100644
--- a/sdks/go/pkg/beam/model/pipeline_v1/standard_window_fns.pb.go
+++ b/sdks/go/pkg/beam/model/pipeline_v1/standard_window_fns.pb.go
@@ -6,14 +6,20 @@ package pipeline_v1
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
-import google_protobuf2 "github.com/golang/protobuf/ptypes/duration"
-import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp"
+import duration "github.com/golang/protobuf/ptypes/duration"
+import timestamp "github.com/golang/protobuf/ptypes/timestamp"
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
 type GlobalWindowsPayload_Enum int32
 
 const (
@@ -31,7 +37,9 @@ var GlobalWindowsPayload_Enum_value = map[string]int32{
 func (x GlobalWindowsPayload_Enum) String() string {
 	return proto.EnumName(GlobalWindowsPayload_Enum_name, int32(x))
 }
-func (GlobalWindowsPayload_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} }
+func (GlobalWindowsPayload_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{0, 0}
+}
 
 type FixedWindowsPayload_Enum int32
 
@@ -50,7 +58,9 @@ var FixedWindowsPayload_Enum_value = map[string]int32{
 func (x FixedWindowsPayload_Enum) String() string {
 	return proto.EnumName(FixedWindowsPayload_Enum_name, int32(x))
 }
-func (FixedWindowsPayload_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1, 0} }
+func (FixedWindowsPayload_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{1, 0}
+}
 
 type SlidingWindowsPayload_Enum int32
 
@@ -70,7 +80,7 @@ func (x SlidingWindowsPayload_Enum) String() string {
 	return proto.EnumName(SlidingWindowsPayload_Enum_name, int32(x))
 }
 func (SlidingWindowsPayload_Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor2, []int{2, 0}
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{2, 0}
 }
 
 type SessionsPayload_Enum int32
@@ -90,34 +100,80 @@ var SessionsPayload_Enum_value = map[string]int32{
 func (x SessionsPayload_Enum) String() string {
 	return proto.EnumName(SessionsPayload_Enum_name, int32(x))
 }
-func (SessionsPayload_Enum) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{3, 0} }
+func (SessionsPayload_Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{3, 0}
+}
 
 type GlobalWindowsPayload struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *GlobalWindowsPayload) Reset()                    { *m = GlobalWindowsPayload{} }
-func (m *GlobalWindowsPayload) String() string            { return proto.CompactTextString(m) }
-func (*GlobalWindowsPayload) ProtoMessage()               {}
-func (*GlobalWindowsPayload) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
+func (m *GlobalWindowsPayload) Reset()         { *m = GlobalWindowsPayload{} }
+func (m *GlobalWindowsPayload) String() string { return proto.CompactTextString(m) }
+func (*GlobalWindowsPayload) ProtoMessage()    {}
+func (*GlobalWindowsPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{0}
+}
+func (m *GlobalWindowsPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GlobalWindowsPayload.Unmarshal(m, b)
+}
+func (m *GlobalWindowsPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GlobalWindowsPayload.Marshal(b, m, deterministic)
+}
+func (dst *GlobalWindowsPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GlobalWindowsPayload.Merge(dst, src)
+}
+func (m *GlobalWindowsPayload) XXX_Size() int {
+	return xxx_messageInfo_GlobalWindowsPayload.Size(m)
+}
+func (m *GlobalWindowsPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_GlobalWindowsPayload.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GlobalWindowsPayload proto.InternalMessageInfo
 
 type FixedWindowsPayload struct {
-	Size   *google_protobuf2.Duration  `protobuf:"bytes,1,opt,name=size" json:"size,omitempty"`
-	Offset *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
+	Size                 *duration.Duration   `protobuf:"bytes,1,opt,name=size" json:"size,omitempty"`
+	Offset               *timestamp.Timestamp `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *FixedWindowsPayload) Reset()         { *m = FixedWindowsPayload{} }
+func (m *FixedWindowsPayload) String() string { return proto.CompactTextString(m) }
+func (*FixedWindowsPayload) ProtoMessage()    {}
+func (*FixedWindowsPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{1}
+}
+func (m *FixedWindowsPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FixedWindowsPayload.Unmarshal(m, b)
+}
+func (m *FixedWindowsPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FixedWindowsPayload.Marshal(b, m, deterministic)
+}
+func (dst *FixedWindowsPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FixedWindowsPayload.Merge(dst, src)
+}
+func (m *FixedWindowsPayload) XXX_Size() int {
+	return xxx_messageInfo_FixedWindowsPayload.Size(m)
+}
+func (m *FixedWindowsPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_FixedWindowsPayload.DiscardUnknown(m)
 }
 
-func (m *FixedWindowsPayload) Reset()                    { *m = FixedWindowsPayload{} }
-func (m *FixedWindowsPayload) String() string            { return proto.CompactTextString(m) }
-func (*FixedWindowsPayload) ProtoMessage()               {}
-func (*FixedWindowsPayload) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
+var xxx_messageInfo_FixedWindowsPayload proto.InternalMessageInfo
 
-func (m *FixedWindowsPayload) GetSize() *google_protobuf2.Duration {
+func (m *FixedWindowsPayload) GetSize() *duration.Duration {
 	if m != nil {
 		return m.Size
 	}
 	return nil
 }
 
-func (m *FixedWindowsPayload) GetOffset() *google_protobuf3.Timestamp {
+func (m *FixedWindowsPayload) GetOffset() *timestamp.Timestamp {
 	if m != nil {
 		return m.Offset
 	}
@@ -125,31 +181,53 @@ func (m *FixedWindowsPayload) GetOffset() *google_protobuf3.Timestamp {
 }
 
 type SlidingWindowsPayload struct {
-	Size   *google_protobuf2.Duration  `protobuf:"bytes,1,opt,name=size" json:"size,omitempty"`
-	Offset *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
-	Period *google_protobuf2.Duration  `protobuf:"bytes,3,opt,name=period" json:"period,omitempty"`
+	Size                 *duration.Duration   `protobuf:"bytes,1,opt,name=size" json:"size,omitempty"`
+	Offset               *timestamp.Timestamp `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
+	Period               *duration.Duration   `protobuf:"bytes,3,opt,name=period" json:"period,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
 }
 
-func (m *SlidingWindowsPayload) Reset()                    { *m = SlidingWindowsPayload{} }
-func (m *SlidingWindowsPayload) String() string            { return proto.CompactTextString(m) }
-func (*SlidingWindowsPayload) ProtoMessage()               {}
-func (*SlidingWindowsPayload) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
+func (m *SlidingWindowsPayload) Reset()         { *m = SlidingWindowsPayload{} }
+func (m *SlidingWindowsPayload) String() string { return proto.CompactTextString(m) }
+func (*SlidingWindowsPayload) ProtoMessage()    {}
+func (*SlidingWindowsPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{2}
+}
+func (m *SlidingWindowsPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SlidingWindowsPayload.Unmarshal(m, b)
+}
+func (m *SlidingWindowsPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SlidingWindowsPayload.Marshal(b, m, deterministic)
+}
+func (dst *SlidingWindowsPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SlidingWindowsPayload.Merge(dst, src)
+}
+func (m *SlidingWindowsPayload) XXX_Size() int {
+	return xxx_messageInfo_SlidingWindowsPayload.Size(m)
+}
+func (m *SlidingWindowsPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_SlidingWindowsPayload.DiscardUnknown(m)
+}
 
-func (m *SlidingWindowsPayload) GetSize() *google_protobuf2.Duration {
+var xxx_messageInfo_SlidingWindowsPayload proto.InternalMessageInfo
+
+func (m *SlidingWindowsPayload) GetSize() *duration.Duration {
 	if m != nil {
 		return m.Size
 	}
 	return nil
 }
 
-func (m *SlidingWindowsPayload) GetOffset() *google_protobuf3.Timestamp {
+func (m *SlidingWindowsPayload) GetOffset() *timestamp.Timestamp {
 	if m != nil {
 		return m.Offset
 	}
 	return nil
 }
 
-func (m *SlidingWindowsPayload) GetPeriod() *google_protobuf2.Duration {
+func (m *SlidingWindowsPayload) GetPeriod() *duration.Duration {
 	if m != nil {
 		return m.Period
 	}
@@ -157,15 +235,37 @@ func (m *SlidingWindowsPayload) GetPeriod() *google_protobuf2.Duration {
 }
 
 type SessionsPayload struct {
-	GapSize *google_protobuf2.Duration `protobuf:"bytes,1,opt,name=gap_size,json=gapSize" json:"gap_size,omitempty"`
+	GapSize              *duration.Duration `protobuf:"bytes,1,opt,name=gap_size,json=gapSize" json:"gap_size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
 }
 
-func (m *SessionsPayload) Reset()                    { *m = SessionsPayload{} }
-func (m *SessionsPayload) String() string            { return proto.CompactTextString(m) }
-func (*SessionsPayload) ProtoMessage()               {}
-func (*SessionsPayload) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
+func (m *SessionsPayload) Reset()         { *m = SessionsPayload{} }
+func (m *SessionsPayload) String() string { return proto.CompactTextString(m) }
+func (*SessionsPayload) ProtoMessage()    {}
+func (*SessionsPayload) Descriptor() ([]byte, []int) {
+	return fileDescriptor_standard_window_fns_fd35e1520ea21389, []int{3}
+}
+func (m *SessionsPayload) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SessionsPayload.Unmarshal(m, b)
+}
+func (m *SessionsPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SessionsPayload.Marshal(b, m, deterministic)
+}
+func (dst *SessionsPayload) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SessionsPayload.Merge(dst, src)
+}
+func (m *SessionsPayload) XXX_Size() int {
+	return xxx_messageInfo_SessionsPayload.Size(m)
+}
+func (m *SessionsPayload) XXX_DiscardUnknown() {
+	xxx_messageInfo_SessionsPayload.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SessionsPayload proto.InternalMessageInfo
 
-func (m *SessionsPayload) GetGapSize() *google_protobuf2.Duration {
+func (m *SessionsPayload) GetGapSize() *duration.Duration {
 	if m != nil {
 		return m.GapSize
 	}
@@ -183,9 +283,11 @@ func init() {
 	proto.RegisterEnum("org.apache.beam.model.pipeline.v1.SessionsPayload_Enum", SessionsPayload_Enum_name, SessionsPayload_Enum_value)
 }
 
-func init() { proto.RegisterFile("standard_window_fns.proto", fileDescriptor2) }
+func init() {
+	proto.RegisterFile("standard_window_fns.proto", fileDescriptor_standard_window_fns_fd35e1520ea21389)
+}
 
-var fileDescriptor2 = []byte{
+var fileDescriptor_standard_window_fns_fd35e1520ea21389 = []byte{
 	// 407 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x93, 0x31, 0x4f, 0xdb, 0x40,
 	0x14, 0xc7, 0xeb, 0x36, 0x4d, 0xab, 0xcb, 0xd0, 0xd6, 0x6d, 0xa4, 0xc4, 0x43, 0x9b, 0x78, 0x68,
diff --git a/sdks/python/apache_beam/runners/portability/local_job_service.py b/sdks/python/apache_beam/runners/portability/local_job_service.py
index 7e46deabee8..962c2b466e5 100644
--- a/sdks/python/apache_beam/runners/portability/local_job_service.py
+++ b/sdks/python/apache_beam/runners/portability/local_job_service.py
@@ -87,7 +87,10 @@ def Prepare(self, request, context=None):
         use_grpc=self._use_grpc,
         sdk_harness_factory=sdk_harness_factory)
     logging.debug("Prepared job '%s' as '%s'", request.job_name, preparation_id)
-    return beam_job_api_pb2.PrepareJobResponse(preparation_id=preparation_id)
+    # TODO(angoenka): Pass an appropriate staging_session_token. The token can
+    # be obtained in PutArtifactResponse from JobService
+    return beam_job_api_pb2.PrepareJobResponse(
+        preparation_id=preparation_id, staging_session_token='token')
 
   def Run(self, request, context=None):
     job_id = request.preparation_id
diff --git a/sdks/python/apache_beam/runners/portability/portable_stager.py b/sdks/python/apache_beam/runners/portability/portable_stager.py
index 7113a251f24..f556811425b 100644
--- a/sdks/python/apache_beam/runners/portability/portable_stager.py
+++ b/sdks/python/apache_beam/runners/portability/portable_stager.py
@@ -38,17 +38,21 @@ class PortableStager(Stager):
   thread safety.
   """
 
-  def __init__(self, artifact_service_channel):
+  def __init__(self, artifact_service_channel, staging_session_token):
     """Creates a new Stager to stage file to ArtifactStagingService.
 
     Args:
       artifact_service_channel: Channel used to interact with
-        ArtifactStagingService.User owns the channel and should close it when
+        ArtifactStagingService. User owns the channel and should close it when
         finished.
+      staging_session_token: A token to stage artifacts on
+        ArtifactStagingService. The token is provided by the JobService prepare
+        call.
     """
     super(PortableStager, self).__init__()
     self._artifact_staging_stub = beam_artifact_api_pb2_grpc.\
         ArtifactStagingServiceStub(channel=artifact_service_channel)
+    self._staging_session_token = staging_session_token
     self._artifacts = []
 
   def stage_artifact(self, local_path_to_artifact, artifact_name):
@@ -64,7 +68,11 @@ def stage_artifact(self, local_path_to_artifact, artifact_name):
           .format(local_path_to_artifact))
 
     def artifact_request_generator():
-      metadata = beam_artifact_api_pb2.ArtifactMetadata(name=artifact_name)
+      artifact_metadata = beam_artifact_api_pb2.ArtifactMetadata(
+          name=artifact_name)
+      metadata = beam_artifact_api_pb2.PutArtifactMetadata(
+          staging_session_token=self._staging_session_token,
+          metadata=artifact_metadata)
       request = beam_artifact_api_pb2.PutArtifactRequest(metadata=metadata)
       yield request
       with open(local_path_to_artifact, 'rb') as f:
@@ -75,7 +83,7 @@ def artifact_request_generator():
           request = beam_artifact_api_pb2.PutArtifactRequest(
               data=beam_artifact_api_pb2.ArtifactChunk(data=chunk))
           yield request
-      self._artifacts.append(metadata)
+      self._artifacts.append(artifact_metadata)
 
     self._artifact_staging_stub.PutArtifact(artifact_request_generator())
 
@@ -83,4 +91,6 @@ def commit_manifest(self):
     manifest = beam_artifact_api_pb2.Manifest(artifact=self._artifacts)
     self._artifacts = []
     self._artifact_staging_stub.CommitManifest(
-        beam_artifact_api_pb2.CommitManifestRequest(manifest=manifest))
+        beam_artifact_api_pb2.CommitManifestRequest(
+            manifest=manifest,
+            staging_session_token=self._staging_session_token))
diff --git a/sdks/python/apache_beam/runners/portability/portable_stager_test.py b/sdks/python/apache_beam/runners/portability/portable_stager_test.py
index 181007de5f0..4ce39794217 100644
--- a/sdks/python/apache_beam/runners/portability/portable_stager_test.py
+++ b/sdks/python/apache_beam/runners/portability/portable_stager_test.py
@@ -64,13 +64,15 @@ def _stage_files(self, files):
     test_port = server.add_insecure_port('[::]:0')
     server.start()
     stager = portable_stager.PortableStager(
-        grpc.insecure_channel('localhost:%s' % test_port))
+        artifact_service_channel=grpc.insecure_channel(
+            'localhost:%s' % test_port),
+        staging_session_token='token')
     for from_file, to_file in files:
       stager.stage_artifact(
           local_path_to_artifact=os.path.join(self._temp_dir, from_file),
           artifact_name=to_file)
     stager.commit_manifest()
-    return staging_service.manifest.artifact
+    return staging_service.manifest.artifact, staging_service.staging_tokens
 
   def test_stage_single_file(self):
     from_file = 'test_local.txt'
@@ -79,7 +81,8 @@ def test_stage_single_file(self):
     with open(os.path.join(self._temp_dir, from_file), 'wb') as f:
       f.write(b'abc')
 
-    copied_files = self._stage_files([('test_local.txt', 'test_remote.txt')])
+    copied_files, staging_tokens = self._stage_files([('test_local.txt',
+                                                       'test_remote.txt')])
     self.assertTrue(
         filecmp.cmp(
             os.path.join(self._temp_dir, from_file),
@@ -87,6 +90,7 @@ def test_stage_single_file(self):
     self.assertEqual(
         [to_file],
         [staged_file_metadata.name for staged_file_metadata in copied_files])
+    self.assertEqual(staging_tokens, frozenset(['token']))
 
   def test_stage_multiple_files(self):
 
@@ -116,7 +120,7 @@ def test_stage_multiple_files(self):
             buffering=2 << 22) as f:
           f.write(''.join(chars))
 
-    copied_files = self._stage_files(
+    copied_files, staging_tokens = self._stage_files(
         [(from_file, to_file) for (from_file, to_file, _, _) in files])
 
     for from_file, to_file, _, _ in files:
@@ -129,6 +133,7 @@ def test_stage_multiple_files(self):
     self.assertEqual([to_file for _, to_file, _, _ in files].sort(), [
         staged_file_metadata.name for staged_file_metadata in copied_files
     ].sort())
+    self.assertEqual(staging_tokens, frozenset(['token']))
 
 
 class TestLocalFileSystemArtifactStagingServiceServicer(
@@ -138,6 +143,7 @@ def __init__(self, temp_dir):
     super(TestLocalFileSystemArtifactStagingServiceServicer, self).__init__()
     self.temp_dir = temp_dir
     self.manifest = None
+    self.staging_tokens = set()
 
   def PutArtifact(self, request_iterator, context):
     first = True
@@ -145,7 +151,8 @@ def PutArtifact(self, request_iterator, context):
     for request in request_iterator:
       if first:
         first = False
-        file_name = request.metadata.name
+        self.staging_tokens.add(request.metadata.staging_session_token)
+        file_name = request.metadata.metadata.name
       else:
         with open(os.path.join(self.temp_dir, file_name), 'ab') as f:
           f.write(request.data.data)
@@ -154,6 +161,7 @@ def PutArtifact(self, request_iterator, context):
 
   def CommitManifest(self, request, context):
     self.manifest = request.manifest
+    self.staging_tokens.add(request.staging_session_token)
     return beam_artifact_api_pb2.CommitManifestResponse(staging_token='token')
 
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 108791)
    Time Spent: 7h 20m  (was: 7h 10m)

> ArtifactStagingService that stages to a distributed filesystem
> --------------------------------------------------------------
>
>                 Key: BEAM-4290
>                 URL: https://issues.apache.org/jira/browse/BEAM-4290
>             Project: Beam
>          Issue Type: Sub-task
>          Components: runner-core
>            Reporter: Eugene Kirpichov
>            Assignee: Ankur Goenka
>            Priority: Major
>          Time Spent: 7h 20m
>  Remaining Estimate: 0h
>
> Using the job's staging directory from PipelineOptions.
> Physical layout on the distributed filesystem is TBD but it should allow for arbitrary filenames and ideally for eventually avoiding uploading artifacts that are already there.
> Handling credentials is TBD.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message