diff --git a/Makefile b/Makefile
index 3e563f6..df5d4a4 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,13 @@ regenerate:
 	google/api/annotations.proto \
 	google/api/client.proto
 
+	protoc \
+	--gogogoogleapis_out=\
+	Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,\
+	:. \
+	-I=. \
+	google/api/httpbody.proto
+
 	protoc \
 	--gogogoogleapis_out=\
 	Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,\
@@ -114,6 +121,12 @@ update:
 		'option go_package = "api";' \
 		./google/api/http.proto
 
+	(cd ./google/api && rm httpbody.proto; wget ${URL}/google/api/httpbody.proto)
+	gogoreplace \
+		'option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";' \
+		'option go_package = "api";' \
+		./google/api/httpbody.proto
+
 	(cd ./google/api && rm annotations.proto; wget ${URL}/google/api/annotations.proto)
 	gogoreplace \
 		'option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";' \
diff --git a/debian/changelog b/debian/changelog
index 0dc8feb..fa0c542 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,10 @@
-golang-github-gogo-googleapis (1.4.0-2) UNRELEASED; urgency=low
+golang-github-gogo-googleapis (1.4.1-1) UNRELEASED; urgency=low
 
   * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository,
     Repository-Browse.
+  * New upstream release.
 
- -- Debian Janitor <janitor@jelmer.uk>  Sun, 07 Jun 2020 07:53:21 -0000
+ -- Debian Janitor <janitor@jelmer.uk>  Tue, 26 Apr 2022 14:44:55 -0000
 
 golang-github-gogo-googleapis (1.4.0-1) unstable; urgency=medium
 
diff --git a/debian/patches/make.patch b/debian/patches/make.patch
index 6966604..32da60d 100644
--- a/debian/patches/make.patch
+++ b/debian/patches/make.patch
@@ -3,9 +3,11 @@ Forwarded: not-needed
 Author: Dmitry Smirnov <onlyjob@debian.org>
 Description: adjust Makefile to regenerate on build-time.
 
---- a/Makefile
-+++ b/Makefile
-@@ -1,9 +1,7 @@
+Index: golang-github-gogo-googleapis/Makefile
+===================================================================
+--- golang-github-gogo-googleapis.orig/Makefile
++++ golang-github-gogo-googleapis/Makefile
+@@ -1,8 +1,6 @@
  URL="https://raw.githubusercontent.com/googleapis/googleapis/master/"
  
  regenerate:
@@ -14,4 +16,3 @@ Description: adjust Makefile to regenerate on build-time.
  	protoc \
  	--gogogoogleapis_out=\
  	Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,\
- 	Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,\
diff --git a/go.mod b/go.mod
index 89be4cf..72d7cbf 100644
--- a/go.mod
+++ b/go.mod
@@ -2,4 +2,4 @@ module github.com/gogo/googleapis
 
 go 1.12
 
-require github.com/gogo/protobuf v1.3.1
+require github.com/gogo/protobuf v1.3.2
diff --git a/go.sum b/go.sum
index 92a3c96..faf43b7 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,31 @@
-github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
-github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/google/api/client.proto b/google/api/client.proto
index 8ad9d56..4f5bbee 100644
--- a/google/api/client.proto
+++ b/google/api/client.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/api/expr/v1alpha1/syntax.pb.go b/google/api/expr/v1alpha1/syntax.pb.go
index 5cb97db..c3cbf72 100644
--- a/google/api/expr/v1alpha1/syntax.pb.go
+++ b/google/api/expr/v1alpha1/syntax.pb.go
@@ -4995,10 +4995,7 @@ func (m *ParsedExpr) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5313,10 +5310,7 @@ func (m *Expr) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5399,10 +5393,7 @@ func (m *Expr_Ident) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5541,10 +5532,7 @@ func (m *Expr_Select) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5697,10 +5685,7 @@ func (m *Expr_Call) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5785,10 +5770,7 @@ func (m *Expr_CreateList) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -5905,10 +5887,7 @@ func (m *Expr_CreateStruct) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -6081,10 +6060,7 @@ func (m *Expr_CreateStruct_Entry) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -6379,10 +6355,7 @@ func (m *Expr_Comprehension) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -6660,10 +6633,7 @@ func (m *Constant) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -6936,7 +6906,7 @@ func (m *SourceInfo) Unmarshal(dAtA []byte) error {
 					if err != nil {
 						return err
 					}
-					if skippy < 0 {
+					if (skippy < 0) || (iNdEx+skippy) < 0 {
 						return ErrInvalidLengthSyntax
 					}
 					if (iNdEx + skippy) > postIndex {
@@ -7051,7 +7021,7 @@ func (m *SourceInfo) Unmarshal(dAtA []byte) error {
 					if err != nil {
 						return err
 					}
-					if skippy < 0 {
+					if (skippy < 0) || (iNdEx+skippy) < 0 {
 						return ErrInvalidLengthSyntax
 					}
 					if (iNdEx + skippy) > postIndex {
@@ -7068,10 +7038,7 @@ func (m *SourceInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
@@ -7211,10 +7178,7 @@ func (m *SourcePosition) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthSyntax
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthSyntax
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/api/expr/v1alpha1/value.pb.go b/google/api/expr/v1alpha1/value.pb.go
index 15b82fc..8292fa2 100644
--- a/google/api/expr/v1alpha1/value.pb.go
+++ b/google/api/expr/v1alpha1/value.pb.go
@@ -2595,10 +2595,7 @@ func (m *Value) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthValue
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthValue
 			}
 			if (iNdEx + skippy) > l {
@@ -2700,10 +2697,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthValue
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthValue
 			}
 			if (iNdEx + skippy) > l {
@@ -2788,10 +2782,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthValue
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthValue
 			}
 			if (iNdEx + skippy) > l {
@@ -2876,10 +2867,7 @@ func (m *MapValue) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthValue
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthValue
 			}
 			if (iNdEx + skippy) > l {
@@ -3002,10 +2990,7 @@ func (m *MapValue_Entry) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthValue
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthValue
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/api/http.pb.go b/google/api/http.pb.go
index 05525e4..101a39d 100644
--- a/google/api/http.pb.go
+++ b/google/api/http.pb.go
@@ -1802,10 +1802,7 @@ func (m *Http) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthHttp
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthHttp
 			}
 			if (iNdEx + skippy) > l {
@@ -2181,10 +2178,7 @@ func (m *HttpRule) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthHttp
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthHttp
 			}
 			if (iNdEx + skippy) > l {
@@ -2299,10 +2293,7 @@ func (m *CustomHttpPattern) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthHttp
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthHttp
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/api/http.proto b/google/api/http.proto
index 3b9824a..7ecc64e 100644
--- a/google/api/http.proto
+++ b/google/api/http.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/api/httpbody.pb.go b/google/api/httpbody.pb.go
new file mode 100644
index 0000000..e25f6b9
--- /dev/null
+++ b/google/api/httpbody.pb.go
@@ -0,0 +1,727 @@
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
+// source: google/api/httpbody.proto
+
+package api
+
+import (
+	bytes "bytes"
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	types "github.com/gogo/protobuf/types"
+	io "io"
+	math "math"
+	math_bits "math/bits"
+	reflect "reflect"
+	strings "strings"
+)
+
+// 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.GoGoProtoPackageIsVersion3 // please upgrade the proto package
+
+// Message that represents an arbitrary HTTP body. It should only be used for
+// payload formats that can't be represented as JSON, such as raw binary or
+// an HTML page.
+//
+//
+// This message can be used both in streaming and non-streaming API methods in
+// the request as well as the response.
+//
+// It can be used as a top-level request field, which is convenient if one
+// wants to extract parameters from either the URL or HTTP template into the
+// request fields and also want access to the raw HTTP body.
+//
+// Example:
+//
+//     message GetResourceRequest {
+//       // A unique request id.
+//       string request_id = 1;
+//
+//       // The raw HTTP body is bound to this field.
+//       google.api.HttpBody http_body = 2;
+//     }
+//
+//     service ResourceService {
+//       rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);
+//       rpc UpdateResource(google.api.HttpBody) returns
+//       (google.protobuf.Empty);
+//     }
+//
+// Example with streaming methods:
+//
+//     service CaldavService {
+//       rpc GetCalendar(stream google.api.HttpBody)
+//         returns (stream google.api.HttpBody);
+//       rpc UpdateCalendar(stream google.api.HttpBody)
+//         returns (stream google.api.HttpBody);
+//     }
+//
+// Use of this type only changes how the request and response bodies are
+// handled, all other features will continue to work unchanged.
+type HttpBody struct {
+	// The HTTP Content-Type header value specifying the content type of the body.
+	ContentType string `protobuf:"bytes,1,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"`
+	// The HTTP request/response body as raw binary.
+	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	// Application specific response metadata. Must be set in the first response
+	// for streaming APIs.
+	Extensions           []*types.Any `protobuf:"bytes,3,rep,name=extensions,proto3" json:"extensions,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *HttpBody) Reset()      { *m = HttpBody{} }
+func (*HttpBody) ProtoMessage() {}
+func (*HttpBody) Descriptor() ([]byte, []int) {
+	return fileDescriptor_09ea2ecaa32a0070, []int{0}
+}
+func (m *HttpBody) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *HttpBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_HttpBody.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalToSizedBuffer(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *HttpBody) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HttpBody.Merge(m, src)
+}
+func (m *HttpBody) XXX_Size() int {
+	return m.Size()
+}
+func (m *HttpBody) XXX_DiscardUnknown() {
+	xxx_messageInfo_HttpBody.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HttpBody proto.InternalMessageInfo
+
+func (m *HttpBody) GetContentType() string {
+	if m != nil {
+		return m.ContentType
+	}
+	return ""
+}
+
+func (m *HttpBody) GetData() []byte {
+	if m != nil {
+		return m.Data
+	}
+	return nil
+}
+
+func (m *HttpBody) GetExtensions() []*types.Any {
+	if m != nil {
+		return m.Extensions
+	}
+	return nil
+}
+
+func (*HttpBody) XXX_MessageName() string {
+	return "google.api.HttpBody"
+}
+func init() {
+	proto.RegisterType((*HttpBody)(nil), "google.api.HttpBody")
+}
+
+func init() { proto.RegisterFile("google/api/httpbody.proto", fileDescriptor_09ea2ecaa32a0070) }
+
+var fileDescriptor_09ea2ecaa32a0070 = []byte{
+	// 253 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0xcf, 0x28, 0x29, 0x29, 0x48, 0xca, 0x4f, 0xa9, 0xd4,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0x48, 0xe9, 0x25, 0x16, 0x64, 0x4a, 0xc1, 0x94,
+	0x81, 0x65, 0x92, 0x4a, 0xd3, 0xf4, 0x13, 0xf3, 0xa0, 0xca, 0x94, 0xca, 0xb9, 0x38, 0x3c, 0x4a,
+	0x4a, 0x0a, 0x9c, 0xf2, 0x53, 0x2a, 0x85, 0x14, 0xb9, 0x78, 0x92, 0xf3, 0xf3, 0x4a, 0x52, 0xf3,
+	0x4a, 0xe2, 0x4b, 0x2a, 0x0b, 0x52, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xb8, 0xa1, 0x62,
+	0x21, 0x95, 0x05, 0xa9, 0x42, 0x42, 0x5c, 0x2c, 0x29, 0x89, 0x25, 0x89, 0x12, 0x4c, 0x0a, 0x8c,
+	0x1a, 0x3c, 0x41, 0x60, 0xb6, 0x90, 0x09, 0x17, 0x57, 0x6a, 0x45, 0x49, 0x6a, 0x5e, 0x71, 0x66,
+	0x7e, 0x5e, 0xb1, 0x04, 0xb3, 0x02, 0xb3, 0x06, 0xb7, 0x91, 0x88, 0x1e, 0xd4, 0x7a, 0x98, 0x95,
+	0x7a, 0x8e, 0x79, 0x95, 0x41, 0x48, 0xea, 0x9c, 0x12, 0x6e, 0x3c, 0x94, 0x63, 0xf8, 0xf0, 0x50,
+	0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78,
+	0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, 0x1e, 0xc9, 0x31, 0x7c,
+	0x00, 0x89, 0x3f, 0x96, 0x63, 0x3c, 0xf1, 0x58, 0x8e, 0x91, 0x8b, 0x2f, 0x39, 0x3f, 0x57, 0x0f,
+	0xe1, 0x2b, 0x27, 0x5e, 0x98, 0xc3, 0x03, 0x40, 0x76, 0x04, 0x30, 0x46, 0x31, 0x27, 0x16, 0x64,
+	0xfe, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xe2, 0xee, 0x18, 0xe0, 0x99, 0xc4, 0x06, 0xb6, 0xdb, 0x18,
+	0x10, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x4c, 0xa6, 0x16, 0x25, 0x01, 0x00, 0x00,
+}
+
+func (this *HttpBody) Compare(that interface{}) int {
+	if that == nil {
+		if this == nil {
+			return 0
+		}
+		return 1
+	}
+
+	that1, ok := that.(*HttpBody)
+	if !ok {
+		that2, ok := that.(HttpBody)
+		if ok {
+			that1 = &that2
+		} else {
+			return 1
+		}
+	}
+	if that1 == nil {
+		if this == nil {
+			return 0
+		}
+		return 1
+	} else if this == nil {
+		return -1
+	}
+	if this.ContentType != that1.ContentType {
+		if this.ContentType < that1.ContentType {
+			return -1
+		}
+		return 1
+	}
+	if c := bytes.Compare(this.Data, that1.Data); c != 0 {
+		return c
+	}
+	if len(this.Extensions) != len(that1.Extensions) {
+		if len(this.Extensions) < len(that1.Extensions) {
+			return -1
+		}
+		return 1
+	}
+	for i := range this.Extensions {
+		if c := this.Extensions[i].Compare(that1.Extensions[i]); c != 0 {
+			return c
+		}
+	}
+	if c := bytes.Compare(this.XXX_unrecognized, that1.XXX_unrecognized); c != 0 {
+		return c
+	}
+	return 0
+}
+func (this *HttpBody) Equal(that interface{}) bool {
+	if that == nil {
+		return this == nil
+	}
+
+	that1, ok := that.(*HttpBody)
+	if !ok {
+		that2, ok := that.(HttpBody)
+		if ok {
+			that1 = &that2
+		} else {
+			return false
+		}
+	}
+	if that1 == nil {
+		return this == nil
+	} else if this == nil {
+		return false
+	}
+	if this.ContentType != that1.ContentType {
+		return false
+	}
+	if !bytes.Equal(this.Data, that1.Data) {
+		return false
+	}
+	if len(this.Extensions) != len(that1.Extensions) {
+		return false
+	}
+	for i := range this.Extensions {
+		if !this.Extensions[i].Equal(that1.Extensions[i]) {
+			return false
+		}
+	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
+	return true
+}
+func (this *HttpBody) GoString() string {
+	if this == nil {
+		return "nil"
+	}
+	s := make([]string, 0, 7)
+	s = append(s, "&api.HttpBody{")
+	s = append(s, "ContentType: "+fmt.Sprintf("%#v", this.ContentType)+",\n")
+	s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n")
+	if this.Extensions != nil {
+		s = append(s, "Extensions: "+fmt.Sprintf("%#v", this.Extensions)+",\n")
+	}
+	if this.XXX_unrecognized != nil {
+		s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n")
+	}
+	s = append(s, "}")
+	return strings.Join(s, "")
+}
+func valueToGoStringHttpbody(v interface{}, typ string) string {
+	rv := reflect.ValueOf(v)
+	if rv.IsNil() {
+		return "nil"
+	}
+	pv := reflect.Indirect(rv).Interface()
+	return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv)
+}
+func (m *HttpBody) Marshal() (dAtA []byte, err error) {
+	size := m.Size()
+	dAtA = make([]byte, size)
+	n, err := m.MarshalToSizedBuffer(dAtA[:size])
+	if err != nil {
+		return nil, err
+	}
+	return dAtA[:n], nil
+}
+
+func (m *HttpBody) MarshalTo(dAtA []byte) (int, error) {
+	size := m.Size()
+	return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HttpBody) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+	i := len(dAtA)
+	_ = i
+	var l int
+	_ = l
+	if m.XXX_unrecognized != nil {
+		i -= len(m.XXX_unrecognized)
+		copy(dAtA[i:], m.XXX_unrecognized)
+	}
+	if len(m.Extensions) > 0 {
+		for iNdEx := len(m.Extensions) - 1; iNdEx >= 0; iNdEx-- {
+			{
+				size, err := m.Extensions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+				if err != nil {
+					return 0, err
+				}
+				i -= size
+				i = encodeVarintHttpbody(dAtA, i, uint64(size))
+			}
+			i--
+			dAtA[i] = 0x1a
+		}
+	}
+	if len(m.Data) > 0 {
+		i -= len(m.Data)
+		copy(dAtA[i:], m.Data)
+		i = encodeVarintHttpbody(dAtA, i, uint64(len(m.Data)))
+		i--
+		dAtA[i] = 0x12
+	}
+	if len(m.ContentType) > 0 {
+		i -= len(m.ContentType)
+		copy(dAtA[i:], m.ContentType)
+		i = encodeVarintHttpbody(dAtA, i, uint64(len(m.ContentType)))
+		i--
+		dAtA[i] = 0xa
+	}
+	return len(dAtA) - i, nil
+}
+
+func encodeVarintHttpbody(dAtA []byte, offset int, v uint64) int {
+	offset -= sovHttpbody(v)
+	base := offset
+	for v >= 1<<7 {
+		dAtA[offset] = uint8(v&0x7f | 0x80)
+		v >>= 7
+		offset++
+	}
+	dAtA[offset] = uint8(v)
+	return base
+}
+func NewPopulatedHttpBody(r randyHttpbody, easy bool) *HttpBody {
+	this := &HttpBody{}
+	this.ContentType = string(randStringHttpbody(r))
+	v1 := r.Intn(100)
+	this.Data = make([]byte, v1)
+	for i := 0; i < v1; i++ {
+		this.Data[i] = byte(r.Intn(256))
+	}
+	if r.Intn(5) != 0 {
+		v2 := r.Intn(5)
+		this.Extensions = make([]*types.Any, v2)
+		for i := 0; i < v2; i++ {
+			this.Extensions[i] = types.NewPopulatedAny(r, easy)
+		}
+	}
+	if !easy && r.Intn(10) != 0 {
+		this.XXX_unrecognized = randUnrecognizedHttpbody(r, 4)
+	}
+	return this
+}
+
+type randyHttpbody interface {
+	Float32() float32
+	Float64() float64
+	Int63() int64
+	Int31() int32
+	Uint32() uint32
+	Intn(n int) int
+}
+
+func randUTF8RuneHttpbody(r randyHttpbody) rune {
+	ru := r.Intn(62)
+	if ru < 10 {
+		return rune(ru + 48)
+	} else if ru < 36 {
+		return rune(ru + 55)
+	}
+	return rune(ru + 61)
+}
+func randStringHttpbody(r randyHttpbody) string {
+	v3 := r.Intn(100)
+	tmps := make([]rune, v3)
+	for i := 0; i < v3; i++ {
+		tmps[i] = randUTF8RuneHttpbody(r)
+	}
+	return string(tmps)
+}
+func randUnrecognizedHttpbody(r randyHttpbody, maxFieldNumber int) (dAtA []byte) {
+	l := r.Intn(5)
+	for i := 0; i < l; i++ {
+		wire := r.Intn(4)
+		if wire == 3 {
+			wire = 5
+		}
+		fieldNumber := maxFieldNumber + r.Intn(100)
+		dAtA = randFieldHttpbody(dAtA, r, fieldNumber, wire)
+	}
+	return dAtA
+}
+func randFieldHttpbody(dAtA []byte, r randyHttpbody, fieldNumber int, wire int) []byte {
+	key := uint32(fieldNumber)<<3 | uint32(wire)
+	switch wire {
+	case 0:
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(key))
+		v4 := r.Int63()
+		if r.Intn(2) == 0 {
+			v4 *= -1
+		}
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(v4))
+	case 1:
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(key))
+		dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)))
+	case 2:
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(key))
+		ll := r.Intn(100)
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(ll))
+		for j := 0; j < ll; j++ {
+			dAtA = append(dAtA, byte(r.Intn(256)))
+		}
+	default:
+		dAtA = encodeVarintPopulateHttpbody(dAtA, uint64(key))
+		dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)))
+	}
+	return dAtA
+}
+func encodeVarintPopulateHttpbody(dAtA []byte, v uint64) []byte {
+	for v >= 1<<7 {
+		dAtA = append(dAtA, uint8(uint64(v)&0x7f|0x80))
+		v >>= 7
+	}
+	dAtA = append(dAtA, uint8(v))
+	return dAtA
+}
+func (m *HttpBody) Size() (n int) {
+	if m == nil {
+		return 0
+	}
+	var l int
+	_ = l
+	l = len(m.ContentType)
+	if l > 0 {
+		n += 1 + l + sovHttpbody(uint64(l))
+	}
+	l = len(m.Data)
+	if l > 0 {
+		n += 1 + l + sovHttpbody(uint64(l))
+	}
+	if len(m.Extensions) > 0 {
+		for _, e := range m.Extensions {
+			l = e.Size()
+			n += 1 + l + sovHttpbody(uint64(l))
+		}
+	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
+	return n
+}
+
+func sovHttpbody(x uint64) (n int) {
+	return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozHttpbody(x uint64) (n int) {
+	return sovHttpbody(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (this *HttpBody) String() string {
+	if this == nil {
+		return "nil"
+	}
+	repeatedStringForExtensions := "[]*Any{"
+	for _, f := range this.Extensions {
+		repeatedStringForExtensions += strings.Replace(fmt.Sprintf("%v", f), "Any", "types.Any", 1) + ","
+	}
+	repeatedStringForExtensions += "}"
+	s := strings.Join([]string{`&HttpBody{`,
+		`ContentType:` + fmt.Sprintf("%v", this.ContentType) + `,`,
+		`Data:` + fmt.Sprintf("%v", this.Data) + `,`,
+		`Extensions:` + repeatedStringForExtensions + `,`,
+		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
+		`}`,
+	}, "")
+	return s
+}
+func valueToStringHttpbody(v interface{}) string {
+	rv := reflect.ValueOf(v)
+	if rv.IsNil() {
+		return "nil"
+	}
+	pv := reflect.Indirect(rv).Interface()
+	return fmt.Sprintf("*%v", pv)
+}
+func (m *HttpBody) Unmarshal(dAtA []byte) error {
+	l := len(dAtA)
+	iNdEx := 0
+	for iNdEx < l {
+		preIndex := iNdEx
+		var wire uint64
+		for shift := uint(0); ; shift += 7 {
+			if shift >= 64 {
+				return ErrIntOverflowHttpbody
+			}
+			if iNdEx >= l {
+				return io.ErrUnexpectedEOF
+			}
+			b := dAtA[iNdEx]
+			iNdEx++
+			wire |= uint64(b&0x7F) << shift
+			if b < 0x80 {
+				break
+			}
+		}
+		fieldNum := int32(wire >> 3)
+		wireType := int(wire & 0x7)
+		if wireType == 4 {
+			return fmt.Errorf("proto: HttpBody: wiretype end group for non-group")
+		}
+		if fieldNum <= 0 {
+			return fmt.Errorf("proto: HttpBody: illegal tag %d (wire type %d)", fieldNum, wire)
+		}
+		switch fieldNum {
+		case 1:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType)
+			}
+			var stringLen uint64
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowHttpbody
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				stringLen |= uint64(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			intStringLen := int(stringLen)
+			if intStringLen < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.ContentType = string(dAtA[iNdEx:postIndex])
+			iNdEx = postIndex
+		case 2:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+			}
+			var byteLen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowHttpbody
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				byteLen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if byteLen < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			postIndex := iNdEx + byteLen
+			if postIndex < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+			if m.Data == nil {
+				m.Data = []byte{}
+			}
+			iNdEx = postIndex
+		case 3:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field Extensions", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowHttpbody
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.Extensions = append(m.Extensions, &types.Any{})
+			if err := m.Extensions[len(m.Extensions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+				return err
+			}
+			iNdEx = postIndex
+		default:
+			iNdEx = preIndex
+			skippy, err := skipHttpbody(dAtA[iNdEx:])
+			if err != nil {
+				return err
+			}
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
+				return ErrInvalidLengthHttpbody
+			}
+			if (iNdEx + skippy) > l {
+				return io.ErrUnexpectedEOF
+			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+			iNdEx += skippy
+		}
+	}
+
+	if iNdEx > l {
+		return io.ErrUnexpectedEOF
+	}
+	return nil
+}
+func skipHttpbody(dAtA []byte) (n int, err error) {
+	l := len(dAtA)
+	iNdEx := 0
+	depth := 0
+	for iNdEx < l {
+		var wire uint64
+		for shift := uint(0); ; shift += 7 {
+			if shift >= 64 {
+				return 0, ErrIntOverflowHttpbody
+			}
+			if iNdEx >= l {
+				return 0, io.ErrUnexpectedEOF
+			}
+			b := dAtA[iNdEx]
+			iNdEx++
+			wire |= (uint64(b) & 0x7F) << shift
+			if b < 0x80 {
+				break
+			}
+		}
+		wireType := int(wire & 0x7)
+		switch wireType {
+		case 0:
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return 0, ErrIntOverflowHttpbody
+				}
+				if iNdEx >= l {
+					return 0, io.ErrUnexpectedEOF
+				}
+				iNdEx++
+				if dAtA[iNdEx-1] < 0x80 {
+					break
+				}
+			}
+		case 1:
+			iNdEx += 8
+		case 2:
+			var length int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return 0, ErrIntOverflowHttpbody
+				}
+				if iNdEx >= l {
+					return 0, io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				length |= (int(b) & 0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if length < 0 {
+				return 0, ErrInvalidLengthHttpbody
+			}
+			iNdEx += length
+		case 3:
+			depth++
+		case 4:
+			if depth == 0 {
+				return 0, ErrUnexpectedEndOfGroupHttpbody
+			}
+			depth--
+		case 5:
+			iNdEx += 4
+		default:
+			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+		}
+		if iNdEx < 0 {
+			return 0, ErrInvalidLengthHttpbody
+		}
+		if depth == 0 {
+			return iNdEx, nil
+		}
+	}
+	return 0, io.ErrUnexpectedEOF
+}
+
+var (
+	ErrInvalidLengthHttpbody        = fmt.Errorf("proto: negative length found during unmarshaling")
+	ErrIntOverflowHttpbody          = fmt.Errorf("proto: integer overflow")
+	ErrUnexpectedEndOfGroupHttpbody = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/google/api/httpbody.proto b/google/api/httpbody.proto
new file mode 100644
index 0000000..7c2f650
--- /dev/null
+++ b/google/api/httpbody.proto
@@ -0,0 +1,77 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option go_package = "api";
+option java_multiple_files = true;
+option java_outer_classname = "HttpBodyProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+// Message that represents an arbitrary HTTP body. It should only be used for
+// payload formats that can't be represented as JSON, such as raw binary or
+// an HTML page.
+//
+//
+// This message can be used both in streaming and non-streaming API methods in
+// the request as well as the response.
+//
+// It can be used as a top-level request field, which is convenient if one
+// wants to extract parameters from either the URL or HTTP template into the
+// request fields and also want access to the raw HTTP body.
+//
+// Example:
+//
+//     message GetResourceRequest {
+//       // A unique request id.
+//       string request_id = 1;
+//
+//       // The raw HTTP body is bound to this field.
+//       google.api.HttpBody http_body = 2;
+//     }
+//
+//     service ResourceService {
+//       rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);
+//       rpc UpdateResource(google.api.HttpBody) returns
+//       (google.protobuf.Empty);
+//     }
+//
+// Example with streaming methods:
+//
+//     service CaldavService {
+//       rpc GetCalendar(stream google.api.HttpBody)
+//         returns (stream google.api.HttpBody);
+//       rpc UpdateCalendar(stream google.api.HttpBody)
+//         returns (stream google.api.HttpBody);
+//     }
+//
+// Use of this type only changes how the request and response bodies are
+// handled, all other features will continue to work unchanged.
+message HttpBody {
+  // The HTTP Content-Type header value specifying the content type of the body.
+  string content_type = 1;
+
+  // The HTTP request/response body as raw binary.
+  bytes data = 2;
+
+  // Application specific response metadata. Must be set in the first response
+  // for streaming APIs.
+  repeated google.protobuf.Any extensions = 3;
+}
diff --git a/google/geo/type/viewport.pb.go b/google/geo/type/viewport.pb.go
index 48ec1dd..3423103 100644
--- a/google/geo/type/viewport.pb.go
+++ b/google/geo/type/viewport.pb.go
@@ -501,10 +501,7 @@ func (m *Viewport) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthViewport
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthViewport
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/longrunning/operations.pb.go b/google/longrunning/operations.pb.go
index 692c801..eedd53d 100644
--- a/google/longrunning/operations.pb.go
+++ b/google/longrunning/operations.pb.go
@@ -2538,10 +2538,7 @@ func (m *Operation) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -2624,10 +2621,7 @@ func (m *GetOperationRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -2793,10 +2787,7 @@ func (m *ListOperationsRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -2913,10 +2904,7 @@ func (m *ListOperationsResponse) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -2999,10 +2987,7 @@ func (m *CancelOperationRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -3085,10 +3070,7 @@ func (m *DeleteOperationRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -3207,10 +3189,7 @@ func (m *WaitOperationRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
@@ -3325,10 +3304,7 @@ func (m *OperationInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthOperations
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthOperations
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/rpc/error_details.pb.go b/google/rpc/error_details.pb.go
index 8b9d7b8..18accb7 100644
--- a/google/rpc/error_details.pb.go
+++ b/google/rpc/error_details.pb.go
@@ -288,6 +288,7 @@ func (*QuotaFailure_Violation) XXX_MessageName() string {
 //
 // Example of an error when contacting the "pubsub.googleapis.com" API when it
 // is not enabled:
+//
 //     { "reason": "API_DISABLED"
 //       "domain": "googleapis.com"
 //       "metadata": {
@@ -295,28 +296,30 @@ func (*QuotaFailure_Violation) XXX_MessageName() string {
 //         "service": "pubsub.googleapis.com"
 //       }
 //     }
+//
 // This response indicates that the pubsub.googleapis.com API is not enabled.
 //
 // Example of an error that is returned when attempting to create a Spanner
 // instance in a region that is out of stock:
+//
 //     { "reason": "STOCKOUT"
 //       "domain": "spanner.googleapis.com",
 //       "metadata": {
 //         "availableRegions": "us-central1,us-east2"
 //       }
 //     }
-//
 type ErrorInfo struct {
 	// The reason of the error. This is a constant value that identifies the
 	// proximate cause of the error. Error reasons are unique within a particular
 	// domain of errors. This should be at most 63 characters and match
 	// /[A-Z0-9_]+/.
 	Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
-	// The logical grouping to which the "reason" belongs.  Often "domain" will
-	// contain the registered service name of the tool or product that is the
-	// source of the error. Example: "pubsub.googleapis.com". If the error is
-	// common across many APIs, the first segment of the example above will be
-	// omitted.  The value will be, "googleapis.com".
+	// The logical grouping to which the "reason" belongs. The error domain
+	// is typically the registered service name of the tool or product that
+	// generates the error. Example: "pubsub.googleapis.com". If the error is
+	// generated by some common infrastructure, the error domain must be a
+	// globally unique value that identifies the infrastructure. For Google API
+	// infrastructure, the error domain is "googleapis.com".
 	Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
 	// Additional structured details about this error.
 	//
@@ -3769,10 +3772,7 @@ func (m *RetryInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -3887,10 +3887,7 @@ func (m *DebugInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -3975,10 +3972,7 @@ func (m *QuotaFailure) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4093,10 +4087,7 @@ func (m *QuotaFailure_Violation) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4321,7 +4312,7 @@ func (m *ErrorInfo) Unmarshal(dAtA []byte) error {
 					if err != nil {
 						return err
 					}
-					if skippy < 0 {
+					if (skippy < 0) || (iNdEx+skippy) < 0 {
 						return ErrInvalidLengthErrorDetails
 					}
 					if (iNdEx + skippy) > postIndex {
@@ -4338,10 +4329,7 @@ func (m *ErrorInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4426,10 +4414,7 @@ func (m *PreconditionFailure) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4576,10 +4561,7 @@ func (m *PreconditionFailure_Violation) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4664,10 +4646,7 @@ func (m *BadRequest) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4782,10 +4761,7 @@ func (m *BadRequest_FieldViolation) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -4900,10 +4876,7 @@ func (m *RequestInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -5082,10 +5055,7 @@ func (m *ResourceInfo) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -5170,10 +5140,7 @@ func (m *Help) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -5288,10 +5255,7 @@ func (m *Help_Link) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
@@ -5406,10 +5370,7 @@ func (m *LocalizedMessage) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthErrorDetails
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthErrorDetails
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/rpc/error_details.proto b/google/rpc/error_details.proto
index d0f8c18..7675af6 100644
--- a/google/rpc/error_details.proto
+++ b/google/rpc/error_details.proto
@@ -89,6 +89,7 @@ message QuotaFailure {
 //
 // Example of an error when contacting the "pubsub.googleapis.com" API when it
 // is not enabled:
+//
 //     { "reason": "API_DISABLED"
 //       "domain": "googleapis.com"
 //       "metadata": {
@@ -96,17 +97,18 @@ message QuotaFailure {
 //         "service": "pubsub.googleapis.com"
 //       }
 //     }
+//
 // This response indicates that the pubsub.googleapis.com API is not enabled.
 //
 // Example of an error that is returned when attempting to create a Spanner
 // instance in a region that is out of stock:
+//
 //     { "reason": "STOCKOUT"
 //       "domain": "spanner.googleapis.com",
 //       "metadata": {
 //         "availableRegions": "us-central1,us-east2"
 //       }
 //     }
-//
 message ErrorInfo {
   // The reason of the error. This is a constant value that identifies the
   // proximate cause of the error. Error reasons are unique within a particular
@@ -114,11 +116,12 @@ message ErrorInfo {
   // /[A-Z0-9_]+/.
   string reason = 1;
 
-  // The logical grouping to which the "reason" belongs.  Often "domain" will
-  // contain the registered service name of the tool or product that is the
-  // source of the error. Example: "pubsub.googleapis.com". If the error is
-  // common across many APIs, the first segment of the example above will be
-  // omitted.  The value will be, "googleapis.com".
+  // The logical grouping to which the "reason" belongs. The error domain
+  // is typically the registered service name of the tool or product that
+  // generates the error. Example: "pubsub.googleapis.com". If the error is
+  // generated by some common infrastructure, the error domain must be a
+  // globally unique value that identifies the infrastructure. For Google API
+  // infrastructure, the error domain is "googleapis.com".
   string domain = 2;
 
   // Additional structured details about this error.
diff --git a/google/rpc/status.pb.go b/google/rpc/status.pb.go
index 7f430ba..aba2aba 100644
--- a/google/rpc/status.pb.go
+++ b/google/rpc/status.pb.go
@@ -578,10 +578,7 @@ func (m *Status) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthStatus
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthStatus
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/calendar_period.proto b/google/type/calendar_period.proto
index 568e71b..d76d322 100644
--- a/google/type/calendar_period.proto
+++ b/google/type/calendar_period.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/type/color.pb.go b/google/type/color.pb.go
index 5a1b82a..8aac58f 100644
--- a/google/type/color.pb.go
+++ b/google/type/color.pb.go
@@ -40,6 +40,10 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 // DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
 // space.
 //
+// Note: when color equality needs to be decided, implementations, unless
+// documented otherwise, will treat two colors to be equal if all their red,
+// green, blue and alpha values each differ by at most 1e-5.
+//
 // Example (Java):
 //
 //      import com.google.type.Color;
@@ -692,10 +696,7 @@ func (m *Color) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthColor
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthColor
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/color.proto b/google/type/color.proto
index 246c3a0..6da0bbc 100644
--- a/google/type/color.proto
+++ b/google/type/color.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -39,6 +38,10 @@ option objc_class_prefix = "GTP";
 // DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
 // space.
 //
+// Note: when color equality needs to be decided, implementations, unless
+// documented otherwise, will treat two colors to be equal if all their red,
+// green, blue and alpha values each differ by at most 1e-5.
+//
 // Example (Java):
 //
 //      import com.google.type.Color;
diff --git a/google/type/date.pb.go b/google/type/date.pb.go
index f12cfe7..e387a33 100644
--- a/google/type/date.pb.go
+++ b/google/type/date.pb.go
@@ -25,25 +25,27 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
-// Represents a whole or partial calendar date, e.g. a birthday. The time of day
-// and time zone are either specified elsewhere or are not significant. The date
-// is relative to the Proleptic Gregorian Calendar. This can represent:
+// Represents a whole or partial calendar date, such as a birthday. The time of
+// day and time zone are either specified elsewhere or are insignificant. The
+// date is relative to the Gregorian Calendar. This can represent one of the
+// following:
 //
-// * A full date, with non-zero year, month and day values
-// * A month and day value, with a zero year, e.g. an anniversary
+// * A full date, with non-zero year, month, and day values
+// * A month and day value, with a zero year, such as an anniversary
 // * A year on its own, with zero month and day values
-// * A year and month value, with a zero day, e.g. a credit card expiration date
+// * A year and month value, with a zero day, such as a credit card expiration
+// date
 //
 // Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and `google.protobuf.Timestamp`.
 type Date struct {
-	// Year of date. Must be from 1 to 9999, or 0 if specifying a date without
+	// Year of the date. Must be from 1 to 9999, or 0 to specify a date without
 	// a year.
 	Year int32 `protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"`
-	// Month of year. Must be from 1 to 12, or 0 if specifying a year without a
+	// Month of a year. Must be from 1 to 12, or 0 to specify a year without a
 	// month and day.
 	Month int32 `protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"`
-	// Day of month. Must be from 1 to 31 and valid for the year and month, or 0
-	// if specifying a year by itself or a year and month where the day is not
+	// Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
+	// to specify a year by itself or a year and month where the day isn't
 	// significant.
 	Day                  int32    `protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -519,10 +521,7 @@ func (m *Date) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthDate
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthDate
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/date.proto b/google/type/date.proto
index ce9eaad..4a58f47 100644
--- a/google/type/date.proto
+++ b/google/type/date.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -24,27 +23,29 @@ option java_outer_classname = "DateProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents a whole or partial calendar date, e.g. a birthday. The time of day
-// and time zone are either specified elsewhere or are not significant. The date
-// is relative to the Proleptic Gregorian Calendar. This can represent:
+// Represents a whole or partial calendar date, such as a birthday. The time of
+// day and time zone are either specified elsewhere or are insignificant. The
+// date is relative to the Gregorian Calendar. This can represent one of the
+// following:
 //
-// * A full date, with non-zero year, month and day values
-// * A month and day value, with a zero year, e.g. an anniversary
+// * A full date, with non-zero year, month, and day values
+// * A month and day value, with a zero year, such as an anniversary
 // * A year on its own, with zero month and day values
-// * A year and month value, with a zero day, e.g. a credit card expiration date
+// * A year and month value, with a zero day, such as a credit card expiration
+// date
 //
 // Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and `google.protobuf.Timestamp`.
 message Date {
-  // Year of date. Must be from 1 to 9999, or 0 if specifying a date without
+  // Year of the date. Must be from 1 to 9999, or 0 to specify a date without
   // a year.
   int32 year = 1;
 
-  // Month of year. Must be from 1 to 12, or 0 if specifying a year without a
+  // Month of a year. Must be from 1 to 12, or 0 to specify a year without a
   // month and day.
   int32 month = 2;
 
-  // Day of month. Must be from 1 to 31 and valid for the year and month, or 0
-  // if specifying a year by itself or a year and month where the day is not
+  // Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
+  // to specify a year by itself or a year and month where the day isn't
   // significant.
   int32 day = 3;
 }
diff --git a/google/type/datetime.pb.go b/google/type/datetime.pb.go
index c10493e..1190c8d 100644
--- a/google/type/datetime.pb.go
+++ b/google/type/datetime.pb.go
@@ -26,7 +26,9 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
-// Represents civil time in one of a few possible ways:
+// Represents civil time (or occasionally physical time).
+//
+// This type can represent a civil time in one of a few possible ways:
 //
 //  * When utc_offset is set and time_zone is unset: a civil time on a calendar
 //    day with a particular offset from UTC.
@@ -40,6 +42,12 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 // If year is 0, the DateTime is considered not to have a specific year. month
 // and day must have valid, non-zero values.
 //
+// This type may also be used to represent a physical time if all the date and
+// time fields are set and either case of the `time_offset` oneof is set.
+// Consider using `Timestamp` message for physical time instead. If your use
+// case also would like to store the user's timezone, that can be done in
+// another field.
+//
 // This type is more flexible than some applications may want. Make sure to
 // document and validate your application's limitations.
 type DateTime struct {
@@ -1179,10 +1187,7 @@ func (m *DateTime) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthDatetime
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthDatetime
 			}
 			if (iNdEx + skippy) > l {
@@ -1297,10 +1302,7 @@ func (m *TimeZone) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthDatetime
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthDatetime
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/datetime.proto b/google/type/datetime.proto
index 7637b96..d6eef04 100644
--- a/google/type/datetime.proto
+++ b/google/type/datetime.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -26,7 +25,9 @@ option java_outer_classname = "DateTimeProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents civil time in one of a few possible ways:
+// Represents civil time (or occasionally physical time).
+//
+// This type can represent a civil time in one of a few possible ways:
 //
 //  * When utc_offset is set and time_zone is unset: a civil time on a calendar
 //    day with a particular offset from UTC.
@@ -40,6 +41,12 @@ option objc_class_prefix = "GTP";
 // If year is 0, the DateTime is considered not to have a specific year. month
 // and day must have valid, non-zero values.
 //
+// This type may also be used to represent a physical time if all the date and
+// time fields are set and either case of the `time_offset` oneof is set.
+// Consider using `Timestamp` message for physical time instead. If your use
+// case also would like to store the user's timezone, that can be done in
+// another field.
+//
 // This type is more flexible than some applications may want. Make sure to
 // document and validate your application's limitations.
 message DateTime {
diff --git a/google/type/dayofweek.pb.go b/google/type/dayofweek.pb.go
index 5def5e2..853eb85 100644
--- a/google/type/dayofweek.pb.go
+++ b/google/type/dayofweek.pb.go
@@ -21,25 +21,25 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
-// Represents a day of week.
+// Represents a day of the week.
 type DayOfWeek int32
 
 const (
-	// The unspecified day-of-week.
+	// The day of the week is unspecified.
 	DayOfWeek_DAY_OF_WEEK_UNSPECIFIED DayOfWeek = 0
-	// The day-of-week of Monday.
+	// Monday
 	DayOfWeek_MONDAY DayOfWeek = 1
-	// The day-of-week of Tuesday.
+	// Tuesday
 	DayOfWeek_TUESDAY DayOfWeek = 2
-	// The day-of-week of Wednesday.
+	// Wednesday
 	DayOfWeek_WEDNESDAY DayOfWeek = 3
-	// The day-of-week of Thursday.
+	// Thursday
 	DayOfWeek_THURSDAY DayOfWeek = 4
-	// The day-of-week of Friday.
+	// Friday
 	DayOfWeek_FRIDAY DayOfWeek = 5
-	// The day-of-week of Saturday.
+	// Saturday
 	DayOfWeek_SATURDAY DayOfWeek = 6
-	// The day-of-week of Sunday.
+	// Sunday
 	DayOfWeek_SUNDAY DayOfWeek = 7
 )
 
diff --git a/google/type/dayofweek.proto b/google/type/dayofweek.proto
index 0d09bab..501f9ed 100644
--- a/google/type/dayofweek.proto
+++ b/google/type/dayofweek.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -23,29 +22,29 @@ option java_outer_classname = "DayOfWeekProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents a day of week.
+// Represents a day of the week.
 enum DayOfWeek {
-  // The unspecified day-of-week.
+  // The day of the week is unspecified.
   DAY_OF_WEEK_UNSPECIFIED = 0;
 
-  // The day-of-week of Monday.
+  // Monday
   MONDAY = 1;
 
-  // The day-of-week of Tuesday.
+  // Tuesday
   TUESDAY = 2;
 
-  // The day-of-week of Wednesday.
+  // Wednesday
   WEDNESDAY = 3;
 
-  // The day-of-week of Thursday.
+  // Thursday
   THURSDAY = 4;
 
-  // The day-of-week of Friday.
+  // Friday
   FRIDAY = 5;
 
-  // The day-of-week of Saturday.
+  // Saturday
   SATURDAY = 6;
 
-  // The day-of-week of Sunday.
+  // Sunday
   SUNDAY = 7;
 }
diff --git a/google/type/expr.pb.go b/google/type/expr.pb.go
index b41d853..3d71362 100644
--- a/google/type/expr.pb.go
+++ b/google/type/expr.pb.go
@@ -25,26 +25,49 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
-// Represents an expression text. Example:
+// Represents a textual expression in the Common Expression Language (CEL)
+// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+// are documented at https://github.com/google/cel-spec.
 //
-//     title: "User account presence"
-//     description: "Determines whether the request has a user account"
-//     expression: "size(request.user) > 0"
+// Example (Comparison):
+//
+//     title: "Summary size limit"
+//     description: "Determines if a summary is less than 100 chars"
+//     expression: "document.summary.size() < 100"
+//
+// Example (Equality):
+//
+//     title: "Requestor is owner"
+//     description: "Determines if requestor is the document owner"
+//     expression: "document.owner == request.auth.claims.email"
+//
+// Example (Logic):
+//
+//     title: "Public documents"
+//     description: "Determine whether the document should be publicly visible"
+//     expression: "document.type != 'private' && document.type != 'internal'"
+//
+// Example (Data Manipulation):
+//
+//     title: "Notification string"
+//     description: "Create a notification string with a timestamp."
+//     expression: "'New message received at ' + string(document.create_time)"
+//
+// The exact variables and functions that may be referenced within an expression
+// are determined by the service that evaluates it. See the service
+// documentation for additional information.
 type Expr struct {
-	// Textual representation of an expression in
-	// Common Expression Language syntax.
-	//
-	// The application context of the containing message determines which
-	// well-known feature set of CEL is supported.
+	// Textual representation of an expression in Common Expression Language
+	// syntax.
 	Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
-	// An optional title for the expression, i.e. a short string describing
+	// Optional. Title for the expression, i.e. a short string describing
 	// its purpose. This can be used e.g. in UIs which allow to enter the
 	// expression.
 	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
-	// An optional description of the expression. This is a longer text which
+	// Optional. Description of the expression. This is a longer text which
 	// describes the expression, e.g. when hovered over it in a UI.
 	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
-	// An optional string indicating the location of the expression for error
+	// Optional. String indicating the location of the expression for error
 	// reporting, e.g. a file name and a position in the file.
 	Location             string   `protobuf:"bytes,4,opt,name=location,proto3" json:"location,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -622,10 +645,7 @@ func (m *Expr) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthExpr
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthExpr
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/expr.proto b/google/type/expr.proto
index f239503..e3cc0db 100644
--- a/google/type/expr.proto
+++ b/google/type/expr.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -23,29 +22,52 @@ option java_outer_classname = "ExprProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// Represents an expression text. Example:
+// Represents a textual expression in the Common Expression Language (CEL)
+// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
+// are documented at https://github.com/google/cel-spec.
+//
+// Example (Comparison):
+//
+//     title: "Summary size limit"
+//     description: "Determines if a summary is less than 100 chars"
+//     expression: "document.summary.size() < 100"
+//
+// Example (Equality):
+//
+//     title: "Requestor is owner"
+//     description: "Determines if requestor is the document owner"
+//     expression: "document.owner == request.auth.claims.email"
+//
+// Example (Logic):
+//
+//     title: "Public documents"
+//     description: "Determine whether the document should be publicly visible"
+//     expression: "document.type != 'private' && document.type != 'internal'"
+//
+// Example (Data Manipulation):
+//
+//     title: "Notification string"
+//     description: "Create a notification string with a timestamp."
+//     expression: "'New message received at ' + string(document.create_time)"
 //
-//     title: "User account presence"
-//     description: "Determines whether the request has a user account"
-//     expression: "size(request.user) > 0"
+// The exact variables and functions that may be referenced within an expression
+// are determined by the service that evaluates it. See the service
+// documentation for additional information.
 message Expr {
-  // Textual representation of an expression in
-  // Common Expression Language syntax.
-  //
-  // The application context of the containing message determines which
-  // well-known feature set of CEL is supported.
+  // Textual representation of an expression in Common Expression Language
+  // syntax.
   string expression = 1;
 
-  // An optional title for the expression, i.e. a short string describing
+  // Optional. Title for the expression, i.e. a short string describing
   // its purpose. This can be used e.g. in UIs which allow to enter the
   // expression.
   string title = 2;
 
-  // An optional description of the expression. This is a longer text which
+  // Optional. Description of the expression. This is a longer text which
   // describes the expression, e.g. when hovered over it in a UI.
   string description = 3;
 
-  // An optional string indicating the location of the expression for error
+  // Optional. String indicating the location of the expression for error
   // reporting, e.g. a file name and a position in the file.
   string location = 4;
 }
diff --git a/google/type/fraction.pb.go b/google/type/fraction.pb.go
index 58fca84..1c9b959 100644
--- a/google/type/fraction.pb.go
+++ b/google/type/fraction.pb.go
@@ -27,7 +27,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
 // Represents a fraction in terms of a numerator divided by a denominator.
 type Fraction struct {
-	// The portion of the denominator in the faction, e.g. 2 in 2/3.
+	// The numerator in the fraction, e.g. 2 in 2/3.
 	Numerator int64 `protobuf:"varint,1,opt,name=numerator,proto3" json:"numerator,omitempty"`
 	// The value by which the numerator is divided, e.g. 3 in 2/3. Must be
 	// positive.
@@ -455,10 +455,7 @@ func (m *Fraction) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthFraction
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthFraction
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/fraction.proto b/google/type/fraction.proto
index 9a3f631..eefa619 100644
--- a/google/type/fraction.proto
+++ b/google/type/fraction.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -25,7 +24,7 @@ option objc_class_prefix = "GTP";
 
 // Represents a fraction in terms of a numerator divided by a denominator.
 message Fraction {
-  // The portion of the denominator in the faction, e.g. 2 in 2/3.
+  // The numerator in the fraction, e.g. 2 in 2/3.
   int64 numerator = 1;
 
   // The value by which the numerator is divided, e.g. 3 in 2/3. Must be
diff --git a/google/type/latlng.pb.go b/google/type/latlng.pb.go
index d4cd407..7fd9d3b 100644
--- a/google/type/latlng.pb.go
+++ b/google/type/latlng.pb.go
@@ -26,8 +26,8 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
-// An object representing a latitude/longitude pair. This is expressed as a pair
-// of doubles representing degrees latitude and degrees longitude. Unless
+// An object that represents a latitude/longitude pair. This is expressed as a
+// pair of doubles to represent degrees latitude and degrees longitude. Unless
 // specified otherwise, this must conform to the
 // <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
 // standard</a>. Values must be within normalized ranges.
@@ -445,10 +445,7 @@ func (m *LatLng) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthLatlng
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthLatlng
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/latlng.proto b/google/type/latlng.proto
index dfdb79c..f995c0a 100644
--- a/google/type/latlng.proto
+++ b/google/type/latlng.proto
@@ -23,8 +23,8 @@ option java_outer_classname = "LatLngProto";
 option java_package = "com.google.type";
 option objc_class_prefix = "GTP";
 
-// An object representing a latitude/longitude pair. This is expressed as a pair
-// of doubles representing degrees latitude and degrees longitude. Unless
+// An object that represents a latitude/longitude pair. This is expressed as a
+// pair of doubles to represent degrees latitude and degrees longitude. Unless
 // specified otherwise, this must conform to the
 // <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
 // standard</a>. Values must be within normalized ranges.
diff --git a/google/type/money.pb.go b/google/type/money.pb.go
index 28731dc..bfdf51c 100644
--- a/google/type/money.pb.go
+++ b/google/type/money.pb.go
@@ -27,7 +27,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
 
 // Represents an amount of money with its currency type.
 type Money struct {
-	// The 3-letter currency code defined in ISO 4217.
+	// The three-letter currency code defined in ISO 4217.
 	CurrencyCode string `protobuf:"bytes,1,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"`
 	// The whole units of the amount.
 	// For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
@@ -526,10 +526,7 @@ func (m *Money) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthMoney
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthMoney
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/money.proto b/google/type/money.proto
index fe5a4f4..1d3d8fd 100644
--- a/google/type/money.proto
+++ b/google/type/money.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
@@ -26,7 +25,7 @@ option objc_class_prefix = "GTP";
 
 // Represents an amount of money with its currency type.
 message Money {
-  // The 3-letter currency code defined in ISO 4217.
+  // The three-letter currency code defined in ISO 4217.
   string currency_code = 1;
 
   // The whole units of the amount.
diff --git a/google/type/month.proto b/google/type/month.proto
index 4a965eb..c66db28 100644
--- a/google/type/month.proto
+++ b/google/type/month.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/type/postal_address.pb.go b/google/type/postal_address.pb.go
index 477eab9..560d81a 100644
--- a/google/type/postal_address.pb.go
+++ b/google/type/postal_address.pb.go
@@ -1170,10 +1170,7 @@ func (m *PostalAddress) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthPostalAddress
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthPostalAddress
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/postal_address.proto b/google/type/postal_address.proto
index c8a3cc2..f5307cb 100644
--- a/google/type/postal_address.proto
+++ b/google/type/postal_address.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/type/quaternion.pb.go b/google/type/quaternion.pb.go
index d28bba3..fa49809 100644
--- a/google/type/quaternion.pb.go
+++ b/google/type/quaternion.pb.go
@@ -584,10 +584,7 @@ func (m *Quaternion) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthQuaternion
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthQuaternion
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/quaternion.proto b/google/type/quaternion.proto
index ddb422a..4bbb08c 100644
--- a/google/type/quaternion.proto
+++ b/google/type/quaternion.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";
 
diff --git a/google/type/timeofday.pb.go b/google/type/timeofday.pb.go
index 28eb857..7723b57 100644
--- a/google/type/timeofday.pb.go
+++ b/google/type/timeofday.pb.go
@@ -562,10 +562,7 @@ func (m *TimeOfDay) Unmarshal(dAtA []byte) error {
 			if err != nil {
 				return err
 			}
-			if skippy < 0 {
-				return ErrInvalidLengthTimeofday
-			}
-			if (iNdEx + skippy) < 0 {
+			if (skippy < 0) || (iNdEx+skippy) < 0 {
 				return ErrInvalidLengthTimeofday
 			}
 			if (iNdEx + skippy) > l {
diff --git a/google/type/timeofday.proto b/google/type/timeofday.proto
index 93d4d8c..b58ddde 100644
--- a/google/type/timeofday.proto
+++ b/google/type/timeofday.proto
@@ -1,4 +1,4 @@
-// Copyright 2019 Google LLC.
+// Copyright 2020 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-//
 
 syntax = "proto3";