From df60624c1e9b9d2973e889c7a1cff73155da81c4 Mon Sep 17 00:00:00 2001
From: Michael Darakananda <pongad@google.com>
Date: Tue, 6 Mar 2018 13:09:42 +1100
Subject: [PATCH] update from googleapis (#55)

googleapis: 26b634d2724ac5dd30ae0b0cbfb01f07f2e4050e
---
 .../cloud/dialogflow/v2beta1/context.pb.go    |   98 +-
 .../cloud/dialogflow/v2beta1/intent.pb.go     |  321 +--
 .../cloud/dialogflow/v2beta1/session.pb.go    |  214 +-
 .../v2beta1/session_entity_type.pb.go         |  107 +-
 .../texttospeech/v1beta1/cloud_tts.pb.go      |  672 ++++++
 .../cloud/vision/v1p2beta1/geometry.pb.go     |  183 ++
 .../vision/v1p2beta1/image_annotator.pb.go    | 1933 +++++++++++++++++
 .../vision/v1p2beta1/text_annotation.pb.go    |  593 +++++
 .../vision/v1p2beta1/web_detection.pb.go      |  278 +++
 googleapis/monitoring/v3/alert.pb.go          |  904 ++++++++
 googleapis/monitoring/v3/alert_service.pb.go  |  527 +++++
 googleapis/monitoring/v3/common.pb.go         |  350 +--
 googleapis/monitoring/v3/group.pb.go          |    6 +-
 googleapis/monitoring/v3/group_service.pb.go  |   30 +-
 googleapis/monitoring/v3/metric.pb.go         |    8 +-
 googleapis/monitoring/v3/metric_service.pb.go |   48 +-
 .../monitoring/v3/mutation_record.pb.go       |   67 +
 googleapis/monitoring/v3/notification.pb.go   |  313 +++
 .../monitoring/v3/notification_service.pb.go  | 1035 +++++++++
 googleapis/monitoring/v3/uptime.pb.go         |   24 +-
 googleapis/monitoring/v3/uptime_service.pb.go |   36 +-
 21 files changed, 7184 insertions(+), 563 deletions(-)
 create mode 100644 googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go
 create mode 100644 googleapis/cloud/vision/v1p2beta1/geometry.pb.go
 create mode 100644 googleapis/cloud/vision/v1p2beta1/image_annotator.pb.go
 create mode 100644 googleapis/cloud/vision/v1p2beta1/text_annotation.pb.go
 create mode 100644 googleapis/cloud/vision/v1p2beta1/web_detection.pb.go
 create mode 100644 googleapis/monitoring/v3/alert.pb.go
 create mode 100644 googleapis/monitoring/v3/alert_service.pb.go
 create mode 100644 googleapis/monitoring/v3/mutation_record.pb.go
 create mode 100644 googleapis/monitoring/v3/notification.pb.go
 create mode 100644 googleapis/monitoring/v3/notification_service.pb.go

diff --git a/googleapis/cloud/dialogflow/v2beta1/context.pb.go b/googleapis/cloud/dialogflow/v2beta1/context.pb.go
index 84c11da5..63066cbb 100644
--- a/googleapis/cloud/dialogflow/v2beta1/context.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/context.pb.go
@@ -528,51 +528,55 @@ var _Contexts_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/context.proto", fileDescriptor1) }
 
 var fileDescriptor1 = []byte{
-	// 731 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xcd, 0x6e, 0xd3, 0x4a,
-	0x14, 0xc7, 0x35, 0xe9, 0xbd, 0x6d, 0x7a, 0xda, 0xdc, 0xab, 0x0e, 0x51, 0x89, 0xd2, 0xa2, 0x46,
-	0x46, 0x40, 0x14, 0x09, 0x5b, 0x84, 0x6f, 0x2a, 0x2a, 0xb5, 0x09, 0xad, 0x2a, 0x81, 0xa8, 0x52,
-	0x60, 0xc1, 0x26, 0x9a, 0x26, 0x27, 0x96, 0xa9, 0xe3, 0x31, 0x9e, 0x09, 0x94, 0xa2, 0x6e, 0x10,
-	0x6f, 0xc0, 0x82, 0x1d, 0x0b, 0x16, 0x2c, 0xfa, 0x06, 0x88, 0x05, 0xe2, 0x19, 0x78, 0x05, 0x1e,
-	0x82, 0x25, 0xf2, 0x78, 0x9c, 0x8f, 0x26, 0x25, 0x71, 0x77, 0xf1, 0xcc, 0x7f, 0xce, 0xf9, 0x9d,
-	0x33, 0xff, 0x63, 0x07, 0xae, 0xda, 0x9c, 0xdb, 0x2e, 0x5a, 0x0d, 0x97, 0x77, 0x9a, 0x56, 0xd3,
-	0x61, 0x2e, 0xb7, 0x5b, 0x2e, 0x7f, 0x6d, 0xbd, 0x2a, 0xef, 0xa1, 0x64, 0xd7, 0xac, 0x06, 0xf7,
-	0x24, 0x1e, 0x48, 0xd3, 0x0f, 0xb8, 0xe4, 0x74, 0x25, 0x92, 0x9b, 0x4a, 0x6e, 0xf6, 0xe4, 0xa6,
-	0x96, 0xe7, 0x97, 0x75, 0x3c, 0xe6, 0x3b, 0x16, 0xf3, 0x3c, 0x2e, 0x99, 0x74, 0xb8, 0x27, 0xa2,
-	0xe3, 0xf9, 0x25, 0xbd, 0xab, 0x9e, 0xf6, 0x3a, 0x2d, 0x0b, 0xdb, 0xbe, 0x7c, 0xa3, 0x37, 0x0b,
-	0x27, 0x37, 0x5b, 0x0e, 0xba, 0xcd, 0x7a, 0x9b, 0x89, 0x7d, 0xad, 0x58, 0x3e, 0xa9, 0x10, 0x32,
-	0xe8, 0x34, 0x34, 0x9b, 0x71, 0x04, 0x33, 0x95, 0x08, 0x96, 0x52, 0xf8, 0xc7, 0x63, 0x6d, 0xcc,
-	0x91, 0x02, 0x29, 0xce, 0xd6, 0xd4, 0x6f, 0x7a, 0x09, 0xfe, 0x73, 0x9d, 0x16, 0x0a, 0x9f, 0x79,
-	0xf5, 0x06, 0xef, 0x78, 0x32, 0x97, 0x2a, 0x90, 0xe2, 0xbf, 0xb5, 0x4c, 0xbc, 0x5a, 0x09, 0x17,
-	0xe9, 0x6d, 0x00, 0x9f, 0x05, 0xac, 0x8d, 0x12, 0x03, 0x91, 0x9b, 0x2a, 0x90, 0xe2, 0x5c, 0xf9,
-	0xbc, 0xa9, 0xcb, 0x8e, 0x13, 0x9b, 0xbb, 0x2a, 0x71, 0xad, 0x4f, 0x6a, 0x38, 0x70, 0xee, 0xa1,
-	0x23, 0xa4, 0x46, 0x10, 0x35, 0x7c, 0xd9, 0x41, 0x21, 0xe9, 0x22, 0x4c, 0xfb, 0x2c, 0x40, 0x4f,
-	0x6a, 0x18, 0xfd, 0x44, 0x97, 0x60, 0xd6, 0x67, 0x36, 0xd6, 0x85, 0x73, 0x88, 0x9a, 0x24, 0x1d,
-	0x2e, 0xec, 0x3a, 0x87, 0x48, 0x2f, 0x84, 0x10, 0x36, 0xd6, 0x25, 0xdf, 0x47, 0x4f, 0x41, 0xcc,
-	0xd6, 0x94, 0xfc, 0x49, 0xb8, 0x60, 0xbc, 0x27, 0x90, 0x1d, 0xcc, 0x25, 0x7c, 0xee, 0x09, 0xa4,
-	0x55, 0x48, 0xeb, 0xfb, 0x12, 0x39, 0x52, 0x98, 0x2a, 0xce, 0x95, 0x8b, 0xe6, 0x98, 0x1b, 0x33,
-	0x75, 0x90, 0x5a, 0xf7, 0x24, 0xbd, 0x0c, 0xff, 0x7b, 0x78, 0x20, 0xeb, 0x7d, 0x08, 0x29, 0x85,
-	0x90, 0x09, 0x97, 0x77, 0xba, 0x18, 0x57, 0x60, 0x61, 0x0b, 0x63, 0x88, 0xb8, 0xde, 0x11, 0xad,
-	0x37, 0x02, 0xc8, 0x56, 0x02, 0x64, 0x12, 0x4f, 0x68, 0x4f, 0xeb, 0xcd, 0x06, 0xcc, 0x68, 0x18,
-	0x95, 0x38, 0x49, 0x15, 0xf1, 0x41, 0xe3, 0x23, 0x81, 0xec, 0x53, 0xbf, 0x39, 0x9c, 0xb4, 0x2f,
-	0x38, 0x39, 0x63, 0x70, 0xba, 0x0a, 0x73, 0x1d, 0x15, 0x5b, 0xb9, 0x53, 0x43, 0xe6, 0x87, 0x5c,
-	0xb2, 0x19, 0x1a, 0xf8, 0x11, 0x13, 0xfb, 0x35, 0x88, 0xe4, 0xe1, 0x6f, 0xa3, 0x04, 0xd9, 0x2a,
-	0xba, 0x38, 0x04, 0x36, 0xaa, 0x73, 0x65, 0xc8, 0x45, 0xda, 0x75, 0xd7, 0x9d, 0xd0, 0x59, 0xe5,
-	0xef, 0x69, 0x48, 0xc7, 0x5a, 0xfa, 0x8d, 0xc0, 0x7c, 0xbf, 0x55, 0xe8, 0x8d, 0xb1, 0xd5, 0x8e,
-	0x70, 0x71, 0xfe, 0x66, 0xc2, 0x53, 0x91, 0x1f, 0x8d, 0xb5, 0x77, 0x3f, 0x7f, 0x7d, 0x48, 0xdd,
-	0xa1, 0xb7, 0xba, 0xaf, 0x93, 0xb7, 0x11, 0xe4, 0x7d, 0x3f, 0xe0, 0x2f, 0xb0, 0x21, 0x85, 0x55,
-	0xb2, 0x98, 0x8d, 0x9e, 0xb4, 0x04, 0x0a, 0x11, 0xbe, 0x29, 0xac, 0xd2, 0x91, 0xd5, 0x75, 0xe2,
-	0x31, 0x01, 0xe8, 0x59, 0x8c, 0x96, 0xc7, 0x52, 0x0c, 0xf9, 0x31, 0x3f, 0xf1, 0xed, 0x8e, 0x82,
-	0x0d, 0xef, 0xe0, 0x6f, 0xa8, 0x5d, 0x52, 0xab, 0x74, 0x44, 0xbf, 0x12, 0xc8, 0x0c, 0xd8, 0x9c,
-	0x8e, 0xef, 0xda, 0xa8, 0xb1, 0x48, 0x80, 0xbc, 0xa5, 0x90, 0xd7, 0x8d, 0x33, 0xf6, 0xf7, 0x5e,
-	0xd7, 0xd0, 0x3f, 0x08, 0x64, 0x06, 0xa6, 0x65, 0x02, 0xf6, 0x51, 0xd3, 0x95, 0x80, 0xfd, 0xb1,
-	0x62, 0xdf, 0x2e, 0xaf, 0xf5, 0xd8, 0xe3, 0x6f, 0x4d, 0x92, 0xb6, 0xf7, 0x6a, 0xf8, 0x44, 0x20,
-	0x33, 0x30, 0x58, 0x13, 0xd4, 0x30, 0x6a, 0x10, 0xf3, 0x8b, 0x43, 0x83, 0xfc, 0x20, 0xfc, 0x4c,
-	0xc5, 0x06, 0x29, 0x9d, 0xd5, 0x20, 0x5f, 0x08, 0x2c, 0x0c, 0x4d, 0x33, 0xbd, 0x3b, 0x21, 0xe4,
-	0xf0, 0x1b, 0x20, 0x09, 0x68, 0x12, 0x5b, 0x6c, 0x1c, 0x13, 0xb8, 0xd8, 0xe0, 0xed, 0x71, 0x60,
-	0x1b, 0xf3, 0x1a, 0x68, 0x27, 0x4c, 0xbf, 0x43, 0x9e, 0x6f, 0xeb, 0x03, 0x36, 0x77, 0x99, 0x67,
-	0x9b, 0x3c, 0xb0, 0x2d, 0x1b, 0x3d, 0x05, 0x67, 0x45, 0x5b, 0xcc, 0x77, 0xc4, 0xa9, 0xff, 0x35,
-	0x56, 0x7b, 0x4b, 0xbf, 0x09, 0xf9, 0x9c, 0x4a, 0x55, 0x37, 0x8f, 0x53, 0x2b, 0x5b, 0x51, 0xcc,
-	0x8a, 0x82, 0xa8, 0xf6, 0x20, 0x9e, 0x45, 0x87, 0xf6, 0xa6, 0x55, 0xfc, 0xeb, 0x7f, 0x02, 0x00,
-	0x00, 0xff, 0xff, 0x69, 0x4e, 0x3f, 0xa2, 0xca, 0x08, 0x00, 0x00,
+	// 793 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6f, 0xd3, 0x48,
+	0x14, 0xd7, 0xb8, 0xbb, 0xfd, 0x98, 0x34, 0xbb, 0xea, 0x6c, 0xd4, 0x8d, 0xd2, 0xae, 0x1a, 0x79,
+	0xb5, 0x4b, 0x14, 0x09, 0x5b, 0x98, 0x2f, 0x41, 0x05, 0x52, 0x9b, 0xd0, 0xaa, 0x52, 0x91, 0xaa,
+	0xb4, 0x70, 0xe8, 0x25, 0x9a, 0x26, 0x2f, 0x96, 0xa9, 0x33, 0x63, 0x3c, 0x13, 0x28, 0x45, 0x39,
+	0xf0, 0x71, 0xe1, 0xc4, 0x01, 0x09, 0xc4, 0x09, 0x89, 0x03, 0x87, 0xfe, 0x3b, 0xfc, 0x0b, 0x3d,
+	0x72, 0xe0, 0xc8, 0x0d, 0x64, 0x7b, 0x9c, 0x8f, 0xc6, 0x25, 0x49, 0xcb, 0xcd, 0x7e, 0xf3, 0x7b,
+	0x6f, 0x7e, 0xbf, 0x37, 0xbf, 0x79, 0x36, 0xbe, 0x68, 0x73, 0x6e, 0xbb, 0x60, 0xd6, 0x5c, 0xde,
+	0xaa, 0x9b, 0x75, 0x87, 0xba, 0xdc, 0x6e, 0xb8, 0xfc, 0xb1, 0xf9, 0xc8, 0xda, 0x03, 0x49, 0x2f,
+	0x99, 0x35, 0xce, 0x24, 0x1c, 0x48, 0xc3, 0xf3, 0xb9, 0xe4, 0x64, 0x29, 0x82, 0x1b, 0x21, 0xdc,
+	0xe8, 0xc2, 0x0d, 0x05, 0xcf, 0x2d, 0xaa, 0x7a, 0xd4, 0x73, 0x4c, 0xca, 0x18, 0x97, 0x54, 0x3a,
+	0x9c, 0x89, 0x28, 0x3d, 0xb7, 0xa0, 0x56, 0xc3, 0xb7, 0xbd, 0x56, 0xc3, 0x84, 0xa6, 0x27, 0x9f,
+	0xa8, 0xc5, 0xfc, 0xc9, 0xc5, 0x86, 0x03, 0x6e, 0xbd, 0xda, 0xa4, 0x62, 0x5f, 0x21, 0x16, 0x4f,
+	0x22, 0x84, 0xf4, 0x5b, 0x35, 0xc5, 0x4d, 0x6f, 0xe3, 0xa9, 0x52, 0x44, 0x96, 0x10, 0xfc, 0x1b,
+	0xa3, 0x4d, 0xc8, 0xa2, 0x3c, 0x2a, 0xcc, 0x54, 0xc2, 0x67, 0xf2, 0x1f, 0xfe, 0xc3, 0x75, 0x1a,
+	0x20, 0x3c, 0xca, 0xaa, 0x35, 0xde, 0x62, 0x32, 0xab, 0xe5, 0x51, 0xe1, 0xf7, 0x4a, 0x3a, 0x8e,
+	0x96, 0x82, 0x20, 0xb9, 0x8e, 0xb1, 0x47, 0x7d, 0xda, 0x04, 0x09, 0xbe, 0xc8, 0x4e, 0xe4, 0x51,
+	0x21, 0x65, 0xfd, 0x6d, 0x28, 0xd9, 0xf1, 0xc6, 0xc6, 0x76, 0xb8, 0x71, 0xa5, 0x07, 0xaa, 0x3b,
+	0xf8, 0xaf, 0x4d, 0x47, 0x48, 0x45, 0x41, 0x54, 0xe0, 0x61, 0x0b, 0x84, 0x24, 0xf3, 0x78, 0xd2,
+	0xa3, 0x3e, 0x30, 0xa9, 0xc8, 0xa8, 0x37, 0xb2, 0x80, 0x67, 0x3c, 0x6a, 0x43, 0x55, 0x38, 0x87,
+	0xa0, 0x98, 0x4c, 0x07, 0x81, 0x6d, 0xe7, 0x10, 0xc8, 0x3f, 0x01, 0x09, 0x1b, 0xaa, 0x92, 0xef,
+	0x03, 0x0b, 0x49, 0xcc, 0x54, 0x42, 0xf8, 0x4e, 0x10, 0xd0, 0x5f, 0x22, 0x9c, 0xe9, 0xdf, 0x4b,
+	0x78, 0x9c, 0x09, 0x20, 0x65, 0x3c, 0xad, 0xce, 0x4b, 0x64, 0x51, 0x7e, 0xa2, 0x90, 0xb2, 0x0a,
+	0xc6, 0x90, 0x13, 0x33, 0x54, 0x91, 0x4a, 0x27, 0x93, 0xfc, 0x8f, 0xff, 0x64, 0x70, 0x20, 0xab,
+	0x3d, 0x14, 0xb4, 0x90, 0x42, 0x3a, 0x08, 0x6f, 0x75, 0x68, 0x5c, 0xc0, 0x73, 0xeb, 0x10, 0x93,
+	0x88, 0xf5, 0x26, 0xb4, 0x5e, 0xf7, 0x71, 0xa6, 0xe4, 0x03, 0x95, 0x70, 0x02, 0x7b, 0x5a, 0x6f,
+	0x56, 0xf1, 0x94, 0x22, 0x13, 0x6e, 0x3c, 0x8e, 0x8a, 0x38, 0x51, 0x7f, 0x87, 0x70, 0xe6, 0x9e,
+	0x57, 0x1f, 0xdc, 0xb4, 0xa7, 0x38, 0x3a, 0x63, 0x71, 0xb2, 0x8c, 0x53, 0xad, 0xb0, 0x76, 0xe8,
+	0x4e, 0x45, 0x32, 0x37, 0xe0, 0x92, 0xb5, 0xc0, 0xc0, 0x77, 0xa9, 0xd8, 0xaf, 0xe0, 0x08, 0x1e,
+	0x3c, 0xeb, 0x45, 0x9c, 0x29, 0x83, 0x0b, 0x03, 0xc4, 0x92, 0x3a, 0x67, 0xe1, 0x6c, 0x84, 0x5d,
+	0x71, 0xdd, 0x11, 0x9d, 0x65, 0x7d, 0x4f, 0xe1, 0xe9, 0x18, 0x4b, 0x9e, 0x69, 0x78, 0xb6, 0xd7,
+	0x2a, 0xe4, 0xca, 0x50, 0xb5, 0x09, 0x2e, 0xce, 0x5d, 0x1d, 0x33, 0x2b, 0xf2, 0xa3, 0xfe, 0x02,
+	0x3d, 0xff, 0x7c, 0xfc, 0x46, 0x6b, 0x93, 0x6b, 0x9d, 0x79, 0xf2, 0x34, 0x62, 0x79, 0xcb, 0xf3,
+	0xf9, 0x03, 0xa8, 0x49, 0x61, 0x16, 0x4d, 0x6a, 0x03, 0x93, 0xa6, 0x00, 0x21, 0x82, 0x51, 0x61,
+	0x16, 0xdb, 0xf1, 0xd0, 0x11, 0xbb, 0x25, 0xb2, 0x32, 0x3c, 0xd3, 0x6f, 0x31, 0xe9, 0x34, 0x21,
+	0x08, 0x24, 0x15, 0x21, 0x5f, 0x11, 0xc6, 0x5d, 0xa3, 0x12, 0x6b, 0xa8, 0x96, 0x01, 0x57, 0xe7,
+	0x46, 0xf6, 0x48, 0xa2, 0xe4, 0xe0, 0x28, 0x7f, 0x26, 0xb8, 0x43, 0xd5, 0x2c, 0xb6, 0xfb, 0x25,
+	0x27, 0x67, 0x26, 0x0a, 0xee, 0x2d, 0x42, 0x5e, 0x69, 0x38, 0xdd, 0x77, 0xe5, 0xc8, 0xf0, 0x13,
+	0x4c, 0xba, 0xa2, 0x63, 0x08, 0x7f, 0x1b, 0x09, 0x7f, 0x8d, 0xf4, 0x33, 0x1e, 0xf6, 0xcd, 0xf8,
+	0x7a, 0xed, 0x6e, 0xea, 0xe7, 0x3f, 0xf5, 0x4e, 0x35, 0xf2, 0x5e, 0xc3, 0xe9, 0xbe, 0x49, 0x30,
+	0x42, 0x2f, 0x92, 0x26, 0xc7, 0x18, 0xbd, 0xf8, 0x14, 0xf5, 0xe2, 0x03, 0xb2, 0x6e, 0x77, 0x85,
+	0xc4, 0x5f, 0xd2, 0x71, 0xdc, 0xd0, 0xed, 0xc9, 0x8e, 0xb5, 0x31, 0x6a, 0xa9, 0xa1, 0xf6, 0xe8,
+	0xf6, 0xe6, 0x18, 0xe1, 0x74, 0xdf, 0x30, 0x1a, 0xa1, 0x37, 0x49, 0xc3, 0x2b, 0x37, 0x3f, 0x30,
+	0xfc, 0xee, 0x04, 0x9f, 0xf6, 0xce, 0x75, 0x28, 0x9e, 0xf9, 0x3a, 0x14, 0x7f, 0xc1, 0x75, 0xf8,
+	0x82, 0xf0, 0xdc, 0xc0, 0x1c, 0x25, 0x37, 0x46, 0x94, 0x3a, 0x38, 0x7b, 0xc7, 0x92, 0x3b, 0xde,
+	0xc0, 0x2b, 0x9e, 0xdf, 0xfa, 0xab, 0x47, 0x08, 0xff, 0x5b, 0xe3, 0xcd, 0x61, 0xf2, 0x56, 0x67,
+	0x95, 0xac, 0xad, 0x40, 0xc4, 0x16, 0xda, 0xdd, 0x50, 0x09, 0x36, 0x77, 0x29, 0xb3, 0x0d, 0xee,
+	0xdb, 0xa6, 0x0d, 0x2c, 0x94, 0x68, 0x46, 0x4b, 0xd4, 0x73, 0xc4, 0xa9, 0xff, 0x8a, 0xcb, 0xdd,
+	0xd0, 0x37, 0x84, 0x3e, 0x6a, 0x5a, 0x79, 0xed, 0x48, 0x5b, 0x5a, 0x8f, 0x6a, 0x96, 0x42, 0x12,
+	0xe5, 0x2e, 0x89, 0xfb, 0x51, 0xd2, 0xde, 0x64, 0x58, 0xff, 0xf2, 0x8f, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0x61, 0xec, 0x01, 0x66, 0x8a, 0x0a, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/dialogflow/v2beta1/intent.pb.go b/googleapis/cloud/dialogflow/v2beta1/intent.pb.go
index 4d9baf5c..9184b14b 100644
--- a/googleapis/cloud/dialogflow/v2beta1/intent.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/intent.pb.go
@@ -185,7 +185,19 @@ type Intent struct {
 	// Note: If `ml_enabled` setting is set to false, then this intent is not
 	// taken into account during inference in `ML ONLY` match mode. Also,
 	// auto-markup in the UI is turned off.
+	// DEPRECATED! Please use `ml_disabled` field instead.
+	// NOTE: If neither `ml_enabled` nor `ml_disabled` field is set, then the
+	// default value is determined as follows:
+	// - Before April 15th, 2018 the default is:
+	//   ml_enabled = false / ml_disabled = true.
+	// - After April 15th, 2018 the default is:
+	//   ml_enabled = true / ml_disabled = false.
 	MlEnabled bool `protobuf:"varint,5,opt,name=ml_enabled,json=mlEnabled" json:"ml_enabled,omitempty"`
+	// Optional. Indicates whether Machine Learning is disabled for the intent.
+	// Note: If `ml_disabled` setting is set to true, then this intent is not
+	// taken into account during inference in `ML ONLY` match mode. Also,
+	// auto-markup in the UI is turned off.
+	MlDisabled bool `protobuf:"varint,19,opt,name=ml_disabled,json=mlDisabled" json:"ml_disabled,omitempty"`
 	// Optional. The list of context names required for this intent to be
 	// triggered.
 	// Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`.
@@ -277,6 +289,13 @@ func (m *Intent) GetMlEnabled() bool {
 	return false
 }
 
+func (m *Intent) GetMlDisabled() bool {
+	if m != nil {
+		return m.MlDisabled
+	}
+	return false
+}
+
 func (m *Intent) GetInputContextNames() []string {
 	if m != nil {
 		return m.InputContextNames
@@ -2375,14 +2394,14 @@ var _Intents_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/intent.proto", fileDescriptor3) }
 
 var fileDescriptor3 = []byte{
-	// 2577 bytes of a gzipped FileDescriptorProto
+	// 2592 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0xcd, 0x73, 0x23, 0x47,
 	0xd9, 0xf7, 0xe8, 0xc3, 0x96, 0x1e, 0xc9, 0xb2, 0xdc, 0xde, 0x6c, 0xb4, 0x93, 0xa4, 0xe2, 0x28,
 	0x6f, 0xf2, 0x3a, 0x7e, 0x13, 0xe9, 0x8d, 0x92, 0x37, 0x1f, 0xbb, 0x6f, 0x12, 0x64, 0x5b, 0x5e,
 	0x0b, 0xcb, 0x96, 0x76, 0x2c, 0x6f, 0xd8, 0x14, 0x30, 0x35, 0x92, 0xda, 0xda, 0xc6, 0xa3, 0x99,
-	0xc9, 0x74, 0xcb, 0x1b, 0x05, 0x52, 0x45, 0x51, 0x05, 0x1c, 0xb8, 0x50, 0x70, 0xa2, 0xb8, 0xc1,
-	0x29, 0x14, 0x07, 0x2a, 0x37, 0xfe, 0x04, 0x0e, 0x9c, 0x38, 0xe6, 0x40, 0x51, 0x45, 0xf1, 0x27,
-	0x50, 0xdc, 0xa0, 0xfa, 0x63, 0xa4, 0x91, 0xa5, 0x45, 0x92, 0xbd, 0x70, 0xe1, 0x36, 0xfd, 0x74,
+	0xc9, 0x74, 0xcb, 0x1b, 0x05, 0x52, 0x45, 0x51, 0x05, 0x1c, 0xb8, 0x50, 0x70, 0xa0, 0x28, 0x6e,
+	0x70, 0x0a, 0xc5, 0x81, 0xca, 0x8d, 0x3f, 0x81, 0x03, 0x27, 0x8e, 0x39, 0x50, 0x54, 0x51, 0xfc,
+	0x0d, 0xdc, 0xa0, 0xfa, 0x63, 0xa4, 0x91, 0xa5, 0x45, 0x92, 0xbd, 0x70, 0xe1, 0x36, 0xfd, 0x74,
 	0xf7, 0xef, 0xf9, 0xea, 0xfe, 0x3d, 0xdd, 0x2d, 0xc1, 0xab, 0x5d, 0xd7, 0xed, 0xda, 0xb8, 0xd8,
 	0xb6, 0xdd, 0x7e, 0xa7, 0xd8, 0x21, 0x96, 0xed, 0x76, 0xcf, 0x6c, 0xf7, 0x51, 0xf1, 0xa2, 0xd4,
 	0xc2, 0xcc, 0x7a, 0xbd, 0x48, 0x1c, 0x86, 0x1d, 0x56, 0xf0, 0x7c, 0x97, 0xb9, 0xe8, 0x79, 0x39,
@@ -2391,151 +2410,151 @@ var fileDescriptor3 = []byte{
 	0xf0, 0x27, 0x4a, 0x9b, 0xfe, 0xa2, 0x1a, 0x6e, 0xbb, 0x4e, 0xd7, 0xef, 0x3b, 0x0e, 0x71, 0xba,
 	0x45, 0xd7, 0xc3, 0xfe, 0x18, 0xe6, 0x33, 0x6a, 0x90, 0x68, 0xb5, 0xfa, 0x67, 0x45, 0xdc, 0xf3,
 	0xd8, 0x40, 0x75, 0x6e, 0x5e, 0xee, 0x3c, 0x23, 0xd8, 0xee, 0x98, 0x3d, 0x8b, 0x9e, 0xab, 0x11,
-	0xcf, 0x5e, 0x1e, 0x41, 0x99, 0xdf, 0x6f, 0x2b, 0x0b, 0xf2, 0x7f, 0x7d, 0x05, 0x96, 0xab, 0x22,
-	0x00, 0x08, 0x41, 0xcc, 0xb1, 0x7a, 0x38, 0xa7, 0x6d, 0x6a, 0x5b, 0x49, 0x43, 0x7c, 0xa3, 0x17,
-	0x20, 0xdd, 0x21, 0xd4, 0xb3, 0xad, 0x81, 0x29, 0xfa, 0x22, 0xa2, 0x2f, 0xa5, 0x64, 0xc7, 0x7c,
-	0xc8, 0x03, 0x58, 0x7d, 0x84, 0x5b, 0x0f, 0x5d, 0xf7, 0xdc, 0xa4, 0xcc, 0x62, 0x38, 0xb7, 0xbc,
-	0xa9, 0x6d, 0x65, 0x4a, 0x6f, 0x16, 0x66, 0x44, 0xb2, 0x20, 0xd5, 0x16, 0x3e, 0x94, 0x93, 0x4f,
-	0xf8, 0x5c, 0x23, 0xfd, 0x28, 0xd4, 0x42, 0x3a, 0x24, 0x3c, 0x9f, 0xb8, 0x3e, 0x61, 0x83, 0x5c,
-	0x74, 0x53, 0xdb, 0x8a, 0x1b, 0xc3, 0x36, 0x7a, 0x1e, 0x52, 0x84, 0x9a, 0x67, 0x96, 0x6d, 0xb7,
-	0xac, 0xf6, 0x79, 0x2e, 0xb6, 0xa9, 0x6d, 0x25, 0x0c, 0x20, 0x74, 0x5f, 0x49, 0xd0, 0x73, 0x00,
-	0x3d, 0xdb, 0xc4, 0x8e, 0xd5, 0xb2, 0x71, 0x27, 0x17, 0x17, 0xfd, 0xc9, 0x9e, 0x5d, 0x91, 0x02,
-	0x54, 0x80, 0x0d, 0xe2, 0x78, 0x7d, 0x66, 0xaa, 0x8c, 0x08, 0xff, 0x68, 0x6e, 0x65, 0x33, 0xba,
-	0x95, 0x34, 0xd6, 0x45, 0xd7, 0xae, 0xec, 0xe1, 0x5e, 0x52, 0x74, 0x13, 0x96, 0xf1, 0x05, 0x76,
-	0x18, 0xcd, 0x25, 0xc4, 0x10, 0xd5, 0x42, 0x16, 0x64, 0x99, 0x6f, 0x11, 0x9e, 0x3a, 0xd3, 0x7b,
-	0xe8, 0x5b, 0x14, 0xd3, 0x5c, 0x72, 0x33, 0xba, 0x95, 0x2a, 0xbd, 0x35, 0x6f, 0x04, 0x9a, 0x6a,
-	0x7e, 0x43, 0x4c, 0x37, 0xd6, 0xd8, 0x58, 0x5b, 0xa8, 0xb6, 0xda, 0x7c, 0x45, 0xe4, 0x40, 0x84,
-	0x5f, 0xb5, 0xd0, 0x3d, 0x58, 0x73, 0xfb, 0x2c, 0xe4, 0x03, 0xcd, 0xa5, 0x84, 0xe6, 0xad, 0x99,
-	0x9a, 0x95, 0x6b, 0x46, 0x46, 0x02, 0xa8, 0x26, 0x45, 0x2f, 0x41, 0xc6, 0xc7, 0x14, 0x87, 0x10,
-	0xd3, 0x22, 0x70, 0xab, 0x42, 0x3a, 0x1c, 0x76, 0x0f, 0xc0, 0xb3, 0x7c, 0xab, 0x87, 0x19, 0xf6,
-	0x69, 0x6e, 0x55, 0x28, 0x7d, 0x7d, 0x5e, 0x77, 0x1b, 0xc1, 0x4c, 0x23, 0x04, 0x82, 0x0e, 0x21,
-	0xd1, 0xc3, 0x94, 0x5a, 0x5d, 0x4c, 0x73, 0x19, 0x01, 0x58, 0x9c, 0x17, 0xf0, 0x48, 0xce, 0x33,
-	0x86, 0x00, 0xe8, 0x02, 0xf4, 0x0e, 0x3e, 0xb3, 0xfa, 0x36, 0x33, 0x7d, 0x4c, 0x3d, 0xd7, 0xa1,
-	0xd8, 0xf4, 0x6c, 0x8b, 0x9d, 0xb9, 0x7e, 0x8f, 0xe6, 0xd6, 0x36, 0xa3, 0x5b, 0x99, 0xd2, 0x3b,
-	0x0b, 0xc2, 0x17, 0x1a, 0x0a, 0xc0, 0xc8, 0x29, 0x6c, 0x43, 0x41, 0x07, 0x1d, 0x14, 0xbd, 0x0b,
-	0xb7, 0x7c, 0xd7, 0x65, 0xe6, 0x99, 0x6b, 0xdb, 0xee, 0xa3, 0xbe, 0x67, 0x4a, 0x6e, 0x91, 0x7b,
-	0x27, 0x2b, 0x92, 0x77, 0x93, 0x0f, 0xd8, 0x57, 0xfd, 0x52, 0x83, 0xd8, 0x46, 0xef, 0xc1, 0x33,
-	0x9e, 0xe5, 0xf3, 0xc1, 0x53, 0x27, 0xaf, 0x8b, 0xc9, 0x39, 0x39, 0x64, 0xca, 0x74, 0x1b, 0x6e,
-	0x5c, 0x9e, 0x47, 0x9c, 0x33, 0x37, 0x87, 0x44, 0x28, 0x6f, 0xcf, 0xeb, 0xeb, 0x38, 0x72, 0xd5,
-	0x39, 0x73, 0x0d, 0x74, 0x36, 0x21, 0xd3, 0x7f, 0x19, 0x85, 0xcc, 0xf8, 0xaa, 0x9d, 0xca, 0x1e,
-	0x75, 0x88, 0xb1, 0x81, 0x27, 0x59, 0x23, 0x53, 0xba, 0x73, 0xb5, 0xfd, 0x50, 0x68, 0x0e, 0x3c,
-	0x6c, 0x08, 0x20, 0x74, 0x0f, 0xe2, 0x9e, 0xe5, 0x33, 0x9a, 0x8b, 0x0a, 0xb7, 0xae, 0x8a, 0xd8,
-	0xb0, 0x7c, 0x66, 0x48, 0x24, 0xb4, 0x0d, 0xeb, 0x8c, 0xf4, 0x30, 0x35, 0xad, 0x4e, 0x07, 0x77,
-	0xcc, 0xb6, 0xdb, 0x77, 0x98, 0x60, 0x93, 0xb8, 0xb1, 0x26, 0x3a, 0xca, 0x5c, 0xbe, 0xcb, 0xc5,
-	0x3a, 0x83, 0x18, 0x9f, 0xca, 0x7d, 0xe5, 0xfb, 0x20, 0xf0, 0x95, 0x7f, 0x73, 0x3e, 0xc2, 0x0e,
-	0x23, 0x6c, 0x60, 0x0e, 0x5d, 0x4e, 0x1a, 0x20, 0x45, 0xdc, 0x03, 0x74, 0x03, 0xe2, 0x96, 0x4d,
-	0x2c, 0x2a, 0x98, 0x2c, 0x69, 0xc8, 0x06, 0x27, 0xd8, 0x3e, 0xc5, 0xbe, 0xd9, 0xc1, 0x67, 0xc4,
-	0xc1, 0x1d, 0xc5, 0x63, 0x29, 0x2e, 0xdb, 0x93, 0xa2, 0xfc, 0xdb, 0x10, 0x53, 0x00, 0xd9, 0xe6,
-	0x83, 0x46, 0xc5, 0x3c, 0x3d, 0x3e, 0x69, 0x54, 0x76, 0xab, 0xfb, 0xd5, 0xca, 0x5e, 0x76, 0x09,
-	0xa5, 0x60, 0xa5, 0xf2, 0xb5, 0xf2, 0x51, 0xa3, 0x56, 0xc9, 0x6a, 0x28, 0x0d, 0x89, 0x66, 0xe5,
-	0xa8, 0x51, 0x2b, 0x37, 0x2b, 0xd9, 0x88, 0xfe, 0xc3, 0x08, 0x24, 0x87, 0x9b, 0xed, 0xaa, 0xf4,
-	0x7e, 0x03, 0xe2, 0x17, 0x96, 0xdd, 0xc7, 0x81, 0xd9, 0xa2, 0x81, 0x5e, 0x84, 0xd5, 0x60, 0x83,
-	0xc9, 0xde, 0x98, 0xe8, 0x4d, 0x2b, 0xe1, 0x7d, 0x31, 0xe8, 0x6d, 0xc8, 0x85, 0x42, 0x62, 0x8e,
-	0x69, 0x8a, 0x8b, 0xf1, 0x4f, 0x8d, 0xe2, 0xb3, 0x17, 0xd2, 0xf9, 0x2c, 0x24, 0x7b, 0x96, 0xd3,
-	0xb1, 0x98, 0xeb, 0x0f, 0x44, 0x39, 0xe1, 0xcc, 0x1d, 0x08, 0x50, 0x0e, 0x56, 0x3c, 0xdf, 0xed,
-	0x79, 0x2c, 0x60, 0xeb, 0xa0, 0x89, 0x9e, 0x86, 0x15, 0x42, 0x4d, 0x9b, 0x50, 0x96, 0x4b, 0x88,
-	0x59, 0xcb, 0x84, 0xd6, 0x08, 0x65, 0xfa, 0x4f, 0x74, 0x58, 0x51, 0xdb, 0x18, 0x7d, 0x35, 0x94,
-	0xbc, 0xd4, 0xfc, 0x65, 0x2a, 0x60, 0x81, 0x26, 0xfe, 0x84, 0x1d, 0x2c, 0xa9, 0xa4, 0x1f, 0x41,
-	0x9c, 0xf4, 0xac, 0xae, 0x0c, 0x5c, 0xaa, 0xf4, 0x7f, 0x8b, 0x82, 0x55, 0xf9, 0xe4, 0x83, 0x25,
-	0x43, 0xa2, 0xa0, 0x36, 0xac, 0x7e, 0xdc, 0x27, 0xed, 0x73, 0xd3, 0xc7, 0x9e, 0x4d, 0xb0, 0x5c,
-	0x2a, 0xa9, 0xd2, 0xff, 0x2f, 0x0a, 0x7b, 0x8f, 0x83, 0x18, 0x12, 0xe3, 0x60, 0xc9, 0x48, 0x7f,
-	0x1c, 0x6a, 0x73, 0xff, 0xdb, 0x96, 0x2f, 0x57, 0xda, 0x15, 0xfc, 0xdf, 0xb5, 0xfc, 0x0e, 0xf7,
-	0x9f, 0x63, 0xa0, 0x37, 0x60, 0xc5, 0xb3, 0x06, 0xb6, 0x6b, 0xc9, 0x02, 0x9b, 0x2a, 0x3d, 0x1d,
-	0xc0, 0x05, 0xa7, 0x8d, 0xc2, 0x89, 0x38, 0x6d, 0x1c, 0x2c, 0x19, 0xc1, 0x48, 0x64, 0x43, 0x96,
-	0x92, 0x9e, 0x67, 0xe3, 0x21, 0x37, 0xf3, 0x44, 0xf2, 0xd9, 0x1f, 0x2c, 0x6a, 0xcc, 0x89, 0xc0,
-	0x09, 0x78, 0x98, 0xfb, 0xba, 0x46, 0xc7, 0x45, 0xe8, 0x23, 0x80, 0x96, 0x45, 0x49, 0xdb, 0x14,
-	0x4e, 0x27, 0x84, 0x9e, 0x77, 0x17, 0xd5, 0xb3, 0xc3, 0x11, 0x94, 0xe7, 0xc9, 0x56, 0xd0, 0x40,
-	0x26, 0xa4, 0x68, 0xbf, 0xdb, 0xc5, 0x54, 0x1c, 0xd7, 0x72, 0x49, 0x01, 0x7e, 0x67, 0x61, 0x27,
-	0x46, 0x10, 0x07, 0x4b, 0x46, 0x18, 0x11, 0x51, 0xd8, 0xb0, 0x89, 0x73, 0x6e, 0xba, 0x7d, 0x66,
-	0x8e, 0xe4, 0xe2, 0x18, 0x90, 0x2a, 0x95, 0x17, 0x55, 0x54, 0x23, 0xce, 0x79, 0xbd, 0xcf, 0x46,
-	0xfa, 0x0e, 0x96, 0x8c, 0x75, 0xfb, 0xb2, 0x10, 0x7d, 0x03, 0x52, 0x7c, 0x0b, 0x99, 0x14, 0xdb,
-	0xb8, 0xcd, 0x72, 0x29, 0xa1, 0xec, 0xf6, 0xe2, 0xca, 0x28, 0x3b, 0x11, 0x08, 0x07, 0x4b, 0x06,
-	0xd8, 0xc3, 0x16, 0x22, 0xb0, 0xd6, 0xb6, 0x7c, 0xb7, 0x4f, 0xb1, 0x1d, 0xa8, 0x48, 0x0b, 0x15,
-	0xef, 0x5f, 0x61, 0x29, 0x0a, 0x98, 0xa1, 0x9a, 0x4c, 0x7b, 0x4c, 0x82, 0x9a, 0x90, 0x08, 0xaa,
-	0xbe, 0x3a, 0x95, 0x5e, 0xbd, 0xe8, 0x0f, 0x91, 0x74, 0x1d, 0x62, 0x9c, 0x04, 0x42, 0x55, 0x20,
-	0x1a, 0x54, 0x01, 0xfd, 0x04, 0xe2, 0x62, 0x4f, 0xa3, 0x67, 0x20, 0x29, 0xf6, 0xb4, 0xd9, 0xf7,
-	0x89, 0xa2, 0xdc, 0x84, 0x10, 0x9c, 0xfa, 0x04, 0xbd, 0x06, 0xc8, 0x6a, 0xb7, 0x31, 0xa5, 0xa4,
-	0x45, 0x6c, 0xc1, 0x8f, 0x1c, 0x47, 0x92, 0xef, 0xfa, 0x58, 0x0f, 0x57, 0xa4, 0x57, 0x21, 0x1d,
-	0xde, 0xd1, 0x9c, 0x92, 0x19, 0x61, 0x76, 0x40, 0xe5, 0xb2, 0xc1, 0x29, 0x79, 0x9c, 0x3c, 0x22,
-	0xc2, 0xae, 0xb1, 0xcd, 0xaf, 0xff, 0x45, 0x83, 0x98, 0x58, 0xba, 0xd3, 0x31, 0x74, 0x48, 0xd0,
-	0x7e, 0x4b, 0x76, 0x48, 0x73, 0x86, 0xed, 0x71, 0x8f, 0xa2, 0x97, 0x3c, 0x3a, 0x85, 0x95, 0x56,
-	0x9f, 0x31, 0xbe, 0x0b, 0x62, 0x8b, 0x95, 0xe6, 0x30, 0xaf, 0x14, 0x76, 0x04, 0x86, 0x11, 0x60,
-	0xe9, 0xef, 0xc0, 0xb2, 0x14, 0x4d, 0x2d, 0xb9, 0xfc, 0x7a, 0xe0, 0x52, 0x26, 0xce, 0xff, 0xca,
-	0xda, 0xa0, 0xad, 0xf7, 0x20, 0x33, 0x4e, 0x0e, 0xe8, 0xbf, 0x20, 0x23, 0xce, 0xf9, 0xcc, 0x35,
-	0xa9, 0x87, 0x71, 0xfb, 0xa1, 0xc2, 0x4a, 0x73, 0x69, 0xd3, 0x3d, 0x11, 0x32, 0xae, 0x87, 0xd2,
-	0x9e, 0xad, 0xf0, 0xc4, 0x77, 0xb8, 0x4a, 0x0a, 0x1b, 0xa2, 0x63, 0x55, 0x52, 0xa4, 0xe8, 0x3b,
-	0xb0, 0x76, 0x89, 0x8b, 0x10, 0x99, 0x42, 0x73, 0x9a, 0x88, 0xcd, 0xfb, 0xd7, 0xa3, 0xb9, 0x09,
-	0x8e, 0xd3, 0x7f, 0x17, 0x85, 0xe4, 0x90, 0xa2, 0xae, 0x90, 0xda, 0x97, 0x20, 0xc3, 0x57, 0xb6,
-	0xc5, 0x18, 0xee, 0x84, 0x5d, 0x5c, 0x1d, 0x4a, 0xc5, 0x82, 0x3f, 0x0c, 0xaa, 0x5d, 0xec, 0x1a,
-	0xd5, 0x2e, 0xa8, 0x75, 0x1f, 0x8d, 0x56, 0x4c, 0x5c, 0x44, 0xe5, 0x2b, 0x57, 0x26, 0xe5, 0x89,
-	0x65, 0xf3, 0x5b, 0x6d, 0xb8, 0x6e, 0xa6, 0x07, 0xe3, 0x02, 0xd6, 0x5c, 0x0f, 0x3b, 0x7c, 0x29,
-	0x9b, 0xea, 0x6a, 0x25, 0x2b, 0xf8, 0xf1, 0x75, 0x8d, 0x28, 0xd4, 0x3d, 0xec, 0x9c, 0xfa, 0xa4,
-	0x2c, 0x50, 0x8d, 0x55, 0x37, 0xdc, 0xd4, 0x5f, 0x80, 0xd5, 0xb1, 0x7e, 0x94, 0x85, 0xe8, 0x88,
-	0x20, 0xf8, 0xa7, 0x9e, 0x07, 0x08, 0x71, 0xf1, 0x54, 0xf3, 0xf5, 0x73, 0x48, 0x85, 0x8a, 0x06,
-	0xfa, 0xfa, 0x78, 0x19, 0xd2, 0x16, 0x3b, 0xf2, 0x4f, 0x96, 0xa1, 0xb1, 0x1a, 0xa4, 0x37, 0x60,
-	0x7d, 0xa2, 0x70, 0xa0, 0x57, 0x20, 0xdb, 0xe1, 0x9f, 0x8e, 0x78, 0xa9, 0x30, 0x43, 0x07, 0xcb,
-	0xb5, 0x90, 0x5c, 0x1c, 0xe6, 0x94, 0x8b, 0x91, 0x91, 0x8b, 0x5f, 0x46, 0x00, 0x46, 0xe5, 0xe1,
-	0x31, 0x29, 0x3a, 0x85, 0x38, 0x61, 0xb8, 0x27, 0x69, 0xec, 0x0a, 0x47, 0x83, 0x91, 0x82, 0x42,
-	0x95, 0xe1, 0x9e, 0x21, 0xd1, 0xf4, 0x3f, 0x6a, 0x10, 0xe3, 0x6d, 0x64, 0x40, 0x4c, 0x5c, 0x90,
-	0xb4, 0xab, 0xd5, 0x1e, 0x09, 0xcd, 0x91, 0xc4, 0x25, 0x49, 0x60, 0x8d, 0x3c, 0x89, 0x84, 0x3d,
-	0xd9, 0x84, 0x54, 0x07, 0xd3, 0xb6, 0x4f, 0x3c, 0xb1, 0xd0, 0x02, 0xf6, 0x18, 0x89, 0x9e, 0xe8,
-	0xc6, 0xd2, 0x7f, 0x1f, 0x81, 0xcc, 0x78, 0x65, 0x44, 0x0f, 0x82, 0x58, 0xca, 0xa5, 0xb1, 0x7b,
-	0xbd, 0x42, 0xfb, 0x1f, 0x16, 0xcf, 0xf7, 0x21, 0x33, 0x6e, 0x1c, 0x5f, 0xd1, 0xe7, 0x78, 0x10,
-	0x6c, 0xda, 0x73, 0x3c, 0x10, 0xe4, 0x3a, 0x70, 0x5c, 0x67, 0xd0, 0x0b, 0xca, 0xee, 0xb0, 0x9d,
-	0xff, 0x91, 0x06, 0x89, 0xe0, 0x14, 0x81, 0x72, 0x70, 0x83, 0xdf, 0xce, 0xf6, 0xeb, 0xc6, 0xd1,
-	0xa5, 0x7b, 0x5c, 0x1a, 0x12, 0xfb, 0xe5, 0xdd, 0xca, 0x4e, 0xbd, 0x7e, 0x98, 0xd5, 0x50, 0x12,
-	0xe2, 0x27, 0xb5, 0xf2, 0xee, 0x61, 0x36, 0x22, 0xef, 0x74, 0xb5, 0xca, 0x5d, 0xa3, 0x7c, 0x94,
-	0x8d, 0xa2, 0x15, 0x88, 0x1e, 0x56, 0x0f, 0xb3, 0x31, 0x31, 0xe2, 0xf0, 0x41, 0xa3, 0x92, 0x8d,
-	0xa3, 0x04, 0xc4, 0x6a, 0xd5, 0xe3, 0x4a, 0x76, 0x99, 0x0b, 0xef, 0x57, 0x77, 0x2a, 0x46, 0x76,
-	0x05, 0x3d, 0x05, 0xeb, 0xe5, 0xdd, 0x66, 0xb5, 0x7e, 0x7c, 0x62, 0xd6, 0x8f, 0xcd, 0xbb, 0xf5,
-	0xfa, 0xdd, 0x5a, 0x25, 0x9b, 0xd8, 0x49, 0xc2, 0x8a, 0x7a, 0x25, 0xd1, 0xbf, 0xaf, 0x01, 0x9a,
-	0xbc, 0xef, 0xa3, 0xff, 0x9d, 0x7c, 0x49, 0x08, 0x6d, 0xef, 0x4b, 0xaf, 0x01, 0xf3, 0x3c, 0x5d,
-	0x44, 0xfe, 0xf9, 0xd3, 0x45, 0x9e, 0x41, 0x3a, 0xfc, 0x06, 0x88, 0x9e, 0x83, 0x5b, 0x1f, 0x56,
-	0x76, 0x0e, 0xea, 0xf5, 0x43, 0xf3, 0xa4, 0x59, 0x6e, 0x5e, 0xbe, 0xf0, 0xde, 0x82, 0xa7, 0xc6,
-	0xbb, 0x2b, 0xc7, 0xe5, 0x9d, 0x5a, 0x65, 0x2f, 0xab, 0xa1, 0x6d, 0x78, 0x79, 0x6a, 0x97, 0xb9,
-	0x5f, 0x37, 0xcc, 0x93, 0x5a, 0xbd, 0x69, 0xee, 0x57, 0x6b, 0xb5, 0xea, 0xf1, 0xdd, 0x6c, 0x24,
-	0xff, 0xa5, 0x06, 0x88, 0x73, 0x84, 0x34, 0x84, 0x1a, 0xf8, 0xe3, 0x3e, 0xa6, 0x0c, 0xdd, 0x84,
-	0x65, 0x69, 0xa8, 0xf2, 0x57, 0xb5, 0xf8, 0xe9, 0xca, 0xb6, 0x9c, 0x6e, 0x9f, 0x1f, 0x80, 0xda,
-	0x6e, 0x27, 0xf0, 0x2a, 0x1d, 0x08, 0x77, 0xdd, 0x0e, 0x46, 0x35, 0x48, 0x29, 0xc7, 0x2f, 0x08,
-	0x7e, 0x24, 0x56, 0x66, 0xa6, 0xf4, 0x3f, 0x73, 0xae, 0xbe, 0xfb, 0x04, 0x3f, 0x32, 0x80, 0x0c,
-	0xbf, 0xf9, 0x81, 0xcb, 0xe3, 0xea, 0x28, 0xf9, 0x14, 0xab, 0x17, 0x89, 0x04, 0x17, 0x9c, 0x90,
-	0x4f, 0x79, 0x90, 0x40, 0x74, 0x32, 0xf7, 0x1c, 0x3b, 0xea, 0x36, 0x2d, 0x86, 0x37, 0xb9, 0x20,
-	0xff, 0x5d, 0x0d, 0x36, 0xc6, 0xbc, 0x53, 0x87, 0xa0, 0x32, 0xac, 0x48, 0x0d, 0x01, 0x17, 0xfc,
-	0xf7, 0x9c, 0xd6, 0x19, 0xc1, 0x3c, 0xf4, 0x32, 0xac, 0x39, 0xfc, 0x1c, 0x15, 0x52, 0x2f, 0x63,
-	0xb1, 0xca, 0xc5, 0x8d, 0xa1, 0x09, 0x3f, 0xd3, 0x20, 0x7b, 0x17, 0x2b, 0x0b, 0x82, 0xf0, 0x4e,
-	0x7b, 0x84, 0xf8, 0xf7, 0x87, 0x36, 0xff, 0x27, 0x0d, 0x36, 0x76, 0x7d, 0x6c, 0x31, 0x3c, 0x6e,
-	0xde, 0xe3, 0xb2, 0xff, 0x01, 0x2c, 0xcb, 0xd9, 0xea, 0x98, 0x30, 0x77, 0xd4, 0xd4, 0xb4, 0x49,
-	0x1f, 0xa3, 0xb3, 0x7d, 0x8c, 0x5d, 0xcf, 0xc7, 0x1f, 0x44, 0x60, 0xe3, 0xd4, 0xeb, 0x4c, 0xf8,
-	0x38, 0xf2, 0x45, 0x7b, 0x42, 0xbe, 0x4c, 0xcb, 0xd7, 0x1d, 0x48, 0xf5, 0x85, 0x72, 0xf1, 0x53,
-	0x84, 0x7a, 0xc8, 0xd0, 0x27, 0x5e, 0x07, 0xf6, 0x09, 0xb6, 0x3b, 0x47, 0x16, 0x3d, 0x37, 0x40,
-	0x0e, 0xe7, 0xdf, 0x4f, 0x38, 0x10, 0xaf, 0xc0, 0xc6, 0x1e, 0xb6, 0xf1, 0xe5, 0x38, 0x4c, 0x59,
-	0x8a, 0xf9, 0xbf, 0x47, 0xe0, 0xd6, 0x8e, 0xc5, 0xda, 0x0f, 0xc3, 0x81, 0x9b, 0xc9, 0x0d, 0xdb,
-	0x90, 0x55, 0xe6, 0xb6, 0xf8, 0x5c, 0x73, 0x78, 0xdc, 0xe1, 0x57, 0x52, 0xd9, 0x23, 0x41, 0x7d,
-	0x82, 0xbe, 0x09, 0x1b, 0x63, 0x63, 0x89, 0x63, 0x13, 0x07, 0xab, 0xf8, 0xbc, 0x3a, 0xa7, 0x8b,
-	0x02, 0x8d, 0x5f, 0xde, 0x43, 0xe0, 0x55, 0x01, 0x34, 0x99, 0x9c, 0xd8, 0xec, 0xe4, 0xc4, 0xaf,
-	0x93, 0x9c, 0xe5, 0x6b, 0x25, 0x67, 0x27, 0x03, 0xe9, 0x70, 0x3c, 0xf2, 0x26, 0xe8, 0xd3, 0x12,
-	0xf0, 0xc4, 0xe8, 0x2b, 0x7f, 0xa1, 0x32, 0x1c, 0x5e, 0x12, 0x33, 0x33, 0x1c, 0xd2, 0x1b, 0xb9,
-	0xa2, 0xde, 0x06, 0xa4, 0x42, 0xc9, 0x7b, 0x02, 0x9e, 0x6c, 0x7f, 0x00, 0x50, 0x0d, 0x57, 0x8b,
-	0xa7, 0xab, 0xc7, 0xcd, 0xca, 0x71, 0xd3, 0xbc, 0x5f, 0xad, 0x7c, 0x78, 0xa9, 0x66, 0xde, 0x80,
-	0x6c, 0xb8, 0x73, 0xff, 0xb4, 0x56, 0xcb, 0x6a, 0xa5, 0x2f, 0x92, 0xb0, 0xa2, 0x02, 0x80, 0x7e,
-	0xad, 0x41, 0x2a, 0x54, 0x30, 0xd0, 0x1b, 0x33, 0xcd, 0x99, 0x2c, 0x9e, 0xfa, 0x9b, 0x8b, 0x4d,
-	0x92, 0x49, 0xcd, 0x97, 0xbe, 0xf7, 0x87, 0x3f, 0xff, 0x34, 0xf2, 0x2a, 0xda, 0x1e, 0xfe, 0x48,
-	0xfa, 0x6d, 0x19, 0xf6, 0xf7, 0x3c, 0xdf, 0xfd, 0x16, 0x6e, 0x33, 0x5a, 0xdc, 0x2e, 0x5a, 0x5d,
-	0xec, 0xb0, 0xcf, 0x8a, 0x41, 0x11, 0xfa, 0xb9, 0x06, 0xc9, 0x61, 0x71, 0x41, 0xb3, 0x7f, 0x7a,
-	0xba, 0x5c, 0x88, 0xf4, 0x79, 0xc3, 0x3d, 0xcd, 0x3a, 0x4e, 0x15, 0x13, 0xb6, 0x05, 0xa6, 0x15,
-	0xb7, 0x3f, 0x43, 0x9f, 0x6b, 0x90, 0x0e, 0x97, 0x17, 0x34, 0x3b, 0x30, 0x53, 0xaa, 0xd1, 0xfc,
-	0x36, 0xde, 0x16, 0x36, 0xbe, 0x99, 0x5f, 0x20, 0x82, 0xb7, 0x03, 0x36, 0xff, 0x8d, 0x06, 0xe9,
-	0xf0, 0x66, 0x9b, 0xc3, 0xd6, 0x29, 0x55, 0x65, 0x7e, 0x5b, 0xcb, 0xc2, 0xd6, 0x3b, 0xa5, 0xd7,
-	0x47, 0xb6, 0xaa, 0x1f, 0xe0, 0x67, 0x85, 0x75, 0x68, 0xf2, 0x8f, 0x35, 0x48, 0x87, 0xb7, 0xef,
-	0x1c, 0x26, 0x4f, 0x29, 0x00, 0xfa, 0xcd, 0x09, 0xc2, 0xab, 0xf4, 0x3c, 0x36, 0x08, 0x32, 0xbe,
-	0xbd, 0x48, 0xc6, 0xbf, 0xd0, 0x00, 0x4d, 0xf2, 0x16, 0x9a, 0x7d, 0x09, 0x7f, 0x6c, 0xb5, 0xd1,
-	0x9f, 0x0b, 0xe6, 0x86, 0xfe, 0x1c, 0x50, 0xa8, 0x07, 0x7f, 0x0e, 0x08, 0xe2, 0x98, 0x7f, 0x6b,
-	0x81, 0x9c, 0xb7, 0x46, 0xca, 0x6e, 0x6b, 0xdb, 0x23, 0xa3, 0xc7, 0xb8, 0x70, 0x5e, 0xa3, 0xa7,
-	0x11, 0xe8, 0xbf, 0xcc, 0x68, 0xa9, 0xec, 0xb6, 0xb6, 0xbd, 0xf3, 0xb9, 0x06, 0x2f, 0xb6, 0xdd,
-	0xde, 0x2c, 0x1b, 0x77, 0x14, 0xdb, 0x36, 0x78, 0x6e, 0x1b, 0xda, 0x47, 0x55, 0x35, 0xbe, 0xeb,
-	0xf2, 0x4a, 0x58, 0x70, 0xfd, 0x6e, 0xb1, 0x8b, 0x1d, 0x91, 0xf9, 0xa2, 0xec, 0xb2, 0x3c, 0x42,
-	0x1f, 0xfb, 0xbf, 0x8d, 0x3b, 0x23, 0xd1, 0xdf, 0x34, 0xed, 0x17, 0x91, 0xc8, 0xde, 0xfe, 0xaf,
-	0x22, 0xcf, 0xdf, 0x95, 0x98, 0xbb, 0xc2, 0x86, 0xbd, 0x91, 0x0d, 0xf7, 0xe5, 0xa4, 0xd6, 0xb2,
-	0xc0, 0x7f, 0xe3, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0x8c, 0xb5, 0x01, 0x83, 0x22, 0x00,
-	0x00,
+	0xcf, 0x5e, 0x1e, 0x41, 0x99, 0xdf, 0x6f, 0x2b, 0x0b, 0xf2, 0x3f, 0xdb, 0x86, 0xe5, 0xaa, 0x08,
+	0x00, 0x42, 0x10, 0x73, 0xac, 0x1e, 0xce, 0x69, 0x9b, 0xda, 0x56, 0xd2, 0x10, 0xdf, 0xe8, 0x05,
+	0x48, 0x77, 0x08, 0xf5, 0x6c, 0x6b, 0x60, 0x8a, 0xbe, 0x88, 0xe8, 0x4b, 0x29, 0xd9, 0x31, 0x1f,
+	0xf2, 0x00, 0x56, 0x1f, 0xe1, 0xd6, 0x43, 0xd7, 0x3d, 0x37, 0x29, 0xb3, 0x18, 0xce, 0x2d, 0x6f,
+	0x6a, 0x5b, 0x99, 0xd2, 0x9b, 0x85, 0x19, 0x91, 0x2c, 0x48, 0xb5, 0x85, 0x0f, 0xe5, 0xe4, 0x13,
+	0x3e, 0xd7, 0x48, 0x3f, 0x0a, 0xb5, 0x90, 0x0e, 0x09, 0xcf, 0x27, 0xae, 0x4f, 0xd8, 0x20, 0x17,
+	0xdd, 0xd4, 0xb6, 0xe2, 0xc6, 0xb0, 0x8d, 0x9e, 0x87, 0x14, 0xa1, 0xe6, 0x99, 0x65, 0xdb, 0x2d,
+	0xab, 0x7d, 0x9e, 0x8b, 0x6d, 0x6a, 0x5b, 0x09, 0x03, 0x08, 0xdd, 0x57, 0x12, 0xf4, 0x1c, 0x40,
+	0xcf, 0x36, 0xb1, 0x63, 0xb5, 0x6c, 0xdc, 0xc9, 0xc5, 0x45, 0x7f, 0xb2, 0x67, 0x57, 0xa4, 0x80,
+	0xcf, 0xef, 0xd9, 0x66, 0x87, 0x50, 0xd9, 0xbf, 0x21, 0xe7, 0xf7, 0xec, 0x3d, 0x25, 0x41, 0x05,
+	0xd8, 0x20, 0x8e, 0xd7, 0x67, 0xa6, 0x4a, 0x99, 0x08, 0x00, 0xcd, 0xad, 0x6c, 0x46, 0xb7, 0x92,
+	0xc6, 0xba, 0xe8, 0xda, 0x95, 0x3d, 0x3c, 0x0c, 0x14, 0xdd, 0x84, 0x65, 0x7c, 0x81, 0x1d, 0x46,
+	0x73, 0x09, 0x31, 0x44, 0xb5, 0x90, 0x05, 0x59, 0xe6, 0x5b, 0x84, 0xe7, 0xd6, 0xf4, 0x1e, 0xfa,
+	0x16, 0xc5, 0x34, 0x97, 0xdc, 0x8c, 0x6e, 0xa5, 0x4a, 0x6f, 0xcd, 0x1b, 0xa2, 0xa6, 0x9a, 0xdf,
+	0x10, 0xd3, 0x8d, 0x35, 0x36, 0xd6, 0x16, 0xaa, 0xad, 0x36, 0x5f, 0x32, 0x39, 0x10, 0xf9, 0x51,
+	0x2d, 0x74, 0x0f, 0xd6, 0xdc, 0x3e, 0x0b, 0xf9, 0x40, 0x73, 0x29, 0xa1, 0x79, 0x6b, 0xa6, 0x66,
+	0xe5, 0x9a, 0x91, 0x91, 0x00, 0xaa, 0x49, 0xd1, 0x4b, 0x90, 0xf1, 0x31, 0xc5, 0x21, 0xc4, 0xb4,
+	0x88, 0xdc, 0xaa, 0x90, 0x0e, 0x87, 0xdd, 0x03, 0xf0, 0x2c, 0xdf, 0xea, 0x61, 0x86, 0x7d, 0x9a,
+	0x5b, 0x15, 0x4a, 0x5f, 0x9f, 0xd7, 0xdd, 0x46, 0x30, 0xd3, 0x08, 0x81, 0xa0, 0x43, 0x48, 0xf4,
+	0x30, 0xa5, 0x56, 0x17, 0xd3, 0x5c, 0x46, 0x00, 0x16, 0xe7, 0x05, 0x3c, 0x92, 0xf3, 0x8c, 0x21,
+	0x00, 0xba, 0x00, 0xbd, 0x83, 0xcf, 0xac, 0xbe, 0xcd, 0x4c, 0x1f, 0x53, 0xcf, 0x75, 0x28, 0x36,
+	0x3d, 0xdb, 0x62, 0x67, 0xae, 0xdf, 0xa3, 0xb9, 0xb5, 0xcd, 0xe8, 0x56, 0xa6, 0xf4, 0xce, 0x82,
+	0xf0, 0x85, 0x86, 0x02, 0x30, 0x72, 0x0a, 0xdb, 0x50, 0xd0, 0x41, 0x07, 0x45, 0xef, 0xc2, 0x2d,
+	0xdf, 0x75, 0x99, 0x79, 0xe6, 0xda, 0xb6, 0xfb, 0xa8, 0xef, 0x99, 0x92, 0x7c, 0xe4, 0xe6, 0xca,
+	0x8a, 0xe4, 0xdd, 0xe4, 0x03, 0xf6, 0x55, 0xbf, 0xd4, 0x20, 0xf6, 0xd9, 0x7b, 0xf0, 0x8c, 0x67,
+	0xf9, 0x7c, 0xf0, 0xd4, 0xc9, 0xeb, 0x62, 0x72, 0x4e, 0x0e, 0x99, 0x32, 0xdd, 0x86, 0x1b, 0x97,
+	0xe7, 0x11, 0xe7, 0xcc, 0xcd, 0x21, 0x11, 0xca, 0xdb, 0xf3, 0xfa, 0x3a, 0x8e, 0x5c, 0x75, 0xce,
+	0x5c, 0x03, 0x9d, 0x4d, 0xc8, 0xf4, 0x5f, 0x45, 0x21, 0x33, 0xbe, 0x6a, 0xa7, 0xd2, 0x4b, 0x1d,
+	0x62, 0x6c, 0xe0, 0x49, 0x5a, 0xc9, 0x94, 0xee, 0x5c, 0x6d, 0x3f, 0x14, 0x9a, 0x03, 0x0f, 0x1b,
+	0x02, 0x08, 0xdd, 0x83, 0xb8, 0x67, 0xf9, 0x8c, 0xe6, 0xa2, 0xc2, 0xad, 0xab, 0x22, 0x36, 0x2c,
+	0x9f, 0x19, 0x12, 0x09, 0x6d, 0xc3, 0x3a, 0x23, 0x3d, 0x4c, 0x4d, 0xab, 0xd3, 0xc1, 0x1d, 0xb3,
+	0xed, 0xf6, 0x1d, 0x26, 0xe8, 0x26, 0x6e, 0xac, 0x89, 0x8e, 0x32, 0x97, 0xef, 0x72, 0xb1, 0xce,
+	0x20, 0xc6, 0xa7, 0x72, 0x5f, 0xf9, 0x3e, 0x08, 0x7c, 0xe5, 0xdf, 0x9c, 0x70, 0xb0, 0xc3, 0x08,
+	0x1b, 0x98, 0x43, 0x97, 0x93, 0x06, 0x48, 0x11, 0xf7, 0x00, 0xdd, 0x80, 0xb8, 0x65, 0x13, 0x8b,
+	0x0a, 0xaa, 0x4b, 0x1a, 0xb2, 0xc1, 0x19, 0xb8, 0x4f, 0xb1, 0x6f, 0x76, 0xf0, 0x19, 0x71, 0x70,
+	0x47, 0x11, 0x5d, 0x8a, 0xcb, 0xf6, 0xa4, 0x28, 0xff, 0x36, 0xc4, 0x14, 0x40, 0xb6, 0xf9, 0xa0,
+	0x51, 0x31, 0x4f, 0x8f, 0x4f, 0x1a, 0x95, 0xdd, 0xea, 0x7e, 0xb5, 0xb2, 0x97, 0x5d, 0x42, 0x29,
+	0x58, 0xa9, 0x7c, 0xad, 0x7c, 0xd4, 0xa8, 0x55, 0xb2, 0x1a, 0x4a, 0x43, 0xa2, 0x59, 0x39, 0x6a,
+	0xd4, 0xca, 0xcd, 0x4a, 0x36, 0xa2, 0xff, 0x30, 0x02, 0xc9, 0xe1, 0x66, 0xbb, 0x2a, 0xff, 0xdf,
+	0x80, 0xf8, 0x85, 0x65, 0xf7, 0x71, 0x60, 0xb6, 0x68, 0xa0, 0x17, 0x61, 0x35, 0xd8, 0x60, 0xb2,
+	0x37, 0x26, 0x7a, 0xd3, 0x4a, 0x78, 0x5f, 0x0c, 0x7a, 0x1b, 0x72, 0xa1, 0x90, 0x98, 0x63, 0x9a,
+	0xe2, 0x62, 0xfc, 0x53, 0xa3, 0xf8, 0xec, 0x85, 0x74, 0x3e, 0x0b, 0xc9, 0x9e, 0xe5, 0x74, 0x2c,
+	0xe6, 0xfa, 0x03, 0x51, 0x6f, 0x38, 0xb5, 0x07, 0x02, 0x94, 0x83, 0x15, 0xcf, 0x77, 0x7b, 0x1e,
+	0x0b, 0xd8, 0x3a, 0x68, 0xa2, 0xa7, 0x61, 0x85, 0x50, 0xd3, 0x26, 0x94, 0xe5, 0x12, 0x62, 0xd6,
+	0x32, 0xa1, 0x35, 0x42, 0x99, 0xfe, 0x13, 0x1d, 0x56, 0xd4, 0x36, 0x46, 0x5f, 0x0d, 0x25, 0x2f,
+	0x35, 0x7f, 0x1d, 0x0b, 0x58, 0xa0, 0x89, 0x3f, 0x61, 0x07, 0x4b, 0x2a, 0xe9, 0x47, 0x10, 0x27,
+	0x3d, 0xab, 0x2b, 0x03, 0x97, 0x2a, 0xfd, 0xdf, 0xa2, 0x60, 0x55, 0x3e, 0xf9, 0x60, 0xc9, 0x90,
+	0x28, 0xa8, 0x0d, 0xab, 0x1f, 0xf7, 0x49, 0xfb, 0xdc, 0xf4, 0xb1, 0x67, 0x13, 0x2c, 0x97, 0x4a,
+	0xaa, 0xf4, 0xff, 0x8b, 0xc2, 0xde, 0xe3, 0x20, 0x86, 0xc4, 0x38, 0x58, 0x32, 0xd2, 0x1f, 0x87,
+	0xda, 0xdc, 0xff, 0xb6, 0xe5, 0xcb, 0x95, 0x76, 0x05, 0xff, 0x77, 0x2d, 0xbf, 0xc3, 0xfd, 0xe7,
+	0x18, 0xe8, 0x0d, 0x58, 0xf1, 0xac, 0x81, 0xed, 0x5a, 0xb2, 0x02, 0xa7, 0x4a, 0x4f, 0x07, 0x70,
+	0xc1, 0x71, 0xa4, 0x70, 0x22, 0x8e, 0x23, 0x07, 0x4b, 0x46, 0x30, 0x12, 0xd9, 0x90, 0xa5, 0xa4,
+	0xe7, 0xd9, 0x78, 0xc8, 0xcd, 0x3c, 0x91, 0x7c, 0xf6, 0x07, 0x8b, 0x1a, 0x73, 0x22, 0x70, 0x02,
+	0x1e, 0xe6, 0xbe, 0xae, 0xd1, 0x71, 0x11, 0xfa, 0x08, 0xa0, 0x65, 0x51, 0xd2, 0x36, 0x85, 0xd3,
+	0x09, 0xa1, 0xe7, 0xdd, 0x45, 0xf5, 0xec, 0x70, 0x04, 0xe5, 0x79, 0xb2, 0x15, 0x34, 0x90, 0x09,
+	0x29, 0xda, 0xef, 0x76, 0x31, 0x15, 0xe7, 0xb9, 0x5c, 0x52, 0x80, 0xdf, 0x59, 0xd8, 0x89, 0x11,
+	0xc4, 0xc1, 0x92, 0x11, 0x46, 0x44, 0x14, 0x36, 0x6c, 0xe2, 0x9c, 0x9b, 0x6e, 0x9f, 0x99, 0x23,
+	0xb9, 0x38, 0x06, 0xa4, 0x4a, 0xe5, 0x45, 0x15, 0xd5, 0x88, 0x73, 0x5e, 0xef, 0xb3, 0x91, 0xbe,
+	0x83, 0x25, 0x63, 0xdd, 0xbe, 0x2c, 0x44, 0xdf, 0x80, 0x14, 0xdf, 0x42, 0x26, 0xc5, 0x36, 0x6e,
+	0xb3, 0x5c, 0x4a, 0x28, 0xbb, 0xbd, 0xb8, 0x32, 0xca, 0x4e, 0x04, 0xc2, 0xc1, 0x92, 0x01, 0xf6,
+	0xb0, 0x85, 0x08, 0xac, 0xb5, 0x2d, 0xdf, 0xed, 0x53, 0x6c, 0x07, 0x2a, 0xd2, 0x42, 0xc5, 0xfb,
+	0x57, 0x58, 0x8a, 0x02, 0x66, 0xa8, 0x26, 0xd3, 0x1e, 0x93, 0xa0, 0x26, 0x24, 0x82, 0xaa, 0xaf,
+	0x8e, 0xad, 0x57, 0x2f, 0xfa, 0x43, 0x24, 0x5d, 0x87, 0x18, 0x27, 0x81, 0x50, 0x15, 0x88, 0x06,
+	0x55, 0x40, 0x3f, 0x81, 0xb8, 0xd8, 0xd3, 0xe8, 0x19, 0x48, 0x8a, 0x3d, 0x6d, 0xf6, 0x7d, 0xa2,
+	0x28, 0x37, 0x21, 0x04, 0xa7, 0x3e, 0x41, 0xaf, 0x01, 0xb2, 0xda, 0x6d, 0x4c, 0x29, 0x69, 0x11,
+	0x5b, 0xf0, 0x23, 0xc7, 0x91, 0xe4, 0xbb, 0x3e, 0xd6, 0xc3, 0x15, 0xe9, 0x55, 0x48, 0x87, 0x77,
+	0x34, 0xa7, 0x64, 0x46, 0x98, 0x1d, 0x50, 0xb9, 0x6c, 0x70, 0x4a, 0x1e, 0x27, 0x8f, 0x88, 0xb0,
+	0x6b, 0x6c, 0xf3, 0xeb, 0x7f, 0xd5, 0x20, 0x26, 0x96, 0xee, 0x74, 0x0c, 0x1d, 0x12, 0xb4, 0xdf,
+	0x92, 0x1d, 0xd2, 0x9c, 0x61, 0x7b, 0xdc, 0xa3, 0xe8, 0x25, 0x8f, 0x4e, 0x61, 0xa5, 0xd5, 0x67,
+	0x8c, 0xef, 0x82, 0xd8, 0x62, 0xa5, 0x39, 0xcc, 0x2b, 0x85, 0x1d, 0x81, 0x61, 0x04, 0x58, 0xfa,
+	0x3b, 0xb0, 0x2c, 0x45, 0x53, 0x4b, 0x2e, 0xbf, 0x3f, 0xb8, 0x94, 0x89, 0x0b, 0x82, 0xb2, 0x36,
+	0x68, 0xeb, 0x3d, 0xc8, 0x8c, 0x93, 0x03, 0xfa, 0x2f, 0xc8, 0x88, 0x73, 0x3e, 0x73, 0x4d, 0xea,
+	0x61, 0xdc, 0x7e, 0xa8, 0xb0, 0xd2, 0x5c, 0xda, 0x74, 0x4f, 0x84, 0x8c, 0xeb, 0xa1, 0xb4, 0x67,
+	0x2b, 0x3c, 0xf1, 0x1d, 0xae, 0x92, 0xc2, 0x86, 0xe8, 0x58, 0x95, 0x14, 0x29, 0xfa, 0x0e, 0xac,
+	0x5d, 0xe2, 0x22, 0x44, 0xa6, 0xd0, 0x9c, 0x26, 0x62, 0xf3, 0xfe, 0xf5, 0x68, 0x6e, 0x82, 0xe3,
+	0xf4, 0xdf, 0x47, 0x21, 0x39, 0xa4, 0xa8, 0x2b, 0xa4, 0xf6, 0x25, 0xc8, 0xf0, 0x95, 0x6d, 0x31,
+	0x86, 0x3b, 0x61, 0x17, 0x57, 0x87, 0x52, 0xb1, 0xe0, 0x0f, 0x83, 0x6a, 0x17, 0xbb, 0x46, 0xb5,
+	0x0b, 0x6a, 0xdd, 0x47, 0xa3, 0x15, 0x13, 0x17, 0x51, 0xf9, 0xca, 0x95, 0x49, 0x79, 0x62, 0xd9,
+	0xfc, 0x4e, 0x1b, 0xae, 0x9b, 0xe9, 0xc1, 0xb8, 0x80, 0x35, 0xd7, 0xc3, 0x0e, 0x5f, 0xca, 0xa6,
+	0xba, 0x5a, 0xc9, 0x0a, 0x7e, 0x7c, 0x5d, 0x23, 0x0a, 0x75, 0x0f, 0x3b, 0xa7, 0x3e, 0x29, 0x0b,
+	0x54, 0x63, 0xd5, 0x0d, 0x37, 0xf5, 0x17, 0x60, 0x75, 0xac, 0x1f, 0x65, 0x21, 0x3a, 0x22, 0x08,
+	0xfe, 0xa9, 0xe7, 0x01, 0x42, 0x5c, 0x3c, 0xd5, 0x7c, 0xfd, 0x1c, 0x52, 0xa1, 0xa2, 0x81, 0xbe,
+	0x3e, 0x5e, 0x86, 0xb4, 0xc5, 0x8e, 0xfc, 0x93, 0x65, 0x68, 0xac, 0x06, 0xe9, 0x0d, 0x58, 0x9f,
+	0x28, 0x1c, 0xe8, 0x15, 0xc8, 0x76, 0xf8, 0xa7, 0x23, 0x9e, 0x32, 0xcc, 0xd0, 0xc1, 0x72, 0x2d,
+	0x24, 0x17, 0x87, 0x39, 0xe5, 0x62, 0x64, 0xe4, 0xe2, 0x97, 0x11, 0x80, 0x51, 0x79, 0x78, 0x4c,
+	0x8a, 0x4e, 0x21, 0x4e, 0x18, 0xee, 0x49, 0x1a, 0xbb, 0xc2, 0xd1, 0x60, 0xa4, 0xa0, 0x50, 0x65,
+	0xb8, 0x67, 0x48, 0x34, 0xfd, 0x4f, 0x1a, 0xc4, 0x78, 0x1b, 0x19, 0x10, 0x13, 0x17, 0x24, 0xed,
+	0x6a, 0xb5, 0x47, 0x42, 0x73, 0x24, 0x71, 0x49, 0x12, 0x58, 0x23, 0x4f, 0x22, 0x61, 0x4f, 0x36,
+	0x21, 0xd5, 0xc1, 0xb4, 0xed, 0x13, 0x4f, 0x2c, 0xb4, 0x80, 0x3d, 0x46, 0xa2, 0x27, 0xba, 0xb1,
+	0xf4, 0x3f, 0x44, 0x20, 0x33, 0x5e, 0x19, 0xd1, 0x83, 0x20, 0x96, 0x72, 0x69, 0xec, 0x5e, 0xaf,
+	0xd0, 0xfe, 0x87, 0xc5, 0xf3, 0x7d, 0xc8, 0x8c, 0x1b, 0xc7, 0x57, 0xf4, 0x39, 0x1e, 0x04, 0x9b,
+	0xf6, 0x1c, 0x0f, 0x04, 0xb9, 0x0e, 0x1c, 0xd7, 0x19, 0xf4, 0x82, 0xb2, 0x3b, 0x6c, 0xe7, 0x7f,
+	0xa4, 0x41, 0x22, 0x38, 0x45, 0xa0, 0x1c, 0xdc, 0xe0, 0xb7, 0xb3, 0xfd, 0xba, 0x71, 0x74, 0xe9,
+	0x1e, 0x97, 0x86, 0xc4, 0x7e, 0x79, 0xb7, 0xb2, 0x53, 0xaf, 0x1f, 0x66, 0x35, 0x94, 0x84, 0xf8,
+	0x49, 0xad, 0xbc, 0x7b, 0x98, 0x8d, 0xc8, 0x3b, 0x5d, 0xad, 0x72, 0xd7, 0x28, 0x1f, 0x65, 0xa3,
+	0x68, 0x05, 0xa2, 0x87, 0xd5, 0xc3, 0x6c, 0x4c, 0x8c, 0x38, 0x7c, 0xd0, 0xa8, 0x64, 0xe3, 0x28,
+	0x01, 0xb1, 0x5a, 0xf5, 0xb8, 0x92, 0x5d, 0xe6, 0xc2, 0xfb, 0xd5, 0x9d, 0x8a, 0x91, 0x5d, 0x41,
+	0x4f, 0xc1, 0x7a, 0x79, 0xb7, 0x59, 0xad, 0x1f, 0x9f, 0x98, 0xf5, 0x63, 0xf3, 0x6e, 0xbd, 0x7e,
+	0xb7, 0x56, 0xc9, 0x26, 0x76, 0x92, 0xb0, 0xa2, 0x5e, 0x49, 0xf4, 0xef, 0x6b, 0x80, 0x26, 0xef,
+	0xfb, 0xe8, 0x7f, 0x27, 0x5f, 0x12, 0x42, 0xdb, 0xfb, 0xd2, 0x6b, 0xc0, 0x3c, 0x4f, 0x17, 0x91,
+	0x7f, 0xfe, 0x74, 0x91, 0x67, 0x90, 0x0e, 0x3f, 0x12, 0xa2, 0xe7, 0xe0, 0xd6, 0x87, 0x95, 0x9d,
+	0x83, 0x7a, 0xfd, 0xd0, 0x3c, 0x69, 0x96, 0x9b, 0x97, 0x2f, 0xbc, 0xb7, 0xe0, 0xa9, 0xf1, 0xee,
+	0xca, 0x71, 0x79, 0xa7, 0x56, 0xd9, 0xcb, 0x6a, 0x68, 0x1b, 0x5e, 0x9e, 0xda, 0x65, 0xee, 0xd7,
+	0x0d, 0xf3, 0xa4, 0x56, 0x6f, 0x9a, 0xfb, 0xd5, 0x5a, 0xad, 0x7a, 0x7c, 0x37, 0x1b, 0xc9, 0x7f,
+	0xa9, 0x01, 0xe2, 0x1c, 0x21, 0x0d, 0xa1, 0x06, 0xfe, 0xb8, 0x8f, 0x29, 0x43, 0x37, 0x61, 0x59,
+	0x1a, 0xaa, 0xfc, 0x55, 0x2d, 0x7e, 0xba, 0xb2, 0x2d, 0xa7, 0xdb, 0xe7, 0x07, 0xa0, 0xb6, 0xdb,
+	0x09, 0xbc, 0x4a, 0x07, 0xc2, 0x5d, 0xb7, 0x83, 0x51, 0x0d, 0x52, 0xca, 0xf1, 0x0b, 0x82, 0x1f,
+	0x89, 0x95, 0x99, 0x29, 0xfd, 0xcf, 0x9c, 0xab, 0xef, 0x3e, 0xc1, 0x8f, 0x0c, 0x20, 0xc3, 0x6f,
+	0x7e, 0xe0, 0xf2, 0xb8, 0x3a, 0x4a, 0x3e, 0xc5, 0xea, 0x45, 0x22, 0xc1, 0x05, 0x27, 0xe4, 0x53,
+	0x1e, 0x24, 0x10, 0x9d, 0xcc, 0x3d, 0xc7, 0x8e, 0xba, 0x4d, 0x8b, 0xe1, 0x4d, 0x2e, 0xc8, 0x7f,
+	0x57, 0x83, 0x8d, 0x31, 0xef, 0xd4, 0x21, 0xa8, 0x0c, 0x2b, 0x52, 0x43, 0xc0, 0x05, 0xff, 0x3d,
+	0xa7, 0x75, 0x46, 0x30, 0x0f, 0xbd, 0x0c, 0x6b, 0x0e, 0x3f, 0x47, 0x85, 0xd4, 0xcb, 0x58, 0xac,
+	0x72, 0x71, 0x63, 0x68, 0xc2, 0xcf, 0x35, 0xc8, 0xde, 0xc5, 0xca, 0x82, 0x20, 0xbc, 0xd3, 0x1e,
+	0x21, 0xfe, 0xfd, 0xa1, 0xcd, 0xff, 0x59, 0x83, 0x8d, 0x5d, 0x1f, 0x5b, 0x0c, 0x8f, 0x9b, 0xf7,
+	0xb8, 0xec, 0x7f, 0x00, 0xcb, 0x72, 0xb6, 0x3a, 0x26, 0xcc, 0x1d, 0x35, 0x35, 0x6d, 0xd2, 0xc7,
+	0xe8, 0x6c, 0x1f, 0x63, 0xd7, 0xf3, 0xf1, 0x07, 0x11, 0xd8, 0x38, 0xf5, 0x3a, 0x13, 0x3e, 0x8e,
+	0x7c, 0xd1, 0x9e, 0x90, 0x2f, 0xd3, 0xf2, 0x75, 0x07, 0x52, 0x7d, 0xa1, 0x5c, 0xfc, 0x56, 0xa1,
+	0x1e, 0x32, 0xf4, 0x89, 0xd7, 0x81, 0x7d, 0x82, 0xed, 0xce, 0x91, 0x45, 0xcf, 0x0d, 0x90, 0xc3,
+	0xf9, 0xf7, 0x13, 0x0e, 0xc4, 0x2b, 0xb0, 0xb1, 0x87, 0x6d, 0x7c, 0x39, 0x0e, 0x53, 0x96, 0x62,
+	0xfe, 0xef, 0x11, 0xb8, 0xb5, 0x63, 0xb1, 0xf6, 0xc3, 0x70, 0xe0, 0x66, 0x72, 0xc3, 0x36, 0x64,
+	0x95, 0xb9, 0x2d, 0x3e, 0xd7, 0x1c, 0x1e, 0x77, 0xf8, 0x95, 0x54, 0xf6, 0x48, 0x50, 0x9f, 0xa0,
+	0x6f, 0xc2, 0xc6, 0xd8, 0x58, 0xe2, 0xd8, 0xc4, 0xc1, 0x2a, 0x3e, 0xaf, 0xce, 0xe9, 0xa2, 0x40,
+	0xe3, 0x97, 0xf7, 0x10, 0x78, 0x55, 0x00, 0x4d, 0x26, 0x27, 0x36, 0x3b, 0x39, 0xf1, 0xeb, 0x24,
+	0x67, 0xf9, 0x5a, 0xc9, 0xd9, 0xc9, 0x40, 0x3a, 0x1c, 0x8f, 0xbc, 0x09, 0xfa, 0xb4, 0x04, 0x3c,
+	0x31, 0xfa, 0xca, 0x5f, 0xa8, 0x0c, 0x87, 0x97, 0xc4, 0xcc, 0x0c, 0x87, 0xf4, 0x46, 0xae, 0xa8,
+	0xb7, 0x01, 0xa9, 0x50, 0xf2, 0x9e, 0x80, 0x27, 0xdb, 0x1f, 0x00, 0x54, 0xc3, 0xd5, 0xe2, 0xe9,
+	0xea, 0x71, 0xb3, 0x72, 0xdc, 0x34, 0xef, 0x57, 0x2b, 0x1f, 0x5e, 0xaa, 0x99, 0x37, 0x20, 0x1b,
+	0xee, 0xdc, 0x3f, 0xad, 0xd5, 0xb2, 0x5a, 0xe9, 0x8b, 0x24, 0xac, 0xa8, 0x00, 0xa0, 0xdf, 0x68,
+	0x90, 0x0a, 0x15, 0x0c, 0xf4, 0xc6, 0x4c, 0x73, 0x26, 0x8b, 0xa7, 0xfe, 0xe6, 0x62, 0x93, 0x64,
+	0x52, 0xf3, 0xa5, 0xef, 0xfd, 0xf1, 0x2f, 0x3f, 0x8d, 0xbc, 0x8a, 0xb6, 0x87, 0xbf, 0xa2, 0x7e,
+	0x5b, 0x86, 0xfd, 0x3d, 0xcf, 0x77, 0xbf, 0x85, 0xdb, 0x8c, 0x16, 0xb7, 0x8b, 0x56, 0x17, 0x3b,
+	0xec, 0xb3, 0x62, 0x50, 0x84, 0x7e, 0xa1, 0x41, 0x72, 0x58, 0x5c, 0xd0, 0xec, 0x9f, 0x9e, 0x2e,
+	0x17, 0x22, 0x7d, 0xde, 0x70, 0x4f, 0xb3, 0x8e, 0x53, 0xc5, 0x84, 0x6d, 0x81, 0x69, 0xc5, 0xed,
+	0xcf, 0xd0, 0xe7, 0x1a, 0xa4, 0xc3, 0xe5, 0x05, 0xcd, 0x0e, 0xcc, 0x94, 0x6a, 0x34, 0xbf, 0x8d,
+	0xb7, 0x85, 0x8d, 0x6f, 0xe6, 0x17, 0x88, 0xe0, 0xed, 0x80, 0xcd, 0x7f, 0xab, 0x41, 0x3a, 0xbc,
+	0xd9, 0xe6, 0xb0, 0x75, 0x4a, 0x55, 0x99, 0xdf, 0xd6, 0xb2, 0xb0, 0xf5, 0x4e, 0xe9, 0xf5, 0x91,
+	0xad, 0xea, 0x17, 0xfa, 0x59, 0x61, 0x1d, 0x9a, 0xfc, 0x63, 0x0d, 0xd2, 0xe1, 0xed, 0x3b, 0x87,
+	0xc9, 0x53, 0x0a, 0x80, 0x7e, 0x73, 0x82, 0xf0, 0x2a, 0x3d, 0x8f, 0x0d, 0x82, 0x8c, 0x6f, 0x2f,
+	0x92, 0xf1, 0x2f, 0x34, 0x40, 0x93, 0xbc, 0x85, 0x66, 0x5f, 0xc2, 0x1f, 0x5b, 0x6d, 0xf4, 0xe7,
+	0x82, 0xb9, 0xa1, 0x7f, 0x0f, 0x14, 0xea, 0xc1, 0xbf, 0x07, 0x82, 0x38, 0xe6, 0xdf, 0x5a, 0x20,
+	0xe7, 0xad, 0x91, 0xb2, 0xdb, 0xda, 0xf6, 0xc8, 0xe8, 0x31, 0x2e, 0x9c, 0xd7, 0xe8, 0x69, 0x04,
+	0xfa, 0x2f, 0x33, 0x5a, 0x2a, 0xbb, 0xad, 0x6d, 0xef, 0x7c, 0xae, 0xc1, 0x8b, 0x6d, 0xb7, 0x37,
+	0xcb, 0xc6, 0x1d, 0xc5, 0xb6, 0x0d, 0x9e, 0xdb, 0x86, 0xf6, 0x51, 0x55, 0x8d, 0xef, 0xba, 0xbc,
+	0x12, 0x16, 0x5c, 0xbf, 0x5b, 0xec, 0x62, 0x47, 0x64, 0xbe, 0x28, 0xbb, 0x2c, 0x8f, 0xd0, 0xc7,
+	0xfe, 0xb1, 0xe3, 0xce, 0x48, 0xf4, 0x37, 0x4d, 0xfb, 0x65, 0x24, 0xb2, 0xb7, 0xff, 0xeb, 0xc8,
+	0xf3, 0x77, 0x25, 0xe6, 0xae, 0xb0, 0x61, 0x6f, 0x64, 0xc3, 0x7d, 0x39, 0xa9, 0xb5, 0x2c, 0xf0,
+	0xdf, 0xf8, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0x20, 0xe1, 0xfe, 0xa4, 0x22, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/dialogflow/v2beta1/session.pb.go b/googleapis/cloud/dialogflow/v2beta1/session.pb.go
index 39d33d38..28e66c52 100644
--- a/googleapis/cloud/dialogflow/v2beta1/session.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/session.pb.go
@@ -654,10 +654,14 @@ type StreamingDetectIntentRequest struct {
 	//
 	// 3.  an event that specifies which intent to trigger.
 	QueryInput *QueryInput `protobuf:"bytes,3,opt,name=query_input,json=queryInput" json:"query_input,omitempty"`
-	// Optional. If `true`, the recognizer will detect a single spoken utterance
-	// in input audio. When it detects that the user has paused or stopped
-	// speaking, it will cease recognition. This setting is ignored when
-	// `query_input` is a piece of text or an event.
+	// Optional. If `false` (default), recognition does not cease until the
+	// client closes the stream.
+	// If `true`, the recognizer will detect a single spoken utterance in input
+	// audio. Recognition ceases when it detects the audio's voice has
+	// stopped or paused. In this case, once a detected intent is received, the
+	// client should close the stream and start a new request with a new stream as
+	// needed.
+	// This setting is ignored when `query_input` is a piece of text or an event.
 	SingleUtterance bool `protobuf:"varint,4,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"`
 	// Optional. The input audio content to be recognized. Must be sent if
 	// `query_input` was set to a streaming input audio config. The complete audio
@@ -1149,104 +1153,106 @@ var _Sessions_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/session.proto", fileDescriptor4) }
 
 var fileDescriptor4 = []byte{
-	// 1580 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0x3f, 0x73, 0x1b, 0xc7,
-	0x15, 0xd7, 0x81, 0xff, 0x1f, 0x40, 0x12, 0x5e, 0xc9, 0xd6, 0x89, 0x94, 0x2c, 0x05, 0x1e, 0x4f,
-	0x28, 0xc6, 0x01, 0x2c, 0x26, 0x71, 0xc6, 0xd6, 0xc8, 0x11, 0x08, 0x1c, 0x49, 0xcc, 0x80, 0x20,
-	0xbc, 0x00, 0x2d, 0xdb, 0xcd, 0xce, 0xf2, 0xb0, 0x38, 0x9e, 0x72, 0xd8, 0x3d, 0xde, 0x2e, 0x6c,
-	0xd3, 0x99, 0xa4, 0xc8, 0x57, 0x48, 0x97, 0x32, 0x4d, 0x66, 0xdc, 0xa6, 0x49, 0x93, 0xca, 0x1f,
-	0x21, 0x75, 0xba, 0x94, 0x49, 0x95, 0x14, 0x99, 0x49, 0x93, 0xb9, 0xdd, 0x3d, 0x00, 0x02, 0x29,
-	0x03, 0x4a, 0x52, 0xb9, 0xc3, 0xbe, 0xf7, 0x7b, 0x6f, 0xdf, 0x7b, 0xf7, 0x7b, 0xef, 0x2d, 0xe0,
-	0x87, 0x81, 0x10, 0x41, 0xc4, 0x2a, 0x7e, 0x24, 0x86, 0xbd, 0x4a, 0x2f, 0xa4, 0x91, 0x08, 0xfa,
-	0x91, 0xf8, 0xa2, 0xf2, 0xf9, 0xde, 0x19, 0x53, 0xf4, 0x51, 0x45, 0x32, 0x29, 0x43, 0xc1, 0xcb,
-	0x71, 0x22, 0x94, 0x40, 0xf7, 0x0d, 0xbc, 0xac, 0xe1, 0xe5, 0x31, 0xbc, 0x6c, 0xe1, 0x5b, 0x77,
-	0xad, 0x3f, 0x1a, 0x87, 0x15, 0xca, 0xb9, 0x50, 0x54, 0x85, 0x82, 0x4b, 0x63, 0xbe, 0x35, 0xf3,
-	0x36, 0x5f, 0x70, 0xc5, 0xbe, 0x54, 0x16, 0xfe, 0xce, 0x2c, 0x78, 0xc8, 0x15, 0xe3, 0x19, 0xfa,
-	0xfd, 0x39, 0x53, 0x21, 0x8c, 0xab, 0x50, 0x5d, 0x12, 0x75, 0x19, 0x33, 0x6b, 0x9a, 0x45, 0xad,
-	0x4f, 0x67, 0xc3, 0x7e, 0x45, 0xaa, 0x64, 0xe8, 0x67, 0x8e, 0x6f, 0x5b, 0x6d, 0x12, 0xfb, 0x15,
-	0xa9, 0xa8, 0x1a, 0x66, 0xe9, 0xb8, 0x56, 0x91, 0x7a, 0xaa, 0x44, 0x54, 0x45, 0x3c, 0x30, 0x9a,
-	0xd2, 0x3f, 0x1c, 0xb8, 0x59, 0x67, 0x8a, 0xf9, 0xaa, 0xa1, 0x43, 0xc4, 0xec, 0x62, 0xc8, 0xa4,
-	0x42, 0x2e, 0xac, 0xd8, 0x28, 0x5c, 0xe7, 0x81, 0xb3, 0xb3, 0x86, 0xb3, 0x23, 0xea, 0x40, 0xe1,
-	0x62, 0xc8, 0x92, 0x4b, 0x12, 0xd3, 0x84, 0x0e, 0xa4, 0x9b, 0x7b, 0xe0, 0xec, 0xe4, 0xf7, 0xde,
-	0x2d, 0xcf, 0x28, 0x78, 0xf9, 0xa3, 0xd4, 0xa8, 0x9d, 0xda, 0x30, 0xc5, 0x12, 0x89, 0xf3, 0x17,
-	0x23, 0x81, 0x44, 0x4d, 0x30, 0x47, 0x12, 0xf2, 0x78, 0xa8, 0xdc, 0x05, 0xed, 0xf3, 0x07, 0xf3,
-	0xf9, 0x6c, 0xa4, 0x26, 0x18, 0x2e, 0x46, 0xbf, 0xd1, 0x7d, 0xc8, 0x6b, 0x3f, 0x84, 0x0e, 0x7b,
-	0xa1, 0x70, 0x97, 0x1e, 0x38, 0x3b, 0x05, 0x0c, 0x5a, 0x54, 0x4d, 0x25, 0xa5, 0x6f, 0x1c, 0xb8,
-	0xf5, 0x62, 0xd6, 0x32, 0x16, 0x5c, 0xb2, 0xd4, 0x32, 0xb1, 0xbf, 0x49, 0xd8, 0xb3, 0xa9, 0x43,
-	0x26, 0x6a, 0xf4, 0xd0, 0x49, 0x96, 0x7d, 0xc2, 0xe4, 0x30, 0x52, 0x36, 0xfb, 0x77, 0xe6, 0x8b,
-	0x14, 0x6b, 0x1b, 0x9b, 0xb9, 0x39, 0xa0, 0xf7, 0x61, 0xe3, 0x0b, 0x76, 0x76, 0x2e, 0xc4, 0xcf,
-	0x89, 0xf9, 0x64, 0x36, 0x79, 0x94, 0xb9, 0x4c, 0x62, 0xbf, 0xdc, 0xd1, 0x1a, 0xbc, 0x6e, 0x91,
-	0xe6, 0x58, 0xfa, 0x5b, 0x0e, 0x36, 0xa7, 0xaa, 0x8a, 0xb6, 0x61, 0x4d, 0x85, 0x03, 0x46, 0xbe,
-	0x12, 0x9c, 0xd9, 0xf0, 0x57, 0x53, 0xc1, 0x67, 0x82, 0x33, 0xf4, 0x1e, 0x14, 0x02, 0x26, 0x48,
-	0x24, 0x7c, 0x4d, 0x76, 0x1b, 0xfc, 0xcd, 0xec, 0x26, 0xcd, 0xb3, 0x26, 0x55, 0x4d, 0x1e, 0xe0,
-	0x7c, 0xc0, 0x44, 0xd3, 0xe2, 0x50, 0x1d, 0x56, 0x2d, 0xdf, 0xd3, 0xe8, 0x16, 0x76, 0xf2, 0x7b,
-	0x3b, 0x33, 0x13, 0xae, 0x19, 0x03, 0x3c, 0xb2, 0x44, 0x6f, 0xc3, 0x46, 0xc2, 0x24, 0x53, 0x64,
-	0xe4, 0x6b, 0xf1, 0x81, 0xb3, 0xb3, 0x8a, 0xd7, 0xb5, 0xb4, 0x96, 0xc1, 0x7a, 0x70, 0xeb, 0x1a,
-	0xfe, 0x4b, 0x77, 0x49, 0x5f, 0xbc, 0x37, 0xf3, 0xe2, 0x8e, 0x31, 0xf6, 0xb4, 0x6d, 0xf7, 0x32,
-	0x66, 0x18, 0xc9, 0x69, 0x91, 0x44, 0x8f, 0x60, 0x25, 0xa6, 0x97, 0x91, 0xa0, 0x3d, 0x77, 0x59,
-	0x57, 0xe1, 0x76, 0xe6, 0x38, 0x6b, 0xad, 0x72, 0x47, 0xb7, 0x16, 0xce, 0x70, 0xa5, 0x7f, 0x3a,
-	0x00, 0x63, 0xc2, 0xa1, 0x8f, 0xa1, 0xa0, 0xe9, 0x95, 0xa6, 0xd3, 0x0f, 0x03, 0x5d, 0xec, 0xfc,
-	0xde, 0xa3, 0x99, 0xf1, 0x35, 0x46, 0x34, 0xac, 0x69, 0xc3, 0xa3, 0x1b, 0x38, 0x4f, 0xc7, 0x47,
-	0xf4, 0x14, 0x16, 0xd3, 0x42, 0xd8, 0x8f, 0xb3, 0x3b, 0xd3, 0x5f, 0x97, 0x7d, 0xa9, 0xb4, 0xcf,
-	0xa3, 0x1b, 0x58, 0x5b, 0xa2, 0x1a, 0x2c, 0xb1, 0xcf, 0x19, 0x9f, 0xbf, 0x8d, 0xbc, 0x14, 0x9d,
-	0xf9, 0x30, 0xb6, 0xfb, 0x2b, 0xb0, 0xa4, 0x1b, 0xa6, 0xf4, 0x87, 0x65, 0xc8, 0x4f, 0xb0, 0x17,
-	0xdd, 0x03, 0xd3, 0x6a, 0x44, 0x47, 0x69, 0x28, 0xb6, 0xa6, 0x25, 0x69, 0x24, 0xe8, 0x2d, 0x58,
-	0x8f, 0x28, 0x0f, 0x86, 0x34, 0x60, 0xc4, 0x17, 0x3d, 0xe6, 0x6e, 0x6a, 0x44, 0x21, 0x13, 0xd6,
-	0x44, 0x8f, 0xa1, 0x7d, 0xb8, 0x27, 0x63, 0xc6, 0xfc, 0x73, 0x92, 0x30, 0x5f, 0x04, 0x3c, 0x4c,
-	0x69, 0x66, 0x0a, 0xd9, 0x63, 0xdc, 0x67, 0x3a, 0xf9, 0x1c, 0xde, 0x36, 0x20, 0x3c, 0xc6, 0xd4,
-	0x46, 0x10, 0xf4, 0x06, 0x2c, 0x53, 0x5f, 0xd3, 0x78, 0x41, 0xdf, 0x60, 0x4f, 0xe8, 0xa7, 0x00,
-	0xf1, 0xa8, 0x1f, 0x34, 0xc5, 0xbe, 0xe5, 0xe3, 0x4e, 0x40, 0xd1, 0x13, 0xd8, 0xa6, 0x51, 0x44,
-	0x12, 0x76, 0x31, 0x0c, 0x13, 0xd6, 0xb3, 0xf3, 0x8d, 0xc4, 0x29, 0x3d, 0xb9, 0xd2, 0x53, 0x64,
-	0x15, 0xbb, 0x34, 0x8a, 0xb0, 0x45, 0x98, 0xd9, 0xd5, 0x36, 0x7a, 0xf4, 0x10, 0x8a, 0xfd, 0x61,
-	0xd4, 0x0f, 0xa3, 0x68, 0xc0, 0xb8, 0x32, 0xd5, 0x59, 0xd6, 0x91, 0x6d, 0x4e, 0xc8, 0x75, 0x8d,
-	0xce, 0xe0, 0xd6, 0x24, 0x74, 0xc0, 0xa4, 0xa4, 0x01, 0x93, 0xee, 0x8a, 0xa6, 0x78, 0x65, 0x0e,
-	0x0a, 0xe9, 0x6d, 0x72, 0x6c, 0xec, 0xf0, 0xcd, 0x09, 0x67, 0x56, 0xa6, 0xbb, 0x6d, 0x34, 0x57,
-	0xc4, 0x30, 0xf1, 0x99, 0xbb, 0xaa, 0x83, 0x19, 0xcd, 0x10, 0x2d, 0x44, 0x4f, 0x61, 0x33, 0x83,
-	0x65, 0xfd, 0xb0, 0xf6, 0xed, 0x25, 0xcb, 0xdc, 0xb6, 0x0d, 0x1c, 0x7d, 0x04, 0x9b, 0x62, 0xa8,
-	0xd2, 0x69, 0x3b, 0xea, 0x6b, 0x78, 0xc5, 0x19, 0xb1, 0x61, 0x1c, 0x8c, 0x46, 0xc0, 0xcf, 0x60,
-	0xd9, 0x2c, 0x4c, 0x37, 0xaf, 0x63, 0xf9, 0xfe, 0x9c, 0x15, 0xc1, 0xd6, 0x0c, 0x7d, 0x08, 0xdb,
-	0xe6, 0x17, 0xe9, 0xe9, 0x29, 0x3f, 0xc5, 0xae, 0x82, 0x66, 0xd7, 0x1d, 0x03, 0xa9, 0x67, 0x88,
-	0x09, 0x6e, 0x3d, 0x85, 0xcd, 0x5e, 0x48, 0x03, 0x2e, 0xa4, 0x0a, 0x7d, 0x12, 0xf2, 0xbe, 0x70,
-	0x37, 0x66, 0x54, 0x65, 0x8c, 0x6f, 0xf0, 0xbe, 0x28, 0xfd, 0x3e, 0x07, 0x77, 0x3b, 0x2a, 0x61,
-	0x74, 0x10, 0xf2, 0xe0, 0x3b, 0xb7, 0x60, 0x1f, 0x42, 0x51, 0x86, 0x3c, 0x88, 0x18, 0x19, 0x2a,
-	0xc5, 0x12, 0x9a, 0x16, 0xd5, 0x0c, 0xf3, 0x4d, 0x23, 0x3f, 0xcd, 0xc4, 0xd3, 0xbb, 0x78, 0xf9,
-	0xca, 0x2e, 0xfe, 0x63, 0x0e, 0xee, 0xbd, 0xa4, 0x52, 0xf3, 0x2e, 0xe5, 0xe7, 0x80, 0x26, 0xe7,
-	0xc8, 0x0b, 0xab, 0xf9, 0xf1, 0xec, 0x85, 0x91, 0x5d, 0x3e, 0x31, 0x67, 0xec, 0xa6, 0x7e, 0x2d,
-	0x99, 0x16, 0x5d, 0x79, 0x00, 0x2c, 0xfc, 0xff, 0x1f, 0x00, 0x8b, 0xf3, 0x3e, 0x00, 0xfe, 0x94,
-	0x83, 0xad, 0x97, 0x47, 0x8f, 0x9e, 0x43, 0xc1, 0x8e, 0x16, 0xbd, 0x42, 0x75, 0xe1, 0x36, 0xf6,
-	0x0e, 0xff, 0x87, 0x82, 0x64, 0x23, 0x47, 0xaf, 0xd5, 0xfc, 0x60, 0x7c, 0x40, 0x6f, 0x02, 0xa8,
-	0x84, 0x72, 0xe9, 0x27, 0x61, 0x6c, 0x4a, 0xbf, 0x86, 0x27, 0x24, 0xe8, 0x0e, 0xac, 0x86, 0x92,
-	0xf4, 0x43, 0x4e, 0x23, 0x5d, 0xb2, 0x55, 0xbc, 0x12, 0xca, 0x83, 0xf4, 0x98, 0x9a, 0x4e, 0xf4,
-	0xe6, 0xa2, 0xee, 0xcd, 0x09, 0x49, 0xe9, 0x13, 0xc8, 0x4f, 0x5c, 0x8b, 0xee, 0x82, 0x7b, 0xec,
-	0x75, 0x3a, 0xd5, 0x43, 0x8f, 0x74, 0x3f, 0x6d, 0x7b, 0xe4, 0xb4, 0xd5, 0x69, 0x7b, 0xb5, 0xc6,
-	0x41, 0xc3, 0xab, 0x17, 0x6f, 0xa0, 0x0d, 0x80, 0x2e, 0xae, 0xb6, 0x3a, 0x35, 0xdc, 0x68, 0x77,
-	0x8b, 0x0e, 0xda, 0x86, 0xdb, 0x5e, 0xab, 0x4e, 0x4e, 0x0e, 0x48, 0xa7, 0xd1, 0x3a, 0x6c, 0x7a,
-	0xe4, 0xb4, 0xdb, 0xf5, 0x70, 0xb5, 0x55, 0xf3, 0x8a, 0xb9, 0xd2, 0x5f, 0x1c, 0x28, 0x4e, 0xaf,
-	0x63, 0x74, 0x0a, 0x1b, 0x66, 0xaf, 0x33, 0xee, 0x8b, 0x5e, 0xc8, 0x03, 0x5b, 0xb7, 0xf2, 0xcc,
-	0xba, 0x69, 0x2f, 0x9e, 0xb5, 0xc2, 0xeb, 0x74, 0xf2, 0x88, 0x76, 0xe1, 0x35, 0x49, 0x07, 0x71,
-	0xc4, 0x48, 0x42, 0x15, 0x23, 0xe7, 0x2c, 0x51, 0x5f, 0xe9, 0x3a, 0x2d, 0xe1, 0x4d, 0xa3, 0xc0,
-	0x54, 0xb1, 0xa3, 0x54, 0x7c, 0x75, 0x87, 0x2e, 0x5c, 0xb3, 0x43, 0xbf, 0x07, 0x85, 0xf8, 0x3c,
-	0xa1, 0x92, 0x91, 0xf3, 0x90, 0xeb, 0xc7, 0xd4, 0xc2, 0xce, 0x1a, 0xce, 0x1b, 0xd9, 0x51, 0x2a,
-	0x2a, 0xd5, 0x61, 0x6d, 0xf4, 0x3a, 0x40, 0xc8, 0xbe, 0x2b, 0x4c, 0xfb, 0x98, 0x97, 0xc2, 0x95,
-	0x8b, 0x72, 0x57, 0x2f, 0x2a, 0xfd, 0x0a, 0x60, 0xfc, 0x40, 0x48, 0xdd, 0x70, 0x3a, 0xc8, 0xde,
-	0x96, 0xfa, 0xf7, 0xd4, 0xca, 0xcd, 0xcd, 0xbf, 0x72, 0xe7, 0x49, 0x74, 0xf7, 0xdf, 0x0e, 0xac,
-	0xbf, 0x50, 0x5a, 0xf4, 0x26, 0x6c, 0x55, 0x4f, 0xeb, 0x8d, 0x13, 0xe2, 0xb5, 0x6a, 0x27, 0xf5,
-	0x46, 0xeb, 0x70, 0x8a, 0x04, 0x77, 0xc1, 0x9d, 0xd2, 0x37, 0x1b, 0x2d, 0xaf, 0x8a, 0xc9, 0xa3,
-	0xf7, 0x8a, 0x0e, 0xba, 0x0d, 0x37, 0xa7, 0xb4, 0x07, 0xcd, 0x6a, 0xad, 0x98, 0x43, 0x2e, 0xdc,
-	0x9a, 0x52, 0x1c, 0x9f, 0x36, 0xab, 0xcf, 0x8a, 0x0b, 0xe8, 0x0d, 0x40, 0x53, 0x9a, 0xea, 0x31,
-	0x2e, 0x2e, 0xa2, 0x3b, 0xf0, 0xfa, 0x55, 0x39, 0x79, 0xb6, 0x5f, 0x5c, 0x4a, 0x89, 0x37, 0xa5,
-	0x3a, 0x39, 0x3c, 0x24, 0x27, 0xed, 0xd3, 0x4e, 0x71, 0x19, 0x3d, 0x84, 0xb7, 0xa7, 0x94, 0x9d,
-	0xb6, 0xe7, 0x7d, 0x42, 0x9e, 0x35, 0xba, 0x47, 0xe4, 0xc8, 0xab, 0xd6, 0x3d, 0x4c, 0xf6, 0x3f,
-	0xed, 0x7a, 0xc5, 0x95, 0xbd, 0xbf, 0xe7, 0x60, 0xd5, 0x3e, 0x69, 0x25, 0xfa, 0xc6, 0x81, 0xc2,
-	0xe4, 0x88, 0x44, 0x3f, 0x9e, 0x49, 0xca, 0x6b, 0x76, 0xcf, 0xd6, 0x4f, 0x5e, 0xd1, 0xca, 0x0c,
-	0xda, 0xd2, 0xc1, 0xaf, 0xff, 0xfc, 0xd7, 0xdf, 0xe4, 0x9e, 0x96, 0x1e, 0x8f, 0xfe, 0xa8, 0xfe,
-	0xc2, 0xee, 0xac, 0x27, 0x71, 0x22, 0x9e, 0x33, 0x5f, 0xc9, 0xca, 0x6e, 0x85, 0x06, 0x8c, 0xab,
-	0xec, 0x2f, 0xac, 0xac, 0xec, 0xfe, 0xf2, 0x83, 0xde, 0x84, 0xb3, 0x0f, 0x9c, 0x5d, 0xf4, 0x5b,
-	0x07, 0x5e, 0xbf, 0x76, 0xe2, 0xa3, 0x27, 0xf3, 0xcf, 0xa6, 0xeb, 0xf2, 0xfa, 0xf0, 0xbf, 0x35,
-	0x37, 0x09, 0xee, 0x38, 0xef, 0x3a, 0xfb, 0x5f, 0x3b, 0xf0, 0x96, 0x2f, 0x06, 0xb3, 0x3c, 0xed,
-	0x17, 0xec, 0x47, 0x69, 0xa7, 0xf4, 0x6e, 0x3b, 0x9f, 0x35, 0xac, 0x41, 0x20, 0x52, 0xf2, 0x96,
-	0x45, 0x12, 0x54, 0x02, 0xc6, 0x35, 0xf9, 0x2b, 0x46, 0x45, 0xe3, 0x50, 0xbe, 0xf4, 0x3f, 0xff,
-	0xe3, 0xb1, 0xe8, 0x5f, 0x8e, 0xf3, 0xbb, 0x5c, 0xae, 0x7e, 0xf0, 0x75, 0xee, 0xfe, 0xa1, 0xf1,
-	0x59, 0xd3, 0x41, 0xd4, 0xc7, 0x41, 0x7c, 0x6c, 0x8c, 0xce, 0x96, 0xb5, 0xff, 0x1f, 0xfd, 0x27,
-	0x00, 0x00, 0xff, 0xff, 0x78, 0xce, 0xe5, 0x99, 0x1d, 0x11, 0x00, 0x00,
+	// 1601 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcd, 0x73, 0x23, 0x47,
+	0x15, 0xdf, 0x91, 0xbf, 0x9f, 0x64, 0x5b, 0xe9, 0xdd, 0x64, 0x67, 0xed, 0xdd, 0xec, 0xa2, 0x54,
+	0x0a, 0xaf, 0x09, 0x52, 0xd6, 0x40, 0xa8, 0x64, 0x6b, 0xc3, 0xca, 0xd2, 0xd8, 0x56, 0xe1, 0xb5,
+	0x95, 0x96, 0x9c, 0x4d, 0xf6, 0xd2, 0xd5, 0x1e, 0xb5, 0xc6, 0xb3, 0x8c, 0xba, 0xc7, 0xd3, 0x3d,
+	0x49, 0x1c, 0x0a, 0x0e, 0xdc, 0xb9, 0x00, 0x27, 0x8e, 0x5c, 0xa8, 0xca, 0x95, 0x0b, 0x07, 0x38,
+	0xf1, 0x27, 0x70, 0xe6, 0xc6, 0x91, 0x1b, 0x1c, 0xa8, 0xe2, 0x42, 0x4d, 0x77, 0x8f, 0xa4, 0x95,
+	0xbd, 0x2b, 0x05, 0x38, 0x71, 0x53, 0xbf, 0xf7, 0x7b, 0xaf, 0xdf, 0xfb, 0xcd, 0xfb, 0x68, 0x1b,
+	0xbe, 0x1d, 0x08, 0x11, 0x44, 0xac, 0xe6, 0x47, 0x22, 0xed, 0xd5, 0x7a, 0x21, 0x8d, 0x44, 0xd0,
+	0x8f, 0xc4, 0xe7, 0xb5, 0xcf, 0x76, 0x4e, 0x99, 0xa2, 0x0f, 0x6a, 0x92, 0x49, 0x19, 0x0a, 0x5e,
+	0x8d, 0x13, 0xa1, 0x04, 0xba, 0x6b, 0xe0, 0x55, 0x0d, 0xaf, 0x8e, 0xe0, 0x55, 0x0b, 0xdf, 0xb8,
+	0x6d, 0xfd, 0xd1, 0x38, 0xac, 0x51, 0xce, 0x85, 0xa2, 0x2a, 0x14, 0x5c, 0x1a, 0xf3, 0x8d, 0xa9,
+	0xb7, 0xf9, 0x82, 0x2b, 0xf6, 0x85, 0xb2, 0xf0, 0x77, 0xa6, 0xc1, 0x43, 0xae, 0x18, 0xcf, 0xd1,
+	0xef, 0xcf, 0x98, 0x0a, 0x61, 0x5c, 0x85, 0xea, 0x82, 0xa8, 0x8b, 0x98, 0x59, 0xd3, 0x3c, 0x6a,
+	0x7d, 0x3a, 0x4d, 0xfb, 0x35, 0xa9, 0x92, 0xd4, 0xcf, 0x1d, 0xdf, 0xb4, 0xda, 0x24, 0xf6, 0x6b,
+	0x52, 0x51, 0x95, 0xe6, 0xe9, 0xb8, 0x56, 0x91, 0x79, 0xaa, 0x45, 0x54, 0x45, 0x3c, 0x30, 0x9a,
+	0xca, 0xdf, 0x1d, 0xb8, 0xde, 0x64, 0x8a, 0xf9, 0xaa, 0xa5, 0x43, 0xc4, 0xec, 0x3c, 0x65, 0x52,
+	0x21, 0x17, 0x96, 0x6c, 0x14, 0xae, 0x73, 0xcf, 0xd9, 0x5a, 0xc1, 0xf9, 0x11, 0x75, 0xa0, 0x74,
+	0x9e, 0xb2, 0xe4, 0x82, 0xc4, 0x34, 0xa1, 0x03, 0xe9, 0x16, 0xee, 0x39, 0x5b, 0xc5, 0x9d, 0x77,
+	0xab, 0x53, 0x08, 0xaf, 0x7e, 0x94, 0x19, 0xb5, 0x33, 0x1b, 0xa6, 0x58, 0x22, 0x71, 0xf1, 0x7c,
+	0x28, 0x90, 0xe8, 0x10, 0xcc, 0x91, 0x84, 0x3c, 0x4e, 0x95, 0x3b, 0xa7, 0x7d, 0x7e, 0x6b, 0x36,
+	0x9f, 0xad, 0xcc, 0x04, 0xc3, 0xf9, 0xf0, 0x37, 0xba, 0x0b, 0x45, 0xed, 0x87, 0xd0, 0xb4, 0x17,
+	0x0a, 0x77, 0xe1, 0x9e, 0xb3, 0x55, 0xc2, 0xa0, 0x45, 0xf5, 0x4c, 0x52, 0xf9, 0x93, 0x03, 0x37,
+	0x5e, 0xcc, 0x5a, 0xc6, 0x82, 0x4b, 0x96, 0x59, 0x26, 0xf6, 0x37, 0x09, 0x7b, 0x36, 0x75, 0xc8,
+	0x45, 0xad, 0x1e, 0x3a, 0xce, 0xb3, 0x4f, 0x98, 0x4c, 0x23, 0x65, 0xb3, 0x7f, 0x67, 0xb6, 0x48,
+	0xb1, 0xb6, 0xb1, 0x99, 0x9b, 0x03, 0x7a, 0x1f, 0xd6, 0x3e, 0x67, 0xa7, 0x67, 0x42, 0xfc, 0x88,
+	0x98, 0x4f, 0x66, 0x93, 0x47, 0xb9, 0xcb, 0x24, 0xf6, 0xab, 0x1d, 0xad, 0xc1, 0xab, 0x16, 0x69,
+	0x8e, 0x95, 0xbf, 0x15, 0x60, 0x7d, 0x82, 0x55, 0xb4, 0x09, 0x2b, 0x2a, 0x1c, 0x30, 0xf2, 0xa5,
+	0xe0, 0xcc, 0x86, 0xbf, 0x9c, 0x09, 0x9e, 0x09, 0xce, 0xd0, 0x7b, 0x50, 0x0a, 0x98, 0x20, 0x91,
+	0xf0, 0x75, 0xb1, 0xdb, 0xe0, 0xaf, 0xe7, 0x37, 0xe9, 0x3a, 0x3b, 0xa4, 0xea, 0x90, 0x07, 0xb8,
+	0x18, 0x30, 0x71, 0x68, 0x71, 0xa8, 0x09, 0xcb, 0xb6, 0xde, 0xb3, 0xe8, 0xe6, 0xb6, 0x8a, 0x3b,
+	0x5b, 0x53, 0x13, 0x6e, 0x18, 0x03, 0x3c, 0xb4, 0x44, 0x6f, 0xc3, 0x5a, 0xc2, 0x24, 0x53, 0x64,
+	0xe8, 0x6b, 0xfe, 0x9e, 0xb3, 0xb5, 0x8c, 0x57, 0xb5, 0xb4, 0x91, 0xc3, 0x7a, 0x70, 0xe3, 0x8a,
+	0xfa, 0x97, 0xee, 0x82, 0xbe, 0x78, 0x67, 0xea, 0xc5, 0x1d, 0x63, 0xec, 0x69, 0xdb, 0xee, 0x45,
+	0xcc, 0x30, 0x92, 0x93, 0x22, 0x89, 0x1e, 0xc0, 0x52, 0x4c, 0x2f, 0x22, 0x41, 0x7b, 0xee, 0xa2,
+	0x66, 0xe1, 0x66, 0xee, 0x38, 0x6f, 0xad, 0x6a, 0x47, 0xb7, 0x16, 0xce, 0x71, 0x95, 0x7f, 0x38,
+	0x00, 0xa3, 0x82, 0x43, 0x1f, 0x43, 0x49, 0x97, 0x57, 0x96, 0x4e, 0x3f, 0x0c, 0x34, 0xd9, 0xc5,
+	0x9d, 0x07, 0x53, 0xe3, 0x6b, 0x0d, 0xcb, 0xb0, 0xa1, 0x0d, 0x0f, 0xae, 0xe1, 0x22, 0x1d, 0x1d,
+	0xd1, 0x63, 0x98, 0xcf, 0x88, 0xb0, 0x1f, 0x67, 0x7b, 0xaa, 0xbf, 0x2e, 0xfb, 0x42, 0x69, 0x9f,
+	0x07, 0xd7, 0xb0, 0xb6, 0x44, 0x0d, 0x58, 0x60, 0x9f, 0x31, 0x3e, 0x7b, 0x1b, 0x79, 0x19, 0x3a,
+	0xf7, 0x61, 0x6c, 0x77, 0x97, 0x60, 0x41, 0x37, 0x4c, 0xe5, 0x77, 0x8b, 0x50, 0x1c, 0xab, 0x5e,
+	0x74, 0x07, 0x4c, 0xab, 0x11, 0x1d, 0xa5, 0x29, 0xb1, 0x15, 0x2d, 0xc9, 0x22, 0x41, 0x6f, 0xc1,
+	0x6a, 0x44, 0x79, 0x90, 0xd2, 0x80, 0x11, 0x5f, 0xf4, 0x98, 0xbb, 0xae, 0x11, 0xa5, 0x5c, 0xd8,
+	0x10, 0x3d, 0x86, 0x76, 0xe1, 0x8e, 0x8c, 0x19, 0xf3, 0xcf, 0x48, 0xc2, 0x7c, 0x11, 0xf0, 0x30,
+	0x2b, 0x33, 0x43, 0x64, 0x8f, 0x71, 0x9f, 0xe9, 0xe4, 0x0b, 0x78, 0xd3, 0x80, 0xf0, 0x08, 0xd3,
+	0x18, 0x42, 0xd0, 0x1b, 0xb0, 0x48, 0x7d, 0x5d, 0xc6, 0x73, 0xfa, 0x06, 0x7b, 0x42, 0xdf, 0x07,
+	0x88, 0x87, 0xfd, 0xa0, 0x4b, 0xec, 0x15, 0x1f, 0x77, 0x0c, 0x8a, 0x1e, 0xc1, 0x26, 0x8d, 0x22,
+	0x92, 0xb0, 0xf3, 0x34, 0x4c, 0x58, 0xcf, 0xce, 0x37, 0x12, 0x67, 0xe5, 0xc9, 0x95, 0x9e, 0x22,
+	0xcb, 0xd8, 0xa5, 0x51, 0x84, 0x2d, 0xc2, 0xcc, 0xae, 0xb6, 0xd1, 0xa3, 0xfb, 0x50, 0xee, 0xa7,
+	0x51, 0x3f, 0x8c, 0xa2, 0x01, 0xe3, 0xca, 0xb0, 0xb3, 0xa8, 0x23, 0x5b, 0x1f, 0x93, 0x6b, 0x8e,
+	0x4e, 0xe1, 0xc6, 0x38, 0x74, 0xc0, 0xa4, 0xa4, 0x01, 0x93, 0xee, 0x92, 0x2e, 0xf1, 0xda, 0x0c,
+	0x25, 0xa4, 0xb7, 0xc9, 0x13, 0x63, 0x87, 0xaf, 0x8f, 0x39, 0xb3, 0x32, 0xdd, 0x6d, 0xc3, 0xb9,
+	0x22, 0xd2, 0xc4, 0x67, 0xee, 0xb2, 0x0e, 0x66, 0x38, 0x43, 0xb4, 0x10, 0x3d, 0x86, 0xf5, 0x1c,
+	0x96, 0xf7, 0xc3, 0xca, 0xab, 0x29, 0xcb, 0xdd, 0xb6, 0x0d, 0x1c, 0x7d, 0x04, 0xeb, 0x22, 0x55,
+	0xd9, 0xb4, 0x1d, 0xf6, 0x35, 0x7c, 0xcd, 0x19, 0xb1, 0x66, 0x1c, 0x0c, 0x47, 0xc0, 0x0f, 0x60,
+	0xd1, 0x2c, 0x4c, 0xb7, 0xa8, 0x63, 0xf9, 0xe6, 0x8c, 0x8c, 0x60, 0x6b, 0x86, 0x3e, 0x84, 0x4d,
+	0xf3, 0x8b, 0xf4, 0xf4, 0x94, 0x9f, 0xa8, 0xae, 0x92, 0xae, 0xae, 0x5b, 0x06, 0xd2, 0xcc, 0x11,
+	0x63, 0xb5, 0xf5, 0x18, 0xd6, 0x7b, 0x21, 0x0d, 0xb8, 0x90, 0x2a, 0xf4, 0x49, 0xc8, 0xfb, 0xc2,
+	0x5d, 0x9b, 0xc2, 0xca, 0x08, 0xdf, 0xe2, 0x7d, 0x51, 0xf9, 0x6d, 0x01, 0x6e, 0x77, 0x54, 0xc2,
+	0xe8, 0x20, 0xe4, 0xc1, 0xff, 0xdd, 0x82, 0xbd, 0x0f, 0x65, 0x19, 0xf2, 0x20, 0x62, 0x24, 0x55,
+	0x8a, 0x25, 0x34, 0x23, 0xd5, 0x0c, 0xf3, 0x75, 0x23, 0x3f, 0xc9, 0xc5, 0x93, 0xbb, 0x78, 0xf1,
+	0xd2, 0x2e, 0xfe, 0x7d, 0x01, 0xee, 0xbc, 0x84, 0xa9, 0x59, 0x97, 0xf2, 0x73, 0x40, 0xe3, 0x73,
+	0xe4, 0x85, 0xd5, 0xfc, 0x70, 0xfa, 0xc2, 0xc8, 0x2f, 0x1f, 0x9b, 0x33, 0x76, 0x53, 0xbf, 0x96,
+	0x4c, 0x8a, 0x2e, 0x3d, 0x00, 0xe6, 0xfe, 0xf7, 0x0f, 0x80, 0xf9, 0x59, 0x1f, 0x00, 0x7f, 0x2c,
+	0xc0, 0xc6, 0xcb, 0xa3, 0x47, 0xcf, 0xa1, 0x64, 0x47, 0x8b, 0x5e, 0xa1, 0x9a, 0xb8, 0xb5, 0x9d,
+	0xfd, 0xff, 0x82, 0x90, 0x7c, 0xe4, 0xe8, 0xb5, 0x5a, 0x1c, 0x8c, 0x0e, 0xe8, 0x4d, 0x00, 0x95,
+	0x50, 0x2e, 0xfd, 0x24, 0x8c, 0x0d, 0xf5, 0x2b, 0x78, 0x4c, 0x82, 0x6e, 0xc1, 0x72, 0x28, 0x49,
+	0x3f, 0xe4, 0x34, 0xd2, 0x94, 0x2d, 0xe3, 0xa5, 0x50, 0xee, 0x65, 0xc7, 0xcc, 0x74, 0xac, 0x37,
+	0xe7, 0x75, 0x6f, 0x8e, 0x49, 0x2a, 0x9f, 0x40, 0x71, 0xec, 0x5a, 0x74, 0x1b, 0xdc, 0x27, 0x5e,
+	0xa7, 0x53, 0xdf, 0xf7, 0x48, 0xf7, 0xd3, 0xb6, 0x47, 0x4e, 0x8e, 0x3a, 0x6d, 0xaf, 0xd1, 0xda,
+	0x6b, 0x79, 0xcd, 0xf2, 0x35, 0xb4, 0x06, 0xd0, 0xc5, 0xf5, 0xa3, 0x4e, 0x03, 0xb7, 0xda, 0xdd,
+	0xb2, 0x83, 0x36, 0xe1, 0xa6, 0x77, 0xd4, 0x24, 0xc7, 0x7b, 0xa4, 0xd3, 0x3a, 0xda, 0x3f, 0xf4,
+	0xc8, 0x49, 0xb7, 0xeb, 0xe1, 0xfa, 0x51, 0xc3, 0x2b, 0x17, 0x2a, 0x7f, 0x71, 0xa0, 0x3c, 0xb9,
+	0x8e, 0xd1, 0x09, 0xac, 0x99, 0xbd, 0xce, 0xb8, 0x2f, 0x7a, 0x21, 0x0f, 0x2c, 0x6f, 0xd5, 0xa9,
+	0xbc, 0x69, 0x2f, 0x9e, 0xb5, 0xc2, 0xab, 0x74, 0xfc, 0x88, 0xb6, 0xe1, 0x35, 0x49, 0x07, 0x71,
+	0xc4, 0x48, 0x42, 0x15, 0x23, 0x67, 0x2c, 0x51, 0x5f, 0x6a, 0x9e, 0x16, 0xf0, 0xba, 0x51, 0x60,
+	0xaa, 0xd8, 0x41, 0x26, 0xbe, 0xbc, 0x43, 0xe7, 0xae, 0xd8, 0xa1, 0xdf, 0x80, 0x52, 0x7c, 0x96,
+	0x50, 0xc9, 0xc8, 0x59, 0xc8, 0xf5, 0x63, 0x6a, 0x6e, 0x6b, 0x05, 0x17, 0x8d, 0xec, 0x20, 0x13,
+	0x55, 0x9a, 0xb0, 0x32, 0x7c, 0x1d, 0x20, 0x64, 0xdf, 0x15, 0xa6, 0x7d, 0xcc, 0x4b, 0xe1, 0xd2,
+	0x45, 0x85, 0xcb, 0x17, 0x55, 0x7e, 0x0a, 0x30, 0x7a, 0x20, 0x64, 0x6e, 0x38, 0x1d, 0xe4, 0x6f,
+	0x4b, 0xfd, 0x7b, 0x62, 0xe5, 0x16, 0x66, 0x5f, 0xb9, 0xb3, 0x24, 0xba, 0xfd, 0x2f, 0x07, 0x56,
+	0x5f, 0xa0, 0x16, 0xbd, 0x09, 0x1b, 0xf5, 0x93, 0x66, 0xeb, 0x98, 0x78, 0x47, 0x8d, 0xe3, 0x66,
+	0xeb, 0x68, 0x7f, 0xa2, 0x08, 0x6e, 0x83, 0x3b, 0xa1, 0x3f, 0x6c, 0x1d, 0x79, 0x75, 0x4c, 0x1e,
+	0xbc, 0x57, 0x76, 0xd0, 0x4d, 0xb8, 0x3e, 0xa1, 0xdd, 0x3b, 0xac, 0x37, 0xca, 0x05, 0xe4, 0xc2,
+	0x8d, 0x09, 0xc5, 0x93, 0x93, 0xc3, 0xfa, 0xd3, 0xf2, 0x1c, 0x7a, 0x03, 0xd0, 0x84, 0xa6, 0xfe,
+	0x04, 0x97, 0xe7, 0xd1, 0x2d, 0x78, 0xfd, 0xb2, 0x9c, 0x3c, 0xdd, 0x2d, 0x2f, 0x64, 0x85, 0x37,
+	0xa1, 0x3a, 0xde, 0xdf, 0x27, 0xc7, 0xed, 0x93, 0x4e, 0x79, 0x11, 0xdd, 0x87, 0xb7, 0x27, 0x94,
+	0x9d, 0xb6, 0xe7, 0x7d, 0x42, 0x9e, 0xb6, 0xba, 0x07, 0xe4, 0xc0, 0xab, 0x37, 0x3d, 0x4c, 0x76,
+	0x3f, 0xed, 0x7a, 0xe5, 0xa5, 0x9d, 0x3f, 0xcc, 0xc1, 0xb2, 0x7d, 0xd2, 0x4a, 0xf4, 0x8b, 0x02,
+	0x94, 0xc6, 0x47, 0x24, 0xfa, 0xee, 0xd4, 0xa2, 0xbc, 0x62, 0xf7, 0x6c, 0x7c, 0xef, 0x6b, 0x5a,
+	0x99, 0x41, 0x5b, 0xf9, 0x95, 0xf3, 0xb3, 0x3f, 0xff, 0xf5, 0x97, 0x85, 0x9f, 0x3b, 0x95, 0x87,
+	0xc3, 0x3f, 0x55, 0x7f, 0x6c, 0xb7, 0xd6, 0xa3, 0x38, 0x11, 0xcf, 0x99, 0xaf, 0x64, 0x6d, 0xbb,
+	0x46, 0x03, 0xc6, 0x55, 0xfe, 0x47, 0xac, 0xac, 0x6d, 0xff, 0xe4, 0x83, 0xde, 0x98, 0xbb, 0x0f,
+	0x9c, 0xed, 0x67, 0x3f, 0xac, 0xec, 0xcd, 0xe0, 0x21, 0x49, 0x79, 0xf6, 0xa7, 0x4b, 0x26, 0x78,
+	0x85, 0x33, 0xf4, 0x6b, 0x07, 0x5e, 0xbf, 0x72, 0x81, 0xa0, 0x47, 0xb3, 0x8f, 0xba, 0xab, 0x68,
+	0xfa, 0xf0, 0x3f, 0x35, 0x37, 0x7c, 0x6d, 0x39, 0xef, 0x3a, 0xbb, 0x5f, 0x39, 0xf0, 0x96, 0x2f,
+	0x06, 0xd3, 0x3c, 0xed, 0x96, 0xec, 0x37, 0x6e, 0x67, 0xdd, 0xd2, 0x76, 0x9e, 0xb5, 0xac, 0x41,
+	0x20, 0xb2, 0x5e, 0xa8, 0x8a, 0x24, 0xa8, 0x05, 0x8c, 0xeb, 0x5e, 0xaa, 0x19, 0x15, 0x8d, 0x43,
+	0xf9, 0xd2, 0x7f, 0x21, 0x3c, 0x1c, 0x89, 0xfe, 0xe9, 0x38, 0xbf, 0x29, 0x14, 0x9a, 0x7b, 0x5f,
+	0x15, 0xee, 0xee, 0x1b, 0x9f, 0x0d, 0x1d, 0x44, 0x73, 0x14, 0xc4, 0xc7, 0xc6, 0xe8, 0x74, 0x51,
+	0xfb, 0xff, 0xce, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x93, 0x54, 0x90, 0x52, 0x6c, 0x11, 0x00,
+	0x00,
 }
diff --git a/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go b/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go
index 9914622c..19eb590a 100644
--- a/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go
@@ -515,56 +515,59 @@ func init() {
 }
 
 var fileDescriptor5 = []byte{
-	// 804 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x4f, 0xdb, 0x48,
-	0x14, 0xdf, 0x31, 0xbb, 0x08, 0x06, 0xed, 0x2e, 0xcc, 0xa2, 0x10, 0x85, 0x25, 0x64, 0xcd, 0x6a,
-	0x85, 0x72, 0xb0, 0x45, 0x76, 0x2f, 0x2c, 0xfd, 0xa3, 0x42, 0x0c, 0x8a, 0x44, 0x42, 0xe4, 0x04,
-	0xa4, 0xf6, 0x62, 0x39, 0xf8, 0x61, 0x19, 0x12, 0x8f, 0x9b, 0x99, 0x40, 0x43, 0xc5, 0x85, 0xaf,
-	0xd0, 0x6b, 0x4f, 0x3d, 0xf6, 0xd0, 0x53, 0xfb, 0x01, 0x7a, 0xee, 0xb1, 0xd7, 0x4a, 0xbd, 0x54,
-	0xfd, 0x06, 0x95, 0xaa, 0x9e, 0x2a, 0x8f, 0x1d, 0x82, 0xea, 0x3f, 0xa1, 0x51, 0x6f, 0x9e, 0x37,
-	0xf3, 0x7b, 0xef, 0xf7, 0x7b, 0xf3, 0xde, 0xf3, 0xe0, 0x75, 0x9b, 0x52, 0xbb, 0x0d, 0xea, 0x61,
-	0x9b, 0xf6, 0x2c, 0xd5, 0x72, 0xcc, 0x36, 0xb5, 0x8f, 0xda, 0xf4, 0x4c, 0x3d, 0x2d, 0xb5, 0x80,
-	0x9b, 0x6b, 0x2a, 0x03, 0xc6, 0x1c, 0xea, 0x1a, 0xe0, 0x72, 0x87, 0xf7, 0x0d, 0xde, 0xf7, 0x40,
-	0xf1, 0xba, 0x94, 0x53, 0xb2, 0x1c, 0x40, 0x15, 0x01, 0x55, 0x86, 0x50, 0x25, 0x84, 0xe6, 0xfe,
-	0x0c, 0x7d, 0x9b, 0x9e, 0xa3, 0x9a, 0xae, 0x4b, 0xb9, 0xc9, 0x1d, 0xea, 0xb2, 0x00, 0x9e, 0x5b,
-	0x1b, 0x15, 0x39, 0x12, 0x31, 0xb7, 0x18, 0x42, 0xc4, 0xaa, 0xd5, 0x3b, 0x52, 0xa1, 0xe3, 0xf1,
-	0x7e, 0xb8, 0x59, 0xf8, 0x76, 0xf3, 0xc8, 0x81, 0xb6, 0x65, 0x74, 0x4c, 0x76, 0x12, 0x9c, 0x90,
-	0x3f, 0x49, 0x78, 0xae, 0x11, 0xc8, 0xd1, 0x84, 0xef, 0x66, 0xdf, 0x03, 0x42, 0xf0, 0xcf, 0xae,
-	0xd9, 0x81, 0x2c, 0x2a, 0xa0, 0xd5, 0x69, 0x5d, 0x7c, 0x93, 0x33, 0x3c, 0x1f, 0x46, 0xa7, 0xa7,
-	0xd0, 0xed, 0x3a, 0x16, 0x18, 0x1d, 0x6a, 0x41, 0x56, 0x2a, 0xa0, 0xd5, 0xdf, 0x4a, 0x9a, 0x32,
-	0x42, 0xb9, 0x12, 0x89, 0xa2, 0x04, 0x9f, 0x7b, 0xa1, 0xb7, 0x2a, 0xb5, 0x40, 0x27, 0x10, 0xb1,
-	0x91, 0x1a, 0x9e, 0x12, 0x56, 0x07, 0x58, 0x76, 0xa2, 0x30, 0xb1, 0x3a, 0x53, 0x2a, 0x8d, 0x0c,
-	0x16, 0x89, 0xa2, 0x5f, 0xf9, 0x90, 0x2f, 0x11, 0x26, 0xd1, 0xd0, 0xe4, 0x6f, 0x5c, 0xd0, 0x6a,
-	0xcd, 0x4a, 0xf3, 0xbe, 0xb1, 0x77, 0xa0, 0xe9, 0x7a, 0xa5, 0xac, 0x19, 0xd5, 0xbd, 0xb2, 0x66,
-	0xec, 0xd7, 0x1a, 0x75, 0x6d, 0xab, 0xb2, 0x5d, 0xd1, 0xca, 0xb3, 0x3f, 0x91, 0xbf, 0xf0, 0x52,
-	0xec, 0xa9, 0xc1, 0x6a, 0x16, 0x91, 0x15, 0xbc, 0x1c, 0x7b, 0xa4, 0xb1, 0x5f, 0xaf, 0xef, 0x6a,
-	0x55, 0xad, 0xd6, 0x9c, 0x95, 0x64, 0x86, 0x97, 0x76, 0x1d, 0xc6, 0x23, 0x49, 0x61, 0x3a, 0x3c,
-	0xec, 0x01, 0xe3, 0x24, 0x83, 0x27, 0x3d, 0xb3, 0x0b, 0x2e, 0x0f, 0x2f, 0x21, 0x5c, 0x91, 0x45,
-	0x3c, 0xed, 0x99, 0x36, 0x18, 0xcc, 0x39, 0x0f, 0x72, 0xff, 0x8b, 0x3e, 0xe5, 0x1b, 0x1a, 0xce,
-	0x39, 0x90, 0x25, 0x8c, 0xc5, 0x26, 0xa7, 0x27, 0xe0, 0x66, 0x27, 0x04, 0x50, 0x1c, 0x6f, 0xfa,
-	0x06, 0xf9, 0x05, 0xc2, 0xf9, 0xa4, 0xa8, 0xcc, 0xa3, 0x2e, 0x03, 0x62, 0xe1, 0xf9, 0x98, 0xea,
-	0x66, 0x59, 0x74, 0xc3, 0xc4, 0x47, 0x5c, 0xeb, 0x84, 0x45, 0xa2, 0x91, 0x7f, 0xf0, 0xef, 0x2e,
-	0x3c, 0xe2, 0xc6, 0x35, 0xb2, 0x92, 0x20, 0xfb, 0xab, 0x6f, 0xae, 0x5f, 0x11, 0x5e, 0xc3, 0x8b,
-	0x3b, 0x10, 0xa5, 0x3b, 0xc8, 0x51, 0x4c, 0x99, 0xca, 0x4f, 0x11, 0xce, 0x6f, 0x75, 0xc1, 0xe4,
-	0x90, 0x08, 0x4b, 0x4a, 0x6d, 0x0b, 0xff, 0x11, 0xa3, 0x5d, 0x30, 0x1b, 0x4f, 0xfa, 0x5c, 0x44,
-	0xba, 0xfc, 0x1a, 0xe1, 0xfc, 0xbe, 0x67, 0xa5, 0xd1, 0x4b, 0xa0, 0x81, 0x7e, 0x20, 0x0d, 0xb2,
-	0x81, 0x67, 0x7a, 0x82, 0x85, 0x98, 0x05, 0xa1, 0xc4, 0xdc, 0xc0, 0xf7, 0x60, 0x5c, 0x28, 0xdb,
-	0xfe, 0xb8, 0xa8, 0x9a, 0xec, 0x44, 0xc7, 0xc1, 0x71, 0xff, 0x5b, 0xfe, 0x0f, 0xe7, 0xcb, 0xd0,
-	0x86, 0x14, 0x09, 0x31, 0x17, 0x53, 0x7a, 0x3f, 0x85, 0x49, 0xb4, 0xf0, 0xc8, 0x3b, 0x84, 0x33,
-	0xf1, 0x35, 0x49, 0xee, 0x8c, 0xd4, 0x9a, 0xda, 0x42, 0xb9, 0xbb, 0x63, 0xe3, 0x83, 0x66, 0x90,
-	0xef, 0x5d, 0xbe, 0xfd, 0xf0, 0x44, 0xda, 0x20, 0xeb, 0x57, 0xf3, 0xf7, 0x71, 0x50, 0x2a, 0xb7,
-	0xbd, 0x2e, 0x3d, 0x86, 0x43, 0xce, 0xd4, 0xa2, 0x6a, 0xda, 0xe0, 0xf2, 0xc1, 0x2f, 0x81, 0xa9,
-	0xc5, 0x8b, 0x70, 0x48, 0x07, 0x1a, 0xde, 0x20, 0x3c, 0x1f, 0x57, 0xc2, 0xe4, 0xd6, 0x48, 0x72,
-	0x29, 0x95, 0x9f, 0x1b, 0xa3, 0x0c, 0xe2, 0xd4, 0xf8, 0x17, 0x93, 0xa6, 0xe5, 0xba, 0x14, 0xb5,
-	0x78, 0x41, 0x3e, 0x22, 0xbc, 0x90, 0xd0, 0x5c, 0x64, 0x74, 0xb6, 0xd3, 0xdb, 0x72, 0x2c, 0x4d,
-	0x07, 0x42, 0x53, 0x5d, 0x1e, 0xff, 0x86, 0xfe, 0x8f, 0x6b, 0x36, 0xf2, 0x05, 0xe1, 0x85, 0x84,
-	0x36, 0xbd, 0x81, 0xd0, 0xf4, 0x06, 0x1f, 0x4b, 0xe8, 0xb1, 0x10, 0x6a, 0x95, 0xaa, 0x43, 0xa1,
-	0x71, 0xaf, 0x90, 0xef, 0xbc, 0xd0, 0x78, 0xf1, 0xaf, 0x10, 0x5e, 0x48, 0x68, 0xf0, 0x1b, 0x88,
-	0x4f, 0x1f, 0x0d, 0xb9, 0x4c, 0x64, 0xc8, 0x68, 0xfe, 0x83, 0x65, 0x50, 0x9d, 0xc5, 0xf1, 0xab,
-	0x73, 0xf3, 0x25, 0xc2, 0x2b, 0x87, 0xb4, 0x33, 0x8a, 0xe1, 0x66, 0x26, 0x42, 0xae, 0xee, 0x73,
-	0xa9, 0xa3, 0x07, 0x95, 0x10, 0x6a, 0xd3, 0xb6, 0xe9, 0xda, 0x0a, 0xed, 0xda, 0xaa, 0x0d, 0xae,
-	0x60, 0xaa, 0x06, 0x5b, 0xa6, 0xe7, 0xb0, 0xc4, 0xe7, 0xd9, 0xc6, 0xd0, 0xf4, 0x19, 0xa1, 0x67,
-	0x92, 0x54, 0xde, 0x7e, 0x2e, 0x2d, 0xef, 0x04, 0x3e, 0xb7, 0x04, 0x9d, 0xf2, 0x90, 0xce, 0x41,
-	0x00, 0x6a, 0x4d, 0x0a, 0xff, 0xff, 0x7e, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x87, 0xb0, 0xb6,
-	0x77, 0x0a, 0x00, 0x00,
+	// 863 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x6f, 0xe3, 0x44,
+	0x14, 0x66, 0x5c, 0x58, 0xed, 0xce, 0xf2, 0xa3, 0x3b, 0x54, 0x69, 0x94, 0xd2, 0x34, 0x78, 0x11,
+	0xaa, 0x72, 0xb0, 0xd5, 0xc0, 0x65, 0x59, 0x7e, 0x48, 0xdb, 0x38, 0xab, 0x48, 0x9b, 0x34, 0x72,
+	0xd2, 0x15, 0x94, 0x83, 0xe5, 0xd4, 0xaf, 0x96, 0x69, 0xe2, 0x31, 0x9e, 0xc9, 0x2e, 0x29, 0xea,
+	0xa5, 0xdc, 0xb8, 0x70, 0x40, 0xdc, 0x38, 0x71, 0xe0, 0x80, 0x04, 0xa7, 0xfe, 0x03, 0x1c, 0xf8,
+	0x0b, 0x10, 0x37, 0x8e, 0x5c, 0x39, 0x22, 0x71, 0x03, 0x79, 0xec, 0x34, 0xa5, 0x1e, 0xdb, 0x21,
+	0xdb, 0x9b, 0xe7, 0xcd, 0x7c, 0xef, 0xbd, 0xef, 0x9b, 0xf7, 0x9e, 0x07, 0xdf, 0x73, 0x29, 0x75,
+	0x47, 0xa0, 0x1f, 0x8e, 0xe8, 0xc4, 0xd1, 0x1d, 0xcf, 0x1e, 0x51, 0xf7, 0x68, 0x44, 0x9f, 0xea,
+	0x4f, 0x1a, 0x43, 0xe0, 0xf6, 0x8e, 0xce, 0x80, 0x31, 0x8f, 0xfa, 0x16, 0xf8, 0xdc, 0xe3, 0x53,
+	0x8b, 0x4f, 0x03, 0xd0, 0x82, 0x90, 0x72, 0x4a, 0xb6, 0x62, 0xa8, 0x26, 0xa0, 0xda, 0x1c, 0xaa,
+	0x25, 0xd0, 0xca, 0x6b, 0x89, 0x6f, 0x3b, 0xf0, 0x74, 0xdb, 0xf7, 0x29, 0xb7, 0xb9, 0x47, 0x7d,
+	0x16, 0xc3, 0x2b, 0x3b, 0x45, 0x91, 0x53, 0x11, 0x2b, 0x1b, 0x09, 0x44, 0xac, 0x86, 0x93, 0x23,
+	0x1d, 0xc6, 0x01, 0x9f, 0x26, 0x9b, 0xb5, 0xab, 0x9b, 0x47, 0x1e, 0x8c, 0x1c, 0x6b, 0x6c, 0xb3,
+	0xe3, 0xf8, 0x84, 0xfa, 0x97, 0x82, 0xef, 0xf4, 0x63, 0x3a, 0x86, 0xf0, 0x3d, 0x98, 0x06, 0x40,
+	0x08, 0x7e, 0xde, 0xb7, 0xc7, 0x50, 0x46, 0x35, 0xb4, 0x7d, 0xcb, 0x14, 0xdf, 0xe4, 0x29, 0x5e,
+	0x4b, 0xa2, 0xd3, 0x27, 0x10, 0x86, 0x9e, 0x03, 0xd6, 0x98, 0x3a, 0x50, 0x56, 0x6a, 0x68, 0xfb,
+	0xe5, 0x86, 0xa1, 0x15, 0x30, 0xd7, 0x52, 0x51, 0xb4, 0xf8, 0x73, 0x2f, 0xf1, 0xd6, 0xa1, 0x0e,
+	0x98, 0x04, 0x52, 0x36, 0xd2, 0xc5, 0x37, 0x85, 0xd5, 0x03, 0x56, 0x5e, 0xa9, 0xad, 0x6c, 0xdf,
+	0x6e, 0x34, 0x0a, 0x83, 0xa5, 0xa2, 0x98, 0x17, 0x3e, 0xd4, 0x33, 0x84, 0x49, 0x3a, 0x34, 0x79,
+	0x03, 0xd7, 0x8c, 0xee, 0xa0, 0x3d, 0xf8, 0xc8, 0xda, 0x7b, 0x6c, 0x98, 0x66, 0xbb, 0x69, 0x58,
+	0x9d, 0xbd, 0xa6, 0x61, 0xed, 0x77, 0xfb, 0x3d, 0x63, 0xb7, 0xdd, 0x6a, 0x1b, 0xcd, 0xd5, 0xe7,
+	0xc8, 0xeb, 0x78, 0x53, 0x7a, 0x6a, 0xb6, 0x5a, 0x45, 0xe4, 0x2e, 0xde, 0x92, 0x1e, 0xe9, 0xef,
+	0xf7, 0x7a, 0x8f, 0x8c, 0x8e, 0xd1, 0x1d, 0xac, 0x2a, 0x2a, 0xc3, 0x9b, 0x8f, 0x3c, 0xc6, 0x53,
+	0xa2, 0x30, 0x13, 0x3e, 0x9d, 0x00, 0xe3, 0xa4, 0x84, 0x6f, 0x04, 0x76, 0x08, 0x3e, 0x4f, 0x2e,
+	0x21, 0x59, 0x91, 0x0d, 0x7c, 0x2b, 0xb0, 0x5d, 0xb0, 0x98, 0x77, 0x12, 0x6b, 0xff, 0x82, 0x79,
+	0x33, 0x32, 0xf4, 0xbd, 0x13, 0x20, 0x9b, 0x18, 0x8b, 0x4d, 0x4e, 0x8f, 0xc1, 0x2f, 0xaf, 0x08,
+	0xa0, 0x38, 0x3e, 0x88, 0x0c, 0xea, 0x4f, 0x08, 0x57, 0xb3, 0xa2, 0xb2, 0x80, 0xfa, 0x0c, 0x88,
+	0x83, 0xd7, 0x24, 0xd5, 0xcd, 0xca, 0x68, 0x41, 0xe1, 0x53, 0xae, 0x4d, 0xc2, 0x52, 0xd1, 0xc8,
+	0x9b, 0xf8, 0x15, 0x1f, 0x3e, 0xe3, 0xd6, 0xa5, 0x64, 0x15, 0x91, 0xec, 0x4b, 0x91, 0xb9, 0x77,
+	0x91, 0xf0, 0x0e, 0xde, 0x78, 0x08, 0xe9, 0x74, 0x67, 0x1a, 0x49, 0xca, 0x54, 0xfd, 0x16, 0xe1,
+	0xea, 0x6e, 0x08, 0x36, 0x87, 0x4c, 0x58, 0x96, 0xb4, 0x43, 0xfc, 0xaa, 0x84, 0xbb, 0xc8, 0x6c,
+	0x39, 0xea, 0x77, 0x52, 0xd4, 0xd5, 0x9f, 0x11, 0xae, 0xee, 0x07, 0x4e, 0x5e, 0x7a, 0x19, 0x69,
+	0xa0, 0x6b, 0x4c, 0x83, 0xdc, 0xc7, 0xb7, 0x27, 0x22, 0x0b, 0x31, 0x0b, 0x12, 0x8a, 0x95, 0x99,
+	0xef, 0xd9, 0xb8, 0xd0, 0x5a, 0xd1, 0xb8, 0xe8, 0xd8, 0xec, 0xd8, 0xc4, 0xf1, 0xf1, 0xe8, 0x5b,
+	0x7d, 0x1b, 0x57, 0x9b, 0x30, 0x82, 0x1c, 0x0a, 0x92, 0x8b, 0x69, 0x7c, 0xf5, 0x22, 0x26, 0xe9,
+	0xc2, 0x23, 0xdf, 0x2b, 0xb8, 0x24, 0xaf, 0x49, 0xf2, 0x7e, 0x21, 0xd7, 0xdc, 0x16, 0xaa, 0x7c,
+	0xb0, 0x34, 0x3e, 0x6e, 0x06, 0xf5, 0x4b, 0x74, 0xf6, 0xeb, 0x1f, 0x5f, 0x2b, 0x5f, 0x20, 0x72,
+	0xef, 0x62, 0x02, 0x7f, 0x1e, 0x17, 0xcb, 0x7b, 0x41, 0x48, 0x3f, 0x81, 0x43, 0xce, 0xf4, 0xba,
+	0x6e, 0xbb, 0xe0, 0xf3, 0xd9, 0x4f, 0x81, 0xe9, 0xf5, 0xd3, 0x64, 0x4c, 0x0b, 0x67, 0x07, 0x2d,
+	0xd2, 0x2c, 0x06, 0x87, 0x13, 0x9f, 0x7b, 0x63, 0x88, 0x0c, 0x19, 0x7e, 0xc8, 0x37, 0x0a, 0x5e,
+	0x93, 0x35, 0x03, 0x79, 0xb7, 0x90, 0x66, 0x4e, 0x0f, 0x55, 0x96, 0x28, 0x28, 0xb9, 0x2e, 0xd1,
+	0x25, 0xe7, 0xa9, 0x72, 0x99, 0x8c, 0x5e, 0x3f, 0xfd, 0xaf, 0x2e, 0x72, 0xb0, 0x54, 0x95, 0x2b,
+	0x7e, 0xc8, 0x2f, 0x0a, 0x5e, 0xcf, 0x68, 0x78, 0x52, 0x5c, 0x01, 0xf9, 0xa3, 0x62, 0x29, 0x75,
+	0xce, 0x63, 0x75, 0x7e, 0x44, 0xea, 0xf2, 0x55, 0xf3, 0x8e, 0x6c, 0x04, 0x1c, 0x7c, 0xac, 0x5e,
+	0x4b, 0x29, 0x49, 0x9d, 0x93, 0x3f, 0x15, 0xbc, 0x9e, 0x31, 0x99, 0x16, 0xd0, 0x31, 0x7f, 0xa6,
+	0x2d, 0xa5, 0xe3, 0xef, 0xb1, 0x8e, 0xbf, 0xa1, 0x46, 0x67, 0xce, 0x5a, 0xf6, 0xf4, 0xfa, 0x9f,
+	0x95, 0x27, 0xd7, 0x96, 0x36, 0x3e, 0x5c, 0x26, 0xca, 0x22, 0x25, 0x2a, 0xd7, 0xfb, 0x1f, 0x84,
+	0xd7, 0x33, 0xc6, 0xe8, 0x02, 0x7a, 0xe7, 0x0f, 0xe0, 0x4a, 0x29, 0x35, 0xca, 0x8d, 0xe8, 0x59,
+	0x38, 0xef, 0xdc, 0xfa, 0xb3, 0x74, 0x6e, 0xfd, 0x5a, 0x3a, 0xf7, 0xc1, 0x39, 0xc2, 0x77, 0x0f,
+	0xe9, 0xb8, 0x88, 0xeb, 0x83, 0x52, 0x8a, 0x66, 0x2f, 0x62, 0xd5, 0x43, 0x07, 0xed, 0x04, 0xea,
+	0xd2, 0x91, 0xed, 0xbb, 0x1a, 0x0d, 0x5d, 0xdd, 0x05, 0x5f, 0x70, 0xd6, 0xe3, 0x2d, 0x3b, 0xf0,
+	0x58, 0xe6, 0x73, 0xfa, 0xfe, 0xdc, 0xf4, 0x37, 0x42, 0xdf, 0x29, 0x4a, 0xb3, 0xf5, 0x83, 0xb2,
+	0xf5, 0x30, 0xf6, 0xb9, 0x2b, 0xd2, 0x69, 0xce, 0xd3, 0x79, 0x1c, 0x83, 0x86, 0x37, 0x84, 0xff,
+	0xb7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x65, 0x3a, 0xa2, 0x54, 0x27, 0x0c, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go b/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go
new file mode 100644
index 00000000..aefcc3d4
--- /dev/null
+++ b/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go
@@ -0,0 +1,672 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/texttospeech/v1beta1/cloud_tts.proto
+
+/*
+Package texttospeech is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/texttospeech/v1beta1/cloud_tts.proto
+
+It has these top-level messages:
+	ListVoicesRequest
+	ListVoicesResponse
+	Voice
+	SynthesizeSpeechRequest
+	SynthesisInput
+	VoiceSelectionParams
+	AudioConfig
+	SynthesizeSpeechResponse
+*/
+package texttospeech
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// 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
+
+// Gender of the voice as described in
+// [SSML voice element](https://www.w3.org/TR/speech-synthesis11/#edef_voice).
+type SsmlVoiceGender int32
+
+const (
+	// An unspecified gender.
+	// In VoiceSelectionParams, this means that the client doesn't care which
+	// gender the selected voice will have. In the Voice field of
+	// ListVoicesResponse, this may mean that the voice doesn't fit any of the
+	// other categories in this enum, or that the gender of the voice isn't known.
+	SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED SsmlVoiceGender = 0
+	// A male voice.
+	SsmlVoiceGender_MALE SsmlVoiceGender = 1
+	// A female voice.
+	SsmlVoiceGender_FEMALE SsmlVoiceGender = 2
+	// A gender-neutral voice.
+	SsmlVoiceGender_NEUTRAL SsmlVoiceGender = 3
+)
+
+var SsmlVoiceGender_name = map[int32]string{
+	0: "SSML_VOICE_GENDER_UNSPECIFIED",
+	1: "MALE",
+	2: "FEMALE",
+	3: "NEUTRAL",
+}
+var SsmlVoiceGender_value = map[string]int32{
+	"SSML_VOICE_GENDER_UNSPECIFIED": 0,
+	"MALE":    1,
+	"FEMALE":  2,
+	"NEUTRAL": 3,
+}
+
+func (x SsmlVoiceGender) String() string {
+	return proto.EnumName(SsmlVoiceGender_name, int32(x))
+}
+func (SsmlVoiceGender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// Configuration to set up audio encoder. The encoding determines the output
+// audio format that we'd like.
+type AudioEncoding int32
+
+const (
+	// Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][].
+	AudioEncoding_AUDIO_ENCODING_UNSPECIFIED AudioEncoding = 0
+	// Uncompressed 16-bit signed little-endian samples (Linear PCM).
+	// Audio content returned as LINEAR16 also contains a WAV header.
+	AudioEncoding_LINEAR16 AudioEncoding = 1
+	// MP3 audio.
+	AudioEncoding_MP3 AudioEncoding = 2
+	// Opus encoded audio wrapped in an ogg container. The result will be a
+	// file which can be played natively on Android, and in browsers (at least
+	// Chrome and Firefox). The quality of the encoding is considerably higher
+	// than MP3 while using approximately the same bitrate.
+	AudioEncoding_OGG_OPUS AudioEncoding = 3
+)
+
+var AudioEncoding_name = map[int32]string{
+	0: "AUDIO_ENCODING_UNSPECIFIED",
+	1: "LINEAR16",
+	2: "MP3",
+	3: "OGG_OPUS",
+}
+var AudioEncoding_value = map[string]int32{
+	"AUDIO_ENCODING_UNSPECIFIED": 0,
+	"LINEAR16":                   1,
+	"MP3":                        2,
+	"OGG_OPUS":                   3,
+}
+
+func (x AudioEncoding) String() string {
+	return proto.EnumName(AudioEncoding_name, int32(x))
+}
+func (AudioEncoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+// The top-level message sent by the client for the `ListVoices` method.
+type ListVoicesRequest struct {
+}
+
+func (m *ListVoicesRequest) Reset()                    { *m = ListVoicesRequest{} }
+func (m *ListVoicesRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListVoicesRequest) ProtoMessage()               {}
+func (*ListVoicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// The message returned to the client by the `ListVoices` method.
+type ListVoicesResponse struct {
+	// The list of voices.
+	Voices []*Voice `protobuf:"bytes,1,rep,name=voices" json:"voices,omitempty"`
+}
+
+func (m *ListVoicesResponse) Reset()                    { *m = ListVoicesResponse{} }
+func (m *ListVoicesResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListVoicesResponse) ProtoMessage()               {}
+func (*ListVoicesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *ListVoicesResponse) GetVoices() []*Voice {
+	if m != nil {
+		return m.Voices
+	}
+	return nil
+}
+
+// Description of a voice supported by the TTS service.
+type Voice struct {
+	// The languages that this voice supports, expressed as
+	// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tags (e.g.
+	// "en-US", "es-419", "cmn-tw").
+	LanguageCodes []string `protobuf:"bytes,1,rep,name=language_codes,json=languageCodes" json:"language_codes,omitempty"`
+	// The name of this voice.  Each distinct voice has a unique name.
+	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	// The gender of this voice.
+	SsmlGender SsmlVoiceGender `protobuf:"varint,3,opt,name=ssml_gender,json=ssmlGender,enum=google.cloud.texttospeech.v1beta1.SsmlVoiceGender" json:"ssml_gender,omitempty"`
+	// The natural sample rate (in hertz) for this voice.
+	NaturalSampleRateHertz int32 `protobuf:"varint,4,opt,name=natural_sample_rate_hertz,json=naturalSampleRateHertz" json:"natural_sample_rate_hertz,omitempty"`
+}
+
+func (m *Voice) Reset()                    { *m = Voice{} }
+func (m *Voice) String() string            { return proto.CompactTextString(m) }
+func (*Voice) ProtoMessage()               {}
+func (*Voice) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *Voice) GetLanguageCodes() []string {
+	if m != nil {
+		return m.LanguageCodes
+	}
+	return nil
+}
+
+func (m *Voice) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Voice) GetSsmlGender() SsmlVoiceGender {
+	if m != nil {
+		return m.SsmlGender
+	}
+	return SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED
+}
+
+func (m *Voice) GetNaturalSampleRateHertz() int32 {
+	if m != nil {
+		return m.NaturalSampleRateHertz
+	}
+	return 0
+}
+
+// The top-level message sent by the client for the `SynthesizeSpeech` method.
+type SynthesizeSpeechRequest struct {
+	// Required. The Synthesizer requires either plain text or SSML as input.
+	Input *SynthesisInput `protobuf:"bytes,1,opt,name=input" json:"input,omitempty"`
+	// Required. The desired voice of the synthesized audio.
+	Voice *VoiceSelectionParams `protobuf:"bytes,2,opt,name=voice" json:"voice,omitempty"`
+	// Required. The configuration of the synthesized audio.
+	AudioConfig *AudioConfig `protobuf:"bytes,3,opt,name=audio_config,json=audioConfig" json:"audio_config,omitempty"`
+}
+
+func (m *SynthesizeSpeechRequest) Reset()                    { *m = SynthesizeSpeechRequest{} }
+func (m *SynthesizeSpeechRequest) String() string            { return proto.CompactTextString(m) }
+func (*SynthesizeSpeechRequest) ProtoMessage()               {}
+func (*SynthesizeSpeechRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *SynthesizeSpeechRequest) GetInput() *SynthesisInput {
+	if m != nil {
+		return m.Input
+	}
+	return nil
+}
+
+func (m *SynthesizeSpeechRequest) GetVoice() *VoiceSelectionParams {
+	if m != nil {
+		return m.Voice
+	}
+	return nil
+}
+
+func (m *SynthesizeSpeechRequest) GetAudioConfig() *AudioConfig {
+	if m != nil {
+		return m.AudioConfig
+	}
+	return nil
+}
+
+// Contains text input to be synthesized. Either `text` or `ssml` must be
+// supplied. Supplying both or neither returns
+// [google.rpc.Code.INVALID_ARGUMENT][]. The input size is limited to 5000
+// characters.
+type SynthesisInput struct {
+	// The input source, which is either plain text or SSML.
+	//
+	// Types that are valid to be assigned to InputSource:
+	//	*SynthesisInput_Text
+	//	*SynthesisInput_Ssml
+	InputSource isSynthesisInput_InputSource `protobuf_oneof:"input_source"`
+}
+
+func (m *SynthesisInput) Reset()                    { *m = SynthesisInput{} }
+func (m *SynthesisInput) String() string            { return proto.CompactTextString(m) }
+func (*SynthesisInput) ProtoMessage()               {}
+func (*SynthesisInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+type isSynthesisInput_InputSource interface {
+	isSynthesisInput_InputSource()
+}
+
+type SynthesisInput_Text struct {
+	Text string `protobuf:"bytes,1,opt,name=text,oneof"`
+}
+type SynthesisInput_Ssml struct {
+	Ssml string `protobuf:"bytes,2,opt,name=ssml,oneof"`
+}
+
+func (*SynthesisInput_Text) isSynthesisInput_InputSource() {}
+func (*SynthesisInput_Ssml) isSynthesisInput_InputSource() {}
+
+func (m *SynthesisInput) GetInputSource() isSynthesisInput_InputSource {
+	if m != nil {
+		return m.InputSource
+	}
+	return nil
+}
+
+func (m *SynthesisInput) GetText() string {
+	if x, ok := m.GetInputSource().(*SynthesisInput_Text); ok {
+		return x.Text
+	}
+	return ""
+}
+
+func (m *SynthesisInput) GetSsml() string {
+	if x, ok := m.GetInputSource().(*SynthesisInput_Ssml); ok {
+		return x.Ssml
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*SynthesisInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _SynthesisInput_OneofMarshaler, _SynthesisInput_OneofUnmarshaler, _SynthesisInput_OneofSizer, []interface{}{
+		(*SynthesisInput_Text)(nil),
+		(*SynthesisInput_Ssml)(nil),
+	}
+}
+
+func _SynthesisInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*SynthesisInput)
+	// input_source
+	switch x := m.InputSource.(type) {
+	case *SynthesisInput_Text:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Text)
+	case *SynthesisInput_Ssml:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Ssml)
+	case nil:
+	default:
+		return fmt.Errorf("SynthesisInput.InputSource has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _SynthesisInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*SynthesisInput)
+	switch tag {
+	case 1: // input_source.text
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.InputSource = &SynthesisInput_Text{x}
+		return true, err
+	case 2: // input_source.ssml
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.InputSource = &SynthesisInput_Ssml{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _SynthesisInput_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*SynthesisInput)
+	// input_source
+	switch x := m.InputSource.(type) {
+	case *SynthesisInput_Text:
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Text)))
+		n += len(x.Text)
+	case *SynthesisInput_Ssml:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Ssml)))
+		n += len(x.Ssml)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Description of which voice to use for a synthesis request.
+type VoiceSelectionParams struct {
+	// The language (and optionally also the region) of the voice expressed as a
+	// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag, e.g.
+	// "en-US". Required. This should not include a script tag (e.g. use
+	// "cmn-cn" rather than "cmn-Hant-cn"), because the script will be inferred
+	// from the input provided in the SynthesisInput.  The TTS service
+	// will use this parameter to help choose an appropriate voice.  Note that
+	// the TTS service may choose a voice with a slightly different language code
+	// than the one selected; it may substitute a different region
+	// (e.g. using en-US rather than en-CA if there isn't a Canadian voice
+	// available), or even a different language, e.g. using "nb" (Norwegian
+	// Bokmal) instead of "no" (Norwegian)".
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+	// The name of the voice. Optional; if not set, the service will choose a
+	// voice based on the other parameters such as language_code and gender.
+	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	// The preferred gender of the voice. Optional; if not set, the service will
+	// choose a voice based on the other parameters such as language_code and
+	// name. Note that this is only a preference, not requirement; if a
+	// voice of the appropriate gender is not available, the synthesizer should
+	// substitute a voice with a different gender rather than failing the request.
+	SsmlGender SsmlVoiceGender `protobuf:"varint,3,opt,name=ssml_gender,json=ssmlGender,enum=google.cloud.texttospeech.v1beta1.SsmlVoiceGender" json:"ssml_gender,omitempty"`
+}
+
+func (m *VoiceSelectionParams) Reset()                    { *m = VoiceSelectionParams{} }
+func (m *VoiceSelectionParams) String() string            { return proto.CompactTextString(m) }
+func (*VoiceSelectionParams) ProtoMessage()               {}
+func (*VoiceSelectionParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *VoiceSelectionParams) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *VoiceSelectionParams) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *VoiceSelectionParams) GetSsmlGender() SsmlVoiceGender {
+	if m != nil {
+		return m.SsmlGender
+	}
+	return SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED
+}
+
+// Description of audio data to be synthesized.
+type AudioConfig struct {
+	// Required. The format of the requested audio byte stream.
+	AudioEncoding AudioEncoding `protobuf:"varint,1,opt,name=audio_encoding,json=audioEncoding,enum=google.cloud.texttospeech.v1beta1.AudioEncoding" json:"audio_encoding,omitempty"`
+	// Optional speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal
+	// native speed supported by the specific voice. 2.0 is twice as fast, and
+	// 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any
+	// other values < 0.25 or > 4.0 will return an error.
+	SpeakingRate float64 `protobuf:"fixed64,2,opt,name=speaking_rate,json=speakingRate" json:"speaking_rate,omitempty"`
+	// Optional speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20
+	// semitones from the original pitch. -20 means decrease 20 semitones from the
+	// original pitch.
+	Pitch float64 `protobuf:"fixed64,3,opt,name=pitch" json:"pitch,omitempty"`
+	// Optional volume gain (in dB) of the normal native volume supported by the
+	// specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of
+	// 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)
+	// will play at approximately half the amplitude of the normal native signal
+	// amplitude. A value of +6.0 (dB) will play at approximately twice the
+	// amplitude of the normal native signal amplitude. Strongly recommend not to
+	// exceed +10 (dB) as there's usually no effective increase in loudness for
+	// any value greater than that.
+	VolumeGainDb float64 `protobuf:"fixed64,4,opt,name=volume_gain_db,json=volumeGainDb" json:"volume_gain_db,omitempty"`
+	// The synthesis sample rate (in hertz) for this audio. Optional.  If this is
+	// different from the voice's natural sample rate, then the synthesizer will
+	// honor this request by converting to the desired sample rate (which might
+	// result in worse audio quality), unless the specified sample rate is not
+	// supported for the encoding chosen, in which case it will fail the request
+	// and return [google.rpc.Code.INVALID_ARGUMENT][].
+	SampleRateHertz int32 `protobuf:"varint,5,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"`
+}
+
+func (m *AudioConfig) Reset()                    { *m = AudioConfig{} }
+func (m *AudioConfig) String() string            { return proto.CompactTextString(m) }
+func (*AudioConfig) ProtoMessage()               {}
+func (*AudioConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *AudioConfig) GetAudioEncoding() AudioEncoding {
+	if m != nil {
+		return m.AudioEncoding
+	}
+	return AudioEncoding_AUDIO_ENCODING_UNSPECIFIED
+}
+
+func (m *AudioConfig) GetSpeakingRate() float64 {
+	if m != nil {
+		return m.SpeakingRate
+	}
+	return 0
+}
+
+func (m *AudioConfig) GetPitch() float64 {
+	if m != nil {
+		return m.Pitch
+	}
+	return 0
+}
+
+func (m *AudioConfig) GetVolumeGainDb() float64 {
+	if m != nil {
+		return m.VolumeGainDb
+	}
+	return 0
+}
+
+func (m *AudioConfig) GetSampleRateHertz() int32 {
+	if m != nil {
+		return m.SampleRateHertz
+	}
+	return 0
+}
+
+// The message returned to the client by the `SynthesizeSpeech` method.
+type SynthesizeSpeechResponse struct {
+	// The audio data bytes encoded as specified in the request, including the
+	// header (For LINEAR16 audio, we include the WAV header). Note: as
+	// with all bytes fields, protobuffers use a pure binary representation,
+	// whereas JSON representations use base64.
+	AudioContent []byte `protobuf:"bytes,1,opt,name=audio_content,json=audioContent,proto3" json:"audio_content,omitempty"`
+}
+
+func (m *SynthesizeSpeechResponse) Reset()                    { *m = SynthesizeSpeechResponse{} }
+func (m *SynthesizeSpeechResponse) String() string            { return proto.CompactTextString(m) }
+func (*SynthesizeSpeechResponse) ProtoMessage()               {}
+func (*SynthesizeSpeechResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *SynthesizeSpeechResponse) GetAudioContent() []byte {
+	if m != nil {
+		return m.AudioContent
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*ListVoicesRequest)(nil), "google.cloud.texttospeech.v1beta1.ListVoicesRequest")
+	proto.RegisterType((*ListVoicesResponse)(nil), "google.cloud.texttospeech.v1beta1.ListVoicesResponse")
+	proto.RegisterType((*Voice)(nil), "google.cloud.texttospeech.v1beta1.Voice")
+	proto.RegisterType((*SynthesizeSpeechRequest)(nil), "google.cloud.texttospeech.v1beta1.SynthesizeSpeechRequest")
+	proto.RegisterType((*SynthesisInput)(nil), "google.cloud.texttospeech.v1beta1.SynthesisInput")
+	proto.RegisterType((*VoiceSelectionParams)(nil), "google.cloud.texttospeech.v1beta1.VoiceSelectionParams")
+	proto.RegisterType((*AudioConfig)(nil), "google.cloud.texttospeech.v1beta1.AudioConfig")
+	proto.RegisterType((*SynthesizeSpeechResponse)(nil), "google.cloud.texttospeech.v1beta1.SynthesizeSpeechResponse")
+	proto.RegisterEnum("google.cloud.texttospeech.v1beta1.SsmlVoiceGender", SsmlVoiceGender_name, SsmlVoiceGender_value)
+	proto.RegisterEnum("google.cloud.texttospeech.v1beta1.AudioEncoding", AudioEncoding_name, AudioEncoding_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for TextToSpeech service
+
+type TextToSpeechClient interface {
+	// Returns a list of [Voice][google.cloud.texttospeech.v1beta1.Voice]
+	// supported for synthesis.
+	ListVoices(ctx context.Context, in *ListVoicesRequest, opts ...grpc.CallOption) (*ListVoicesResponse, error)
+	// Synthesizes speech synchronously: receive results after all text input
+	// has been processed.
+	SynthesizeSpeech(ctx context.Context, in *SynthesizeSpeechRequest, opts ...grpc.CallOption) (*SynthesizeSpeechResponse, error)
+}
+
+type textToSpeechClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewTextToSpeechClient(cc *grpc.ClientConn) TextToSpeechClient {
+	return &textToSpeechClient{cc}
+}
+
+func (c *textToSpeechClient) ListVoices(ctx context.Context, in *ListVoicesRequest, opts ...grpc.CallOption) (*ListVoicesResponse, error) {
+	out := new(ListVoicesResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.texttospeech.v1beta1.TextToSpeech/ListVoices", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *textToSpeechClient) SynthesizeSpeech(ctx context.Context, in *SynthesizeSpeechRequest, opts ...grpc.CallOption) (*SynthesizeSpeechResponse, error) {
+	out := new(SynthesizeSpeechResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.texttospeech.v1beta1.TextToSpeech/SynthesizeSpeech", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for TextToSpeech service
+
+type TextToSpeechServer interface {
+	// Returns a list of [Voice][google.cloud.texttospeech.v1beta1.Voice]
+	// supported for synthesis.
+	ListVoices(context.Context, *ListVoicesRequest) (*ListVoicesResponse, error)
+	// Synthesizes speech synchronously: receive results after all text input
+	// has been processed.
+	SynthesizeSpeech(context.Context, *SynthesizeSpeechRequest) (*SynthesizeSpeechResponse, error)
+}
+
+func RegisterTextToSpeechServer(s *grpc.Server, srv TextToSpeechServer) {
+	s.RegisterService(&_TextToSpeech_serviceDesc, srv)
+}
+
+func _TextToSpeech_ListVoices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListVoicesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TextToSpeechServer).ListVoices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.texttospeech.v1beta1.TextToSpeech/ListVoices",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TextToSpeechServer).ListVoices(ctx, req.(*ListVoicesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _TextToSpeech_SynthesizeSpeech_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SynthesizeSpeechRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TextToSpeechServer).SynthesizeSpeech(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.texttospeech.v1beta1.TextToSpeech/SynthesizeSpeech",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TextToSpeechServer).SynthesizeSpeech(ctx, req.(*SynthesizeSpeechRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _TextToSpeech_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.texttospeech.v1beta1.TextToSpeech",
+	HandlerType: (*TextToSpeechServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ListVoices",
+			Handler:    _TextToSpeech_ListVoices_Handler,
+		},
+		{
+			MethodName: "SynthesizeSpeech",
+			Handler:    _TextToSpeech_SynthesizeSpeech_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/texttospeech/v1beta1/cloud_tts.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/texttospeech/v1beta1/cloud_tts.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 844 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4d, 0x6f, 0x1b, 0x45,
+	0x18, 0xee, 0xd8, 0x71, 0xda, 0xbc, 0x5e, 0x3b, 0xce, 0x10, 0x51, 0x13, 0x51, 0xe4, 0x6e, 0xa8,
+	0x64, 0xe5, 0x60, 0x63, 0x97, 0x0f, 0x91, 0x1e, 0xc0, 0xb1, 0xb7, 0xae, 0x25, 0x7f, 0x31, 0x9b,
+	0xa4, 0x12, 0x97, 0xd5, 0x64, 0x3d, 0x6c, 0x56, 0xac, 0x67, 0x16, 0xcf, 0x6c, 0x54, 0x7a, 0x44,
+	0x9c, 0x39, 0xc0, 0x5f, 0xe0, 0x07, 0xf0, 0x5b, 0x40, 0xe2, 0x17, 0xf0, 0x0f, 0xb8, 0x70, 0x44,
+	0x33, 0xbb, 0x71, 0x1d, 0x07, 0x51, 0x97, 0x03, 0xb7, 0x9d, 0x67, 0xfc, 0x3c, 0xf3, 0xbe, 0xcf,
+	0x3c, 0x7e, 0x07, 0x5a, 0x81, 0x10, 0x41, 0xc4, 0x9a, 0x7e, 0x24, 0x92, 0x59, 0x53, 0xb1, 0x17,
+	0x4a, 0x09, 0x19, 0x33, 0xe6, 0x5f, 0x36, 0xaf, 0x5a, 0x17, 0x4c, 0xd1, 0x56, 0xba, 0xe5, 0x29,
+	0x25, 0x1b, 0xf1, 0x42, 0x28, 0x81, 0x1f, 0xa6, 0x94, 0x86, 0xc1, 0x1b, 0xab, 0x94, 0x46, 0x46,
+	0x39, 0x78, 0x37, 0x53, 0xa5, 0x71, 0xd8, 0xa4, 0x9c, 0x0b, 0x45, 0x55, 0x28, 0x78, 0x26, 0x60,
+	0xbf, 0x05, 0x7b, 0xc3, 0x50, 0xaa, 0x73, 0x11, 0xfa, 0x4c, 0x12, 0xf6, 0x4d, 0xc2, 0xa4, 0xb2,
+	0xcf, 0x01, 0xaf, 0x82, 0x32, 0x16, 0x5c, 0x32, 0xfc, 0x39, 0x6c, 0x5f, 0x19, 0xa4, 0x8a, 0x6a,
+	0xf9, 0x7a, 0xb1, 0x5d, 0x6f, 0xbc, 0xf6, 0xf0, 0x86, 0x91, 0x20, 0x19, 0xcf, 0xfe, 0x15, 0x41,
+	0xc1, 0x20, 0xf8, 0x11, 0x94, 0x23, 0xca, 0x83, 0x84, 0x06, 0xcc, 0xf3, 0xc5, 0x2c, 0xd3, 0xdc,
+	0x21, 0xa5, 0x6b, 0xb4, 0xab, 0x41, 0x8c, 0x61, 0x8b, 0xd3, 0x39, 0xab, 0xe6, 0x6a, 0xa8, 0xbe,
+	0x43, 0xcc, 0x37, 0x76, 0xa1, 0x28, 0xe5, 0x3c, 0xf2, 0x02, 0xc6, 0x67, 0x6c, 0x51, 0xcd, 0xd7,
+	0x50, 0xbd, 0xdc, 0x6e, 0x6f, 0x50, 0x8b, 0x2b, 0xe7, 0x91, 0x39, 0xbd, 0x6f, 0x98, 0x04, 0xb4,
+	0x4c, 0xfa, 0x8d, 0x3f, 0x85, 0x77, 0x38, 0x55, 0xc9, 0x82, 0x46, 0x9e, 0xa4, 0xf3, 0x38, 0x62,
+	0xde, 0x82, 0x2a, 0xe6, 0x5d, 0xb2, 0x85, 0x7a, 0x59, 0xdd, 0xaa, 0xa1, 0x7a, 0x81, 0xbc, 0x9d,
+	0xfd, 0xc0, 0x35, 0xfb, 0x84, 0x2a, 0xf6, 0x4c, 0xef, 0xda, 0xdf, 0xe7, 0xe0, 0xbe, 0xfb, 0x2d,
+	0x57, 0x97, 0x4c, 0x86, 0x2f, 0x99, 0x6b, 0xce, 0xcc, 0x8c, 0xc4, 0x7d, 0x28, 0x84, 0x3c, 0x4e,
+	0x54, 0x15, 0xd5, 0x50, 0xbd, 0xd8, 0x6e, 0x6d, 0x52, 0x65, 0x26, 0x25, 0x07, 0x9a, 0x48, 0x52,
+	0x3e, 0x1e, 0x41, 0xc1, 0x78, 0x68, 0x9c, 0x28, 0xb6, 0x3f, 0xd9, 0xd4, 0x7a, 0x97, 0x45, 0xcc,
+	0xd7, 0xf7, 0x3d, 0xa5, 0x0b, 0x3a, 0x97, 0x24, 0x55, 0xc1, 0x5f, 0x80, 0x45, 0x93, 0x59, 0x28,
+	0x3c, 0x5f, 0xf0, 0xaf, 0xc2, 0xc0, 0x98, 0x58, 0x6c, 0x37, 0x36, 0x50, 0xed, 0x68, 0x5a, 0xd7,
+	0xb0, 0x48, 0x91, 0xbe, 0x5a, 0xd8, 0x43, 0x28, 0xdf, 0x2c, 0x1d, 0xef, 0xc3, 0x96, 0x96, 0x30,
+	0xbd, 0xef, 0x3c, 0xbb, 0x43, 0xcc, 0x4a, 0xa3, 0xda, 0xf7, 0xf4, 0x4a, 0x35, 0xaa, 0x57, 0x27,
+	0x65, 0xb0, 0x4c, 0xa3, 0x9e, 0x14, 0xc9, 0xc2, 0x67, 0xf6, 0xcf, 0x08, 0xf6, 0xff, 0xa9, 0x01,
+	0x7c, 0x08, 0xa5, 0x1b, 0xc1, 0x49, 0xd5, 0x89, 0xb5, 0x9a, 0x9b, 0xff, 0x2d, 0x36, 0xf6, 0x9f,
+	0x08, 0x8a, 0x2b, 0x8e, 0xe0, 0xe7, 0x50, 0x4e, 0x7d, 0x65, 0xdc, 0x17, 0xb3, 0x90, 0x07, 0xa6,
+	0xbc, 0x72, 0xfb, 0x83, 0x4d, 0x9d, 0x75, 0x32, 0x1e, 0x29, 0xd1, 0xd5, 0xa5, 0x6e, 0x5b, 0xc6,
+	0x8c, 0x7e, 0x1d, 0xf2, 0xc0, 0x24, 0xd3, 0xb4, 0x86, 0x88, 0x75, 0x0d, 0xea, 0x38, 0xe2, 0x7d,
+	0x28, 0xc4, 0xa1, 0xf2, 0x2f, 0x4d, 0x73, 0x88, 0xa4, 0x0b, 0xfc, 0x3e, 0x94, 0xaf, 0x44, 0x94,
+	0xcc, 0x99, 0x17, 0xd0, 0x90, 0x7b, 0xb3, 0x0b, 0x93, 0x67, 0x44, 0xac, 0x14, 0xed, 0xd3, 0x90,
+	0xf7, 0x2e, 0xf0, 0x11, 0xec, 0xdd, 0x0e, 0x7e, 0xc1, 0x04, 0x7f, 0x57, 0xae, 0x25, 0xfe, 0x33,
+	0xa8, 0xde, 0x0e, 0x7c, 0x36, 0x24, 0x0e, 0xa1, 0xb4, 0x4c, 0x96, 0x62, 0x3c, 0xbd, 0x7d, 0x8b,
+	0x58, 0xd7, 0x51, 0xd1, 0xd8, 0xd1, 0x73, 0xd8, 0x5d, 0x73, 0x15, 0x3f, 0x84, 0x07, 0xae, 0x3b,
+	0x1a, 0x7a, 0xe7, 0x93, 0x41, 0xd7, 0xf1, 0xfa, 0xce, 0xb8, 0xe7, 0x10, 0xef, 0x6c, 0xec, 0x4e,
+	0x9d, 0xee, 0xe0, 0xe9, 0xc0, 0xe9, 0x55, 0xee, 0xe0, 0x7b, 0xb0, 0x35, 0xea, 0x0c, 0x9d, 0x0a,
+	0xc2, 0x00, 0xdb, 0x4f, 0x1d, 0xf3, 0x9d, 0xc3, 0x45, 0xb8, 0x3b, 0x76, 0xce, 0x4e, 0x49, 0x67,
+	0x58, 0xc9, 0x1f, 0x9d, 0x42, 0xe9, 0x86, 0x8d, 0xf8, 0x3d, 0x38, 0xe8, 0x9c, 0xf5, 0x06, 0x13,
+	0xcf, 0x19, 0x77, 0x27, 0xbd, 0xc1, 0xb8, 0xbf, 0xa6, 0x69, 0xc1, 0xbd, 0xe1, 0x60, 0xec, 0x74,
+	0x48, 0xeb, 0xe3, 0x0a, 0xc2, 0x77, 0x21, 0x3f, 0x9a, 0x3e, 0xae, 0xe4, 0x34, 0x3c, 0xe9, 0xf7,
+	0xbd, 0xc9, 0xf4, 0xcc, 0xad, 0xe4, 0xdb, 0xbf, 0xe7, 0xc0, 0x3a, 0x65, 0x2f, 0xd4, 0xa9, 0x48,
+	0x9b, 0xc5, 0x3f, 0x22, 0x80, 0x57, 0x03, 0x12, 0x7f, 0xb8, 0xc1, 0xed, 0xde, 0x1a, 0xb2, 0x07,
+	0x1f, 0xbd, 0x21, 0x2b, 0x35, 0xd8, 0xbe, 0xff, 0xdd, 0x6f, 0x7f, 0xfc, 0x94, 0xdb, 0xc3, 0xbb,
+	0xcb, 0x37, 0x21, 0x1d, 0xae, 0xf8, 0x17, 0x04, 0x95, 0xf5, 0x6b, 0xc1, 0xc7, 0x6f, 0x30, 0x71,
+	0xd6, 0x86, 0xd7, 0xc1, 0x93, 0xff, 0xc4, 0xcd, 0xca, 0x3c, 0x34, 0x65, 0x3e, 0xb0, 0xab, 0xcb,
+	0x32, 0x35, 0xff, 0x58, 0x2e, 0x7f, 0x7f, 0x8c, 0x8e, 0x4e, 0x7e, 0x40, 0xf0, 0xc8, 0x17, 0xf3,
+	0xd7, 0x9f, 0x73, 0xb2, 0xb7, 0xea, 0xff, 0x54, 0xbf, 0x5c, 0x53, 0xf4, 0xe5, 0x28, 0xe3, 0x05,
+	0x42, 0xff, 0xfb, 0x1b, 0x62, 0x11, 0x34, 0x03, 0xc6, 0xcd, 0xbb, 0xd6, 0x4c, 0xb7, 0x68, 0x1c,
+	0xca, 0x7f, 0x79, 0x4e, 0x9f, 0xac, 0x82, 0x7f, 0x21, 0x74, 0xb1, 0x6d, 0xc8, 0x8f, 0xff, 0x0e,
+	0x00, 0x00, 0xff, 0xff, 0x7f, 0xac, 0x4e, 0x87, 0x8a, 0x07, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/vision/v1p2beta1/geometry.pb.go b/googleapis/cloud/vision/v1p2beta1/geometry.pb.go
new file mode 100644
index 00000000..470f3423
--- /dev/null
+++ b/googleapis/cloud/vision/v1p2beta1/geometry.pb.go
@@ -0,0 +1,183 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/vision/v1p2beta1/geometry.proto
+
+/*
+Package vision is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/vision/v1p2beta1/geometry.proto
+	google/cloud/vision/v1p2beta1/image_annotator.proto
+	google/cloud/vision/v1p2beta1/text_annotation.proto
+	google/cloud/vision/v1p2beta1/web_detection.proto
+
+It has these top-level messages:
+	Vertex
+	BoundingPoly
+	Position
+	Feature
+	ImageSource
+	Image
+	FaceAnnotation
+	LocationInfo
+	Property
+	EntityAnnotation
+	SafeSearchAnnotation
+	LatLongRect
+	ColorInfo
+	DominantColorsAnnotation
+	ImageProperties
+	CropHint
+	CropHintsAnnotation
+	CropHintsParams
+	WebDetectionParams
+	ImageContext
+	AnnotateImageRequest
+	ImageAnnotationContext
+	AnnotateImageResponse
+	BatchAnnotateImagesRequest
+	BatchAnnotateImagesResponse
+	AsyncAnnotateFileRequest
+	AsyncAnnotateFileResponse
+	AsyncBatchAnnotateFilesRequest
+	AsyncBatchAnnotateFilesResponse
+	InputConfig
+	OutputConfig
+	GcsSource
+	GcsDestination
+	OperationMetadata
+	TextAnnotation
+	Page
+	Block
+	Paragraph
+	Word
+	Symbol
+	WebDetection
+*/
+package vision
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// 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
+
+// A vertex represents a 2D point in the image.
+// NOTE: the vertex coordinates are in the same scale as the original image.
+type Vertex struct {
+	// X coordinate.
+	X int32 `protobuf:"varint,1,opt,name=x" json:"x,omitempty"`
+	// Y coordinate.
+	Y int32 `protobuf:"varint,2,opt,name=y" json:"y,omitempty"`
+}
+
+func (m *Vertex) Reset()                    { *m = Vertex{} }
+func (m *Vertex) String() string            { return proto.CompactTextString(m) }
+func (*Vertex) ProtoMessage()               {}
+func (*Vertex) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *Vertex) GetX() int32 {
+	if m != nil {
+		return m.X
+	}
+	return 0
+}
+
+func (m *Vertex) GetY() int32 {
+	if m != nil {
+		return m.Y
+	}
+	return 0
+}
+
+// A bounding polygon for the detected image annotation.
+type BoundingPoly struct {
+	// The bounding polygon vertices.
+	Vertices []*Vertex `protobuf:"bytes,1,rep,name=vertices" json:"vertices,omitempty"`
+}
+
+func (m *BoundingPoly) Reset()                    { *m = BoundingPoly{} }
+func (m *BoundingPoly) String() string            { return proto.CompactTextString(m) }
+func (*BoundingPoly) ProtoMessage()               {}
+func (*BoundingPoly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *BoundingPoly) GetVertices() []*Vertex {
+	if m != nil {
+		return m.Vertices
+	}
+	return nil
+}
+
+// A 3D position in the image, used primarily for Face detection landmarks.
+// A valid Position must have both x and y coordinates.
+// The position coordinates are in the same scale as the original image.
+type Position struct {
+	// X coordinate.
+	X float32 `protobuf:"fixed32,1,opt,name=x" json:"x,omitempty"`
+	// Y coordinate.
+	Y float32 `protobuf:"fixed32,2,opt,name=y" json:"y,omitempty"`
+	// Z coordinate (or depth).
+	Z float32 `protobuf:"fixed32,3,opt,name=z" json:"z,omitempty"`
+}
+
+func (m *Position) Reset()                    { *m = Position{} }
+func (m *Position) String() string            { return proto.CompactTextString(m) }
+func (*Position) ProtoMessage()               {}
+func (*Position) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *Position) GetX() float32 {
+	if m != nil {
+		return m.X
+	}
+	return 0
+}
+
+func (m *Position) GetY() float32 {
+	if m != nil {
+		return m.Y
+	}
+	return 0
+}
+
+func (m *Position) GetZ() float32 {
+	if m != nil {
+		return m.Z
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*Vertex)(nil), "google.cloud.vision.v1p2beta1.Vertex")
+	proto.RegisterType((*BoundingPoly)(nil), "google.cloud.vision.v1p2beta1.BoundingPoly")
+	proto.RegisterType((*Position)(nil), "google.cloud.vision.v1p2beta1.Position")
+}
+
+func init() { proto.RegisterFile("google/cloud/vision/v1p2beta1/geometry.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 243 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4b, 0xc3, 0x40,
+	0x14, 0x87, 0x79, 0x29, 0x96, 0x72, 0xd6, 0x25, 0x53, 0x16, 0xa1, 0x06, 0x85, 0x0e, 0x72, 0x47,
+	0xab, 0x9b, 0x93, 0x71, 0x70, 0x8d, 0x19, 0x1c, 0xdc, 0xd2, 0xf4, 0xf1, 0x38, 0x48, 0xef, 0x85,
+	0xcb, 0x35, 0xf4, 0x8a, 0x7f, 0xb8, 0xa3, 0xf4, 0xae, 0x54, 0x1c, 0xda, 0xf1, 0x77, 0xf7, 0x3d,
+	0x3e, 0xf8, 0xc4, 0x23, 0x31, 0x53, 0x8b, 0xaa, 0x69, 0x79, 0xbb, 0x56, 0x83, 0xee, 0x35, 0x1b,
+	0x35, 0x2c, 0xba, 0xe5, 0x0a, 0x5d, 0xbd, 0x50, 0x84, 0xbc, 0x41, 0x67, 0xbd, 0xec, 0x2c, 0x3b,
+	0x4e, 0x6f, 0x23, 0x2d, 0x03, 0x2d, 0x23, 0x2d, 0x4f, 0x74, 0x7e, 0x2f, 0xc6, 0x9f, 0x68, 0x1d,
+	0xee, 0xd2, 0xa9, 0x80, 0x5d, 0x06, 0x33, 0x98, 0x5f, 0x55, 0x10, 0x96, 0xcf, 0x92, 0xb8, 0x7c,
+	0xfe, 0x21, 0xa6, 0x05, 0x6f, 0xcd, 0x5a, 0x1b, 0x2a, 0xb9, 0xf5, 0xe9, 0xab, 0x98, 0x0c, 0x68,
+	0x9d, 0x6e, 0xb0, 0xcf, 0x60, 0x36, 0x9a, 0x5f, 0x2f, 0x1f, 0xe4, 0x45, 0x8f, 0x8c, 0x92, 0xea,
+	0x74, 0x96, 0x3f, 0x8b, 0x49, 0xc9, 0xbd, 0x76, 0x9a, 0xcd, 0x9f, 0x3a, 0xf9, 0xa7, 0x4e, 0x2a,
+	0xf0, 0x87, 0xb5, 0xcf, 0x46, 0x71, 0xed, 0x8b, 0x6f, 0x71, 0xd7, 0xf0, 0xe6, 0xb2, 0xab, 0xb8,
+	0x79, 0x3f, 0x26, 0x28, 0x0f, 0x05, 0x4a, 0xf8, 0x7a, 0x3b, 0xf2, 0xc4, 0x6d, 0x6d, 0x48, 0xb2,
+	0x25, 0x45, 0x68, 0x42, 0x1f, 0x15, 0xbf, 0xea, 0x4e, 0xf7, 0x67, 0x82, 0xbe, 0xc4, 0x87, 0x1f,
+	0x80, 0xd5, 0x38, 0x9c, 0x3c, 0xfd, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xa2, 0xee, 0x2b, 0x82,
+	0x01, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/vision/v1p2beta1/image_annotator.pb.go b/googleapis/cloud/vision/v1p2beta1/image_annotator.pb.go
new file mode 100644
index 00000000..e06fe9c7
--- /dev/null
+++ b/googleapis/cloud/vision/v1p2beta1/image_annotator.pb.go
@@ -0,0 +1,1933 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/vision/v1p2beta1/image_annotator.proto
+
+package vision
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
+import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp"
+import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
+import google_type "google.golang.org/genproto/googleapis/type/color"
+import google_type1 "google.golang.org/genproto/googleapis/type/latlng"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// A bucketized representation of likelihood, which is intended to give clients
+// highly stable results across model upgrades.
+type Likelihood int32
+
+const (
+	// Unknown likelihood.
+	Likelihood_UNKNOWN Likelihood = 0
+	// It is very unlikely that the image belongs to the specified vertical.
+	Likelihood_VERY_UNLIKELY Likelihood = 1
+	// It is unlikely that the image belongs to the specified vertical.
+	Likelihood_UNLIKELY Likelihood = 2
+	// It is possible that the image belongs to the specified vertical.
+	Likelihood_POSSIBLE Likelihood = 3
+	// It is likely that the image belongs to the specified vertical.
+	Likelihood_LIKELY Likelihood = 4
+	// It is very likely that the image belongs to the specified vertical.
+	Likelihood_VERY_LIKELY Likelihood = 5
+)
+
+var Likelihood_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "VERY_UNLIKELY",
+	2: "UNLIKELY",
+	3: "POSSIBLE",
+	4: "LIKELY",
+	5: "VERY_LIKELY",
+}
+var Likelihood_value = map[string]int32{
+	"UNKNOWN":       0,
+	"VERY_UNLIKELY": 1,
+	"UNLIKELY":      2,
+	"POSSIBLE":      3,
+	"LIKELY":        4,
+	"VERY_LIKELY":   5,
+}
+
+func (x Likelihood) String() string {
+	return proto.EnumName(Likelihood_name, int32(x))
+}
+func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+// Type of Google Cloud Vision API feature to be extracted.
+type Feature_Type int32
+
+const (
+	// Unspecified feature type.
+	Feature_TYPE_UNSPECIFIED Feature_Type = 0
+	// Run face detection.
+	Feature_FACE_DETECTION Feature_Type = 1
+	// Run landmark detection.
+	Feature_LANDMARK_DETECTION Feature_Type = 2
+	// Run logo detection.
+	Feature_LOGO_DETECTION Feature_Type = 3
+	// Run label detection.
+	Feature_LABEL_DETECTION Feature_Type = 4
+	// Run text detection / optical character recognition (OCR). Text detection
+	// is optimized for areas of text within a larger image; if the image is
+	// a document, use `DOCUMENT_TEXT_DETECTION` instead.
+	Feature_TEXT_DETECTION Feature_Type = 5
+	// Run dense text document OCR. Takes precedence when both
+	// `DOCUMENT_TEXT_DETECTION` and `TEXT_DETECTION` are present.
+	Feature_DOCUMENT_TEXT_DETECTION Feature_Type = 11
+	// Run Safe Search to detect potentially unsafe
+	// or undesirable content.
+	Feature_SAFE_SEARCH_DETECTION Feature_Type = 6
+	// Compute a set of image properties, such as the
+	// image's dominant colors.
+	Feature_IMAGE_PROPERTIES Feature_Type = 7
+	// Run crop hints.
+	Feature_CROP_HINTS Feature_Type = 9
+	// Run web detection.
+	Feature_WEB_DETECTION Feature_Type = 10
+)
+
+var Feature_Type_name = map[int32]string{
+	0:  "TYPE_UNSPECIFIED",
+	1:  "FACE_DETECTION",
+	2:  "LANDMARK_DETECTION",
+	3:  "LOGO_DETECTION",
+	4:  "LABEL_DETECTION",
+	5:  "TEXT_DETECTION",
+	11: "DOCUMENT_TEXT_DETECTION",
+	6:  "SAFE_SEARCH_DETECTION",
+	7:  "IMAGE_PROPERTIES",
+	9:  "CROP_HINTS",
+	10: "WEB_DETECTION",
+}
+var Feature_Type_value = map[string]int32{
+	"TYPE_UNSPECIFIED":        0,
+	"FACE_DETECTION":          1,
+	"LANDMARK_DETECTION":      2,
+	"LOGO_DETECTION":          3,
+	"LABEL_DETECTION":         4,
+	"TEXT_DETECTION":          5,
+	"DOCUMENT_TEXT_DETECTION": 11,
+	"SAFE_SEARCH_DETECTION":   6,
+	"IMAGE_PROPERTIES":        7,
+	"CROP_HINTS":              9,
+	"WEB_DETECTION":           10,
+}
+
+func (x Feature_Type) String() string {
+	return proto.EnumName(Feature_Type_name, int32(x))
+}
+func (Feature_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} }
+
+// Face landmark (feature) type.
+// Left and right are defined from the vantage of the viewer of the image
+// without considering mirror projections typical of photos. So, `LEFT_EYE`,
+// typically, is the person's right eye.
+type FaceAnnotation_Landmark_Type int32
+
+const (
+	// Unknown face landmark detected. Should not be filled.
+	FaceAnnotation_Landmark_UNKNOWN_LANDMARK FaceAnnotation_Landmark_Type = 0
+	// Left eye.
+	FaceAnnotation_Landmark_LEFT_EYE FaceAnnotation_Landmark_Type = 1
+	// Right eye.
+	FaceAnnotation_Landmark_RIGHT_EYE FaceAnnotation_Landmark_Type = 2
+	// Left of left eyebrow.
+	FaceAnnotation_Landmark_LEFT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 3
+	// Right of left eyebrow.
+	FaceAnnotation_Landmark_RIGHT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 4
+	// Left of right eyebrow.
+	FaceAnnotation_Landmark_LEFT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 5
+	// Right of right eyebrow.
+	FaceAnnotation_Landmark_RIGHT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 6
+	// Midpoint between eyes.
+	FaceAnnotation_Landmark_MIDPOINT_BETWEEN_EYES FaceAnnotation_Landmark_Type = 7
+	// Nose tip.
+	FaceAnnotation_Landmark_NOSE_TIP FaceAnnotation_Landmark_Type = 8
+	// Upper lip.
+	FaceAnnotation_Landmark_UPPER_LIP FaceAnnotation_Landmark_Type = 9
+	// Lower lip.
+	FaceAnnotation_Landmark_LOWER_LIP FaceAnnotation_Landmark_Type = 10
+	// Mouth left.
+	FaceAnnotation_Landmark_MOUTH_LEFT FaceAnnotation_Landmark_Type = 11
+	// Mouth right.
+	FaceAnnotation_Landmark_MOUTH_RIGHT FaceAnnotation_Landmark_Type = 12
+	// Mouth center.
+	FaceAnnotation_Landmark_MOUTH_CENTER FaceAnnotation_Landmark_Type = 13
+	// Nose, bottom right.
+	FaceAnnotation_Landmark_NOSE_BOTTOM_RIGHT FaceAnnotation_Landmark_Type = 14
+	// Nose, bottom left.
+	FaceAnnotation_Landmark_NOSE_BOTTOM_LEFT FaceAnnotation_Landmark_Type = 15
+	// Nose, bottom center.
+	FaceAnnotation_Landmark_NOSE_BOTTOM_CENTER FaceAnnotation_Landmark_Type = 16
+	// Left eye, top boundary.
+	FaceAnnotation_Landmark_LEFT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 17
+	// Left eye, right corner.
+	FaceAnnotation_Landmark_LEFT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 18
+	// Left eye, bottom boundary.
+	FaceAnnotation_Landmark_LEFT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 19
+	// Left eye, left corner.
+	FaceAnnotation_Landmark_LEFT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 20
+	// Right eye, top boundary.
+	FaceAnnotation_Landmark_RIGHT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 21
+	// Right eye, right corner.
+	FaceAnnotation_Landmark_RIGHT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 22
+	// Right eye, bottom boundary.
+	FaceAnnotation_Landmark_RIGHT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 23
+	// Right eye, left corner.
+	FaceAnnotation_Landmark_RIGHT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 24
+	// Left eyebrow, upper midpoint.
+	FaceAnnotation_Landmark_LEFT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 25
+	// Right eyebrow, upper midpoint.
+	FaceAnnotation_Landmark_RIGHT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 26
+	// Left ear tragion.
+	FaceAnnotation_Landmark_LEFT_EAR_TRAGION FaceAnnotation_Landmark_Type = 27
+	// Right ear tragion.
+	FaceAnnotation_Landmark_RIGHT_EAR_TRAGION FaceAnnotation_Landmark_Type = 28
+	// Left eye pupil.
+	FaceAnnotation_Landmark_LEFT_EYE_PUPIL FaceAnnotation_Landmark_Type = 29
+	// Right eye pupil.
+	FaceAnnotation_Landmark_RIGHT_EYE_PUPIL FaceAnnotation_Landmark_Type = 30
+	// Forehead glabella.
+	FaceAnnotation_Landmark_FOREHEAD_GLABELLA FaceAnnotation_Landmark_Type = 31
+	// Chin gnathion.
+	FaceAnnotation_Landmark_CHIN_GNATHION FaceAnnotation_Landmark_Type = 32
+	// Chin left gonion.
+	FaceAnnotation_Landmark_CHIN_LEFT_GONION FaceAnnotation_Landmark_Type = 33
+	// Chin right gonion.
+	FaceAnnotation_Landmark_CHIN_RIGHT_GONION FaceAnnotation_Landmark_Type = 34
+)
+
+var FaceAnnotation_Landmark_Type_name = map[int32]string{
+	0:  "UNKNOWN_LANDMARK",
+	1:  "LEFT_EYE",
+	2:  "RIGHT_EYE",
+	3:  "LEFT_OF_LEFT_EYEBROW",
+	4:  "RIGHT_OF_LEFT_EYEBROW",
+	5:  "LEFT_OF_RIGHT_EYEBROW",
+	6:  "RIGHT_OF_RIGHT_EYEBROW",
+	7:  "MIDPOINT_BETWEEN_EYES",
+	8:  "NOSE_TIP",
+	9:  "UPPER_LIP",
+	10: "LOWER_LIP",
+	11: "MOUTH_LEFT",
+	12: "MOUTH_RIGHT",
+	13: "MOUTH_CENTER",
+	14: "NOSE_BOTTOM_RIGHT",
+	15: "NOSE_BOTTOM_LEFT",
+	16: "NOSE_BOTTOM_CENTER",
+	17: "LEFT_EYE_TOP_BOUNDARY",
+	18: "LEFT_EYE_RIGHT_CORNER",
+	19: "LEFT_EYE_BOTTOM_BOUNDARY",
+	20: "LEFT_EYE_LEFT_CORNER",
+	21: "RIGHT_EYE_TOP_BOUNDARY",
+	22: "RIGHT_EYE_RIGHT_CORNER",
+	23: "RIGHT_EYE_BOTTOM_BOUNDARY",
+	24: "RIGHT_EYE_LEFT_CORNER",
+	25: "LEFT_EYEBROW_UPPER_MIDPOINT",
+	26: "RIGHT_EYEBROW_UPPER_MIDPOINT",
+	27: "LEFT_EAR_TRAGION",
+	28: "RIGHT_EAR_TRAGION",
+	29: "LEFT_EYE_PUPIL",
+	30: "RIGHT_EYE_PUPIL",
+	31: "FOREHEAD_GLABELLA",
+	32: "CHIN_GNATHION",
+	33: "CHIN_LEFT_GONION",
+	34: "CHIN_RIGHT_GONION",
+}
+var FaceAnnotation_Landmark_Type_value = map[string]int32{
+	"UNKNOWN_LANDMARK":             0,
+	"LEFT_EYE":                     1,
+	"RIGHT_EYE":                    2,
+	"LEFT_OF_LEFT_EYEBROW":         3,
+	"RIGHT_OF_LEFT_EYEBROW":        4,
+	"LEFT_OF_RIGHT_EYEBROW":        5,
+	"RIGHT_OF_RIGHT_EYEBROW":       6,
+	"MIDPOINT_BETWEEN_EYES":        7,
+	"NOSE_TIP":                     8,
+	"UPPER_LIP":                    9,
+	"LOWER_LIP":                    10,
+	"MOUTH_LEFT":                   11,
+	"MOUTH_RIGHT":                  12,
+	"MOUTH_CENTER":                 13,
+	"NOSE_BOTTOM_RIGHT":            14,
+	"NOSE_BOTTOM_LEFT":             15,
+	"NOSE_BOTTOM_CENTER":           16,
+	"LEFT_EYE_TOP_BOUNDARY":        17,
+	"LEFT_EYE_RIGHT_CORNER":        18,
+	"LEFT_EYE_BOTTOM_BOUNDARY":     19,
+	"LEFT_EYE_LEFT_CORNER":         20,
+	"RIGHT_EYE_TOP_BOUNDARY":       21,
+	"RIGHT_EYE_RIGHT_CORNER":       22,
+	"RIGHT_EYE_BOTTOM_BOUNDARY":    23,
+	"RIGHT_EYE_LEFT_CORNER":        24,
+	"LEFT_EYEBROW_UPPER_MIDPOINT":  25,
+	"RIGHT_EYEBROW_UPPER_MIDPOINT": 26,
+	"LEFT_EAR_TRAGION":             27,
+	"RIGHT_EAR_TRAGION":            28,
+	"LEFT_EYE_PUPIL":               29,
+	"RIGHT_EYE_PUPIL":              30,
+	"FOREHEAD_GLABELLA":            31,
+	"CHIN_GNATHION":                32,
+	"CHIN_LEFT_GONION":             33,
+	"CHIN_RIGHT_GONION":            34,
+}
+
+func (x FaceAnnotation_Landmark_Type) String() string {
+	return proto.EnumName(FaceAnnotation_Landmark_Type_name, int32(x))
+}
+func (FaceAnnotation_Landmark_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor1, []int{3, 0, 0}
+}
+
+// Batch operation states.
+type OperationMetadata_State int32
+
+const (
+	// Invalid.
+	OperationMetadata_STATE_UNSPECIFIED OperationMetadata_State = 0
+	// Request is received.
+	OperationMetadata_CREATED OperationMetadata_State = 1
+	// Request is actively being processed.
+	OperationMetadata_RUNNING OperationMetadata_State = 2
+	// The batch processing is done.
+	OperationMetadata_DONE OperationMetadata_State = 3
+	// The batch processing was cancelled.
+	OperationMetadata_CANCELLED OperationMetadata_State = 4
+)
+
+var OperationMetadata_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "CREATED",
+	2: "RUNNING",
+	3: "DONE",
+	4: "CANCELLED",
+}
+var OperationMetadata_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"CREATED":           1,
+	"RUNNING":           2,
+	"DONE":              3,
+	"CANCELLED":         4,
+}
+
+func (x OperationMetadata_State) String() string {
+	return proto.EnumName(OperationMetadata_State_name, int32(x))
+}
+func (OperationMetadata_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{30, 0} }
+
+// The type of Google Cloud Vision API detection to perform, and the maximum
+// number of results to return for that type. Multiple `Feature` objects can
+// be specified in the `features` list.
+type Feature struct {
+	// The feature type.
+	Type Feature_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1p2beta1.Feature_Type" json:"type,omitempty"`
+	// Maximum number of results of this type. Does not apply to
+	// `TEXT_DETECTION`, `DOCUMENT_TEXT_DETECTION`, or `CROP_HINTS`.
+	MaxResults int32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"`
+	// Model to use for the feature.
+	// Supported values: "builtin/stable" (the default if unset) and
+	// "builtin/latest".
+	Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"`
+}
+
+func (m *Feature) Reset()                    { *m = Feature{} }
+func (m *Feature) String() string            { return proto.CompactTextString(m) }
+func (*Feature) ProtoMessage()               {}
+func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *Feature) GetType() Feature_Type {
+	if m != nil {
+		return m.Type
+	}
+	return Feature_TYPE_UNSPECIFIED
+}
+
+func (m *Feature) GetMaxResults() int32 {
+	if m != nil {
+		return m.MaxResults
+	}
+	return 0
+}
+
+func (m *Feature) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+// External image source (Google Cloud Storage or web URL image location).
+type ImageSource struct {
+	// **Use `image_uri` instead.**
+	//
+	// The Google Cloud Storage  URI of the form
+	// `gs://bucket_name/object_name`. Object versioning is not supported. See
+	// [Google Cloud Storage Request
+	// URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.
+	GcsImageUri string `protobuf:"bytes,1,opt,name=gcs_image_uri,json=gcsImageUri" json:"gcs_image_uri,omitempty"`
+	// The URI of the source image. Can be either:
+	//
+	// 1. A Google Cloud Storage URI of the form
+	//    `gs://bucket_name/object_name`. Object versioning is not supported. See
+	//    [Google Cloud Storage Request
+	//    URIs](https://cloud.google.com/storage/docs/reference-uris) for more
+	//    info.
+	//
+	// 2. A publicly-accessible image HTTP/HTTPS URL. When fetching images from
+	//    HTTP/HTTPS URLs, Google cannot guarantee that the request will be
+	//    completed. Your request may fail if the specified host denies the
+	//    request (e.g. due to request throttling or DOS prevention), or if Google
+	//    throttles requests to the site for abuse prevention. You should not
+	//    depend on externally-hosted images for production applications.
+	//
+	// When both `gcs_image_uri` and `image_uri` are specified, `image_uri` takes
+	// precedence.
+	ImageUri string `protobuf:"bytes,2,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"`
+}
+
+func (m *ImageSource) Reset()                    { *m = ImageSource{} }
+func (m *ImageSource) String() string            { return proto.CompactTextString(m) }
+func (*ImageSource) ProtoMessage()               {}
+func (*ImageSource) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+
+func (m *ImageSource) GetGcsImageUri() string {
+	if m != nil {
+		return m.GcsImageUri
+	}
+	return ""
+}
+
+func (m *ImageSource) GetImageUri() string {
+	if m != nil {
+		return m.ImageUri
+	}
+	return ""
+}
+
+// Client image to perform Google Cloud Vision API tasks over.
+type Image struct {
+	// Image content, represented as a stream of bytes.
+	// Note: As with all `bytes` fields, protobuffers use a pure binary
+	// representation, whereas JSON representations use base64.
+	Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
+	// Google Cloud Storage image location, or publicly-accessible image
+	// URL. If both `content` and `source` are provided for an image, `content`
+	// takes precedence and is used to perform the image annotation request.
+	Source *ImageSource `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"`
+}
+
+func (m *Image) Reset()                    { *m = Image{} }
+func (m *Image) String() string            { return proto.CompactTextString(m) }
+func (*Image) ProtoMessage()               {}
+func (*Image) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *Image) GetContent() []byte {
+	if m != nil {
+		return m.Content
+	}
+	return nil
+}
+
+func (m *Image) GetSource() *ImageSource {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+// A face annotation object contains the results of face detection.
+type FaceAnnotation struct {
+	// The bounding polygon around the face. The coordinates of the bounding box
+	// are in the original image's scale, as returned in `ImageParams`.
+	// The bounding box is computed to "frame" the face in accordance with human
+	// expectations. It is based on the landmarker results.
+	// Note that one or more x and/or y coordinates may not be generated in the
+	// `BoundingPoly` (the polygon will be unbounded) if only a partial face
+	// appears in the image to be annotated.
+	BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"`
+	// The `fd_bounding_poly` bounding polygon is tighter than the
+	// `boundingPoly`, and encloses only the skin part of the face. Typically, it
+	// is used to eliminate the face from any image analysis that detects the
+	// "amount of skin" visible in an image. It is not based on the
+	// landmarker results, only on the initial face detection, hence
+	// the <code>fd</code> (face detection) prefix.
+	FdBoundingPoly *BoundingPoly `protobuf:"bytes,2,opt,name=fd_bounding_poly,json=fdBoundingPoly" json:"fd_bounding_poly,omitempty"`
+	// Detected face landmarks.
+	Landmarks []*FaceAnnotation_Landmark `protobuf:"bytes,3,rep,name=landmarks" json:"landmarks,omitempty"`
+	// Roll angle, which indicates the amount of clockwise/anti-clockwise rotation
+	// of the face relative to the image vertical about the axis perpendicular to
+	// the face. Range [-180,180].
+	RollAngle float32 `protobuf:"fixed32,4,opt,name=roll_angle,json=rollAngle" json:"roll_angle,omitempty"`
+	// Yaw angle, which indicates the leftward/rightward angle that the face is
+	// pointing relative to the vertical plane perpendicular to the image. Range
+	// [-180,180].
+	PanAngle float32 `protobuf:"fixed32,5,opt,name=pan_angle,json=panAngle" json:"pan_angle,omitempty"`
+	// Pitch angle, which indicates the upwards/downwards angle that the face is
+	// pointing relative to the image's horizontal plane. Range [-180,180].
+	TiltAngle float32 `protobuf:"fixed32,6,opt,name=tilt_angle,json=tiltAngle" json:"tilt_angle,omitempty"`
+	// Detection confidence. Range [0, 1].
+	DetectionConfidence float32 `protobuf:"fixed32,7,opt,name=detection_confidence,json=detectionConfidence" json:"detection_confidence,omitempty"`
+	// Face landmarking confidence. Range [0, 1].
+	LandmarkingConfidence float32 `protobuf:"fixed32,8,opt,name=landmarking_confidence,json=landmarkingConfidence" json:"landmarking_confidence,omitempty"`
+	// Joy likelihood.
+	JoyLikelihood Likelihood `protobuf:"varint,9,opt,name=joy_likelihood,json=joyLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"joy_likelihood,omitempty"`
+	// Sorrow likelihood.
+	SorrowLikelihood Likelihood `protobuf:"varint,10,opt,name=sorrow_likelihood,json=sorrowLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"sorrow_likelihood,omitempty"`
+	// Anger likelihood.
+	AngerLikelihood Likelihood `protobuf:"varint,11,opt,name=anger_likelihood,json=angerLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"anger_likelihood,omitempty"`
+	// Surprise likelihood.
+	SurpriseLikelihood Likelihood `protobuf:"varint,12,opt,name=surprise_likelihood,json=surpriseLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"surprise_likelihood,omitempty"`
+	// Under-exposed likelihood.
+	UnderExposedLikelihood Likelihood `protobuf:"varint,13,opt,name=under_exposed_likelihood,json=underExposedLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"under_exposed_likelihood,omitempty"`
+	// Blurred likelihood.
+	BlurredLikelihood Likelihood `protobuf:"varint,14,opt,name=blurred_likelihood,json=blurredLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"blurred_likelihood,omitempty"`
+	// Headwear likelihood.
+	HeadwearLikelihood Likelihood `protobuf:"varint,15,opt,name=headwear_likelihood,json=headwearLikelihood,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"headwear_likelihood,omitempty"`
+}
+
+func (m *FaceAnnotation) Reset()                    { *m = FaceAnnotation{} }
+func (m *FaceAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*FaceAnnotation) ProtoMessage()               {}
+func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *FaceAnnotation) GetBoundingPoly() *BoundingPoly {
+	if m != nil {
+		return m.BoundingPoly
+	}
+	return nil
+}
+
+func (m *FaceAnnotation) GetFdBoundingPoly() *BoundingPoly {
+	if m != nil {
+		return m.FdBoundingPoly
+	}
+	return nil
+}
+
+func (m *FaceAnnotation) GetLandmarks() []*FaceAnnotation_Landmark {
+	if m != nil {
+		return m.Landmarks
+	}
+	return nil
+}
+
+func (m *FaceAnnotation) GetRollAngle() float32 {
+	if m != nil {
+		return m.RollAngle
+	}
+	return 0
+}
+
+func (m *FaceAnnotation) GetPanAngle() float32 {
+	if m != nil {
+		return m.PanAngle
+	}
+	return 0
+}
+
+func (m *FaceAnnotation) GetTiltAngle() float32 {
+	if m != nil {
+		return m.TiltAngle
+	}
+	return 0
+}
+
+func (m *FaceAnnotation) GetDetectionConfidence() float32 {
+	if m != nil {
+		return m.DetectionConfidence
+	}
+	return 0
+}
+
+func (m *FaceAnnotation) GetLandmarkingConfidence() float32 {
+	if m != nil {
+		return m.LandmarkingConfidence
+	}
+	return 0
+}
+
+func (m *FaceAnnotation) GetJoyLikelihood() Likelihood {
+	if m != nil {
+		return m.JoyLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetSorrowLikelihood() Likelihood {
+	if m != nil {
+		return m.SorrowLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetAngerLikelihood() Likelihood {
+	if m != nil {
+		return m.AngerLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetSurpriseLikelihood() Likelihood {
+	if m != nil {
+		return m.SurpriseLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetUnderExposedLikelihood() Likelihood {
+	if m != nil {
+		return m.UnderExposedLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetBlurredLikelihood() Likelihood {
+	if m != nil {
+		return m.BlurredLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *FaceAnnotation) GetHeadwearLikelihood() Likelihood {
+	if m != nil {
+		return m.HeadwearLikelihood
+	}
+	return Likelihood_UNKNOWN
+}
+
+// A face-specific landmark (for example, a face feature).
+type FaceAnnotation_Landmark struct {
+	// Face landmark type.
+	Type FaceAnnotation_Landmark_Type `protobuf:"varint,3,opt,name=type,enum=google.cloud.vision.v1p2beta1.FaceAnnotation_Landmark_Type" json:"type,omitempty"`
+	// Face landmark position.
+	Position *Position `protobuf:"bytes,4,opt,name=position" json:"position,omitempty"`
+}
+
+func (m *FaceAnnotation_Landmark) Reset()                    { *m = FaceAnnotation_Landmark{} }
+func (m *FaceAnnotation_Landmark) String() string            { return proto.CompactTextString(m) }
+func (*FaceAnnotation_Landmark) ProtoMessage()               {}
+func (*FaceAnnotation_Landmark) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} }
+
+func (m *FaceAnnotation_Landmark) GetType() FaceAnnotation_Landmark_Type {
+	if m != nil {
+		return m.Type
+	}
+	return FaceAnnotation_Landmark_UNKNOWN_LANDMARK
+}
+
+func (m *FaceAnnotation_Landmark) GetPosition() *Position {
+	if m != nil {
+		return m.Position
+	}
+	return nil
+}
+
+// Detected entity location information.
+type LocationInfo struct {
+	// lat/long location coordinates.
+	LatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=lat_lng,json=latLng" json:"lat_lng,omitempty"`
+}
+
+func (m *LocationInfo) Reset()                    { *m = LocationInfo{} }
+func (m *LocationInfo) String() string            { return proto.CompactTextString(m) }
+func (*LocationInfo) ProtoMessage()               {}
+func (*LocationInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+
+func (m *LocationInfo) GetLatLng() *google_type1.LatLng {
+	if m != nil {
+		return m.LatLng
+	}
+	return nil
+}
+
+// A `Property` consists of a user-supplied name/value pair.
+type Property struct {
+	// Name of the property.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Value of the property.
+	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+	// Value of numeric properties.
+	Uint64Value uint64 `protobuf:"varint,3,opt,name=uint64_value,json=uint64Value" json:"uint64_value,omitempty"`
+}
+
+func (m *Property) Reset()                    { *m = Property{} }
+func (m *Property) String() string            { return proto.CompactTextString(m) }
+func (*Property) ProtoMessage()               {}
+func (*Property) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+
+func (m *Property) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Property) GetValue() string {
+	if m != nil {
+		return m.Value
+	}
+	return ""
+}
+
+func (m *Property) GetUint64Value() uint64 {
+	if m != nil {
+		return m.Uint64Value
+	}
+	return 0
+}
+
+// Set of detected entity features.
+type EntityAnnotation struct {
+	// Opaque entity ID. Some IDs may be available in
+	// [Google Knowledge Graph Search
+	// API](https://developers.google.com/knowledge-graph/).
+	Mid string `protobuf:"bytes,1,opt,name=mid" json:"mid,omitempty"`
+	// The language code for the locale in which the entity textual
+	// `description` is expressed.
+	Locale string `protobuf:"bytes,2,opt,name=locale" json:"locale,omitempty"`
+	// Entity textual description, expressed in its `locale` language.
+	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
+	// Overall score of the result. Range [0, 1].
+	Score float32 `protobuf:"fixed32,4,opt,name=score" json:"score,omitempty"`
+	// **Deprecated. Use `score` instead.**
+	// The accuracy of the entity detection in an image.
+	// For example, for an image in which the "Eiffel Tower" entity is detected,
+	// this field represents the confidence that there is a tower in the query
+	// image. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
+	// The relevancy of the ICA (Image Content Annotation) label to the
+	// image. For example, the relevancy of "tower" is likely higher to an image
+	// containing the detected "Eiffel Tower" than to an image containing a
+	// detected distant towering building, even though the confidence that
+	// there is a tower in each image may be the same. Range [0, 1].
+	Topicality float32 `protobuf:"fixed32,6,opt,name=topicality" json:"topicality,omitempty"`
+	// Image region to which this entity belongs. Not produced
+	// for `LABEL_DETECTION` features.
+	BoundingPoly *BoundingPoly `protobuf:"bytes,7,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"`
+	// The location information for the detected entity. Multiple
+	// `LocationInfo` elements can be present because one location may
+	// indicate the location of the scene in the image, and another location
+	// may indicate the location of the place where the image was taken.
+	// Location information is usually present for landmarks.
+	Locations []*LocationInfo `protobuf:"bytes,8,rep,name=locations" json:"locations,omitempty"`
+	// Some entities may have optional user-supplied `Property` (name/value)
+	// fields, such a score or string that qualifies the entity.
+	Properties []*Property `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty"`
+}
+
+func (m *EntityAnnotation) Reset()                    { *m = EntityAnnotation{} }
+func (m *EntityAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*EntityAnnotation) ProtoMessage()               {}
+func (*EntityAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
+
+func (m *EntityAnnotation) GetMid() string {
+	if m != nil {
+		return m.Mid
+	}
+	return ""
+}
+
+func (m *EntityAnnotation) GetLocale() string {
+	if m != nil {
+		return m.Locale
+	}
+	return ""
+}
+
+func (m *EntityAnnotation) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *EntityAnnotation) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *EntityAnnotation) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func (m *EntityAnnotation) GetTopicality() float32 {
+	if m != nil {
+		return m.Topicality
+	}
+	return 0
+}
+
+func (m *EntityAnnotation) GetBoundingPoly() *BoundingPoly {
+	if m != nil {
+		return m.BoundingPoly
+	}
+	return nil
+}
+
+func (m *EntityAnnotation) GetLocations() []*LocationInfo {
+	if m != nil {
+		return m.Locations
+	}
+	return nil
+}
+
+func (m *EntityAnnotation) GetProperties() []*Property {
+	if m != nil {
+		return m.Properties
+	}
+	return nil
+}
+
+// Set of features pertaining to the image, computed by computer vision
+// methods over safe-search verticals (for example, adult, spoof, medical,
+// violence).
+type SafeSearchAnnotation struct {
+	// Represents the adult content likelihood for the image. Adult content may
+	// contain elements such as nudity, pornographic images or cartoons, or
+	// sexual activities.
+	Adult Likelihood `protobuf:"varint,1,opt,name=adult,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"adult,omitempty"`
+	// Spoof likelihood. The likelihood that an modification
+	// was made to the image's canonical version to make it appear
+	// funny or offensive.
+	Spoof Likelihood `protobuf:"varint,2,opt,name=spoof,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"spoof,omitempty"`
+	// Likelihood that this is a medical image.
+	Medical Likelihood `protobuf:"varint,3,opt,name=medical,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"medical,omitempty"`
+	// Likelihood that this image contains violent content.
+	Violence Likelihood `protobuf:"varint,4,opt,name=violence,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"violence,omitempty"`
+	// Likelihood that the request image contains racy content. Racy content may
+	// include (but is not limited to) skimpy or sheer clothing, strategically
+	// covered nudity, lewd or provocative poses, or close-ups of sensitive
+	// body areas.
+	Racy Likelihood `protobuf:"varint,9,opt,name=racy,enum=google.cloud.vision.v1p2beta1.Likelihood" json:"racy,omitempty"`
+}
+
+func (m *SafeSearchAnnotation) Reset()                    { *m = SafeSearchAnnotation{} }
+func (m *SafeSearchAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*SafeSearchAnnotation) ProtoMessage()               {}
+func (*SafeSearchAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
+
+func (m *SafeSearchAnnotation) GetAdult() Likelihood {
+	if m != nil {
+		return m.Adult
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *SafeSearchAnnotation) GetSpoof() Likelihood {
+	if m != nil {
+		return m.Spoof
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *SafeSearchAnnotation) GetMedical() Likelihood {
+	if m != nil {
+		return m.Medical
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *SafeSearchAnnotation) GetViolence() Likelihood {
+	if m != nil {
+		return m.Violence
+	}
+	return Likelihood_UNKNOWN
+}
+
+func (m *SafeSearchAnnotation) GetRacy() Likelihood {
+	if m != nil {
+		return m.Racy
+	}
+	return Likelihood_UNKNOWN
+}
+
+// Rectangle determined by min and max `LatLng` pairs.
+type LatLongRect struct {
+	// Min lat/long pair.
+	MinLatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=min_lat_lng,json=minLatLng" json:"min_lat_lng,omitempty"`
+	// Max lat/long pair.
+	MaxLatLng *google_type1.LatLng `protobuf:"bytes,2,opt,name=max_lat_lng,json=maxLatLng" json:"max_lat_lng,omitempty"`
+}
+
+func (m *LatLongRect) Reset()                    { *m = LatLongRect{} }
+func (m *LatLongRect) String() string            { return proto.CompactTextString(m) }
+func (*LatLongRect) ProtoMessage()               {}
+func (*LatLongRect) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
+
+func (m *LatLongRect) GetMinLatLng() *google_type1.LatLng {
+	if m != nil {
+		return m.MinLatLng
+	}
+	return nil
+}
+
+func (m *LatLongRect) GetMaxLatLng() *google_type1.LatLng {
+	if m != nil {
+		return m.MaxLatLng
+	}
+	return nil
+}
+
+// Color information consists of RGB channels, score, and the fraction of
+// the image that the color occupies in the image.
+type ColorInfo struct {
+	// RGB components of the color.
+	Color *google_type.Color `protobuf:"bytes,1,opt,name=color" json:"color,omitempty"`
+	// Image-specific score for this color. Value in range [0, 1].
+	Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
+	// The fraction of pixels the color occupies in the image.
+	// Value in range [0, 1].
+	PixelFraction float32 `protobuf:"fixed32,3,opt,name=pixel_fraction,json=pixelFraction" json:"pixel_fraction,omitempty"`
+}
+
+func (m *ColorInfo) Reset()                    { *m = ColorInfo{} }
+func (m *ColorInfo) String() string            { return proto.CompactTextString(m) }
+func (*ColorInfo) ProtoMessage()               {}
+func (*ColorInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
+
+func (m *ColorInfo) GetColor() *google_type.Color {
+	if m != nil {
+		return m.Color
+	}
+	return nil
+}
+
+func (m *ColorInfo) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *ColorInfo) GetPixelFraction() float32 {
+	if m != nil {
+		return m.PixelFraction
+	}
+	return 0
+}
+
+// Set of dominant colors and their corresponding scores.
+type DominantColorsAnnotation struct {
+	// RGB color values with their score and pixel fraction.
+	Colors []*ColorInfo `protobuf:"bytes,1,rep,name=colors" json:"colors,omitempty"`
+}
+
+func (m *DominantColorsAnnotation) Reset()                    { *m = DominantColorsAnnotation{} }
+func (m *DominantColorsAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*DominantColorsAnnotation) ProtoMessage()               {}
+func (*DominantColorsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
+
+func (m *DominantColorsAnnotation) GetColors() []*ColorInfo {
+	if m != nil {
+		return m.Colors
+	}
+	return nil
+}
+
+// Stores image properties, such as dominant colors.
+type ImageProperties struct {
+	// If present, dominant colors completed successfully.
+	DominantColors *DominantColorsAnnotation `protobuf:"bytes,1,opt,name=dominant_colors,json=dominantColors" json:"dominant_colors,omitempty"`
+}
+
+func (m *ImageProperties) Reset()                    { *m = ImageProperties{} }
+func (m *ImageProperties) String() string            { return proto.CompactTextString(m) }
+func (*ImageProperties) ProtoMessage()               {}
+func (*ImageProperties) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} }
+
+func (m *ImageProperties) GetDominantColors() *DominantColorsAnnotation {
+	if m != nil {
+		return m.DominantColors
+	}
+	return nil
+}
+
+// Single crop hint that is used to generate a new crop when serving an image.
+type CropHint struct {
+	// The bounding polygon for the crop region. The coordinates of the bounding
+	// box are in the original image's scale, as returned in `ImageParams`.
+	BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"`
+	// Confidence of this being a salient region.  Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
+	// Fraction of importance of this salient region with respect to the original
+	// image.
+	ImportanceFraction float32 `protobuf:"fixed32,3,opt,name=importance_fraction,json=importanceFraction" json:"importance_fraction,omitempty"`
+}
+
+func (m *CropHint) Reset()                    { *m = CropHint{} }
+func (m *CropHint) String() string            { return proto.CompactTextString(m) }
+func (*CropHint) ProtoMessage()               {}
+func (*CropHint) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
+
+func (m *CropHint) GetBoundingPoly() *BoundingPoly {
+	if m != nil {
+		return m.BoundingPoly
+	}
+	return nil
+}
+
+func (m *CropHint) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func (m *CropHint) GetImportanceFraction() float32 {
+	if m != nil {
+		return m.ImportanceFraction
+	}
+	return 0
+}
+
+// Set of crop hints that are used to generate new crops when serving images.
+type CropHintsAnnotation struct {
+	// Crop hint results.
+	CropHints []*CropHint `protobuf:"bytes,1,rep,name=crop_hints,json=cropHints" json:"crop_hints,omitempty"`
+}
+
+func (m *CropHintsAnnotation) Reset()                    { *m = CropHintsAnnotation{} }
+func (m *CropHintsAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*CropHintsAnnotation) ProtoMessage()               {}
+func (*CropHintsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} }
+
+func (m *CropHintsAnnotation) GetCropHints() []*CropHint {
+	if m != nil {
+		return m.CropHints
+	}
+	return nil
+}
+
+// Parameters for crop hints annotation request.
+type CropHintsParams struct {
+	// Aspect ratios in floats, representing the ratio of the width to the height
+	// of the image. For example, if the desired aspect ratio is 4/3, the
+	// corresponding float value should be 1.33333.  If not specified, the
+	// best possible crop is returned. The number of provided aspect ratios is
+	// limited to a maximum of 16; any aspect ratios provided after the 16th are
+	// ignored.
+	AspectRatios []float32 `protobuf:"fixed32,1,rep,packed,name=aspect_ratios,json=aspectRatios" json:"aspect_ratios,omitempty"`
+}
+
+func (m *CropHintsParams) Reset()                    { *m = CropHintsParams{} }
+func (m *CropHintsParams) String() string            { return proto.CompactTextString(m) }
+func (*CropHintsParams) ProtoMessage()               {}
+func (*CropHintsParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} }
+
+func (m *CropHintsParams) GetAspectRatios() []float32 {
+	if m != nil {
+		return m.AspectRatios
+	}
+	return nil
+}
+
+// Parameters for web detection request.
+type WebDetectionParams struct {
+	// Whether to include results derived from the geo information in the image.
+	IncludeGeoResults bool `protobuf:"varint,2,opt,name=include_geo_results,json=includeGeoResults" json:"include_geo_results,omitempty"`
+}
+
+func (m *WebDetectionParams) Reset()                    { *m = WebDetectionParams{} }
+func (m *WebDetectionParams) String() string            { return proto.CompactTextString(m) }
+func (*WebDetectionParams) ProtoMessage()               {}
+func (*WebDetectionParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
+
+func (m *WebDetectionParams) GetIncludeGeoResults() bool {
+	if m != nil {
+		return m.IncludeGeoResults
+	}
+	return false
+}
+
+// Image context and/or feature-specific parameters.
+type ImageContext struct {
+	// lat/long rectangle that specifies the location of the image.
+	LatLongRect *LatLongRect `protobuf:"bytes,1,opt,name=lat_long_rect,json=latLongRect" json:"lat_long_rect,omitempty"`
+	// List of languages to use for TEXT_DETECTION. In most cases, an empty value
+	// yields the best results since it enables automatic language detection. For
+	// languages based on the Latin alphabet, setting `language_hints` is not
+	// needed. In rare cases, when the language of the text in the image is known,
+	// setting a hint will help get better results (although it will be a
+	// significant hindrance if the hint is wrong). Text detection returns an
+	// error if one or more of the specified languages is not one of the
+	// [supported languages](/vision/docs/languages).
+	LanguageHints []string `protobuf:"bytes,2,rep,name=language_hints,json=languageHints" json:"language_hints,omitempty"`
+	// Parameters for crop hints annotation request.
+	CropHintsParams *CropHintsParams `protobuf:"bytes,4,opt,name=crop_hints_params,json=cropHintsParams" json:"crop_hints_params,omitempty"`
+	// Parameters for web detection.
+	WebDetectionParams *WebDetectionParams `protobuf:"bytes,6,opt,name=web_detection_params,json=webDetectionParams" json:"web_detection_params,omitempty"`
+}
+
+func (m *ImageContext) Reset()                    { *m = ImageContext{} }
+func (m *ImageContext) String() string            { return proto.CompactTextString(m) }
+func (*ImageContext) ProtoMessage()               {}
+func (*ImageContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
+
+func (m *ImageContext) GetLatLongRect() *LatLongRect {
+	if m != nil {
+		return m.LatLongRect
+	}
+	return nil
+}
+
+func (m *ImageContext) GetLanguageHints() []string {
+	if m != nil {
+		return m.LanguageHints
+	}
+	return nil
+}
+
+func (m *ImageContext) GetCropHintsParams() *CropHintsParams {
+	if m != nil {
+		return m.CropHintsParams
+	}
+	return nil
+}
+
+func (m *ImageContext) GetWebDetectionParams() *WebDetectionParams {
+	if m != nil {
+		return m.WebDetectionParams
+	}
+	return nil
+}
+
+// Request for performing Google Cloud Vision API tasks over a user-provided
+// image, with user-requested features.
+type AnnotateImageRequest struct {
+	// The image to be processed.
+	Image *Image `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+	// Requested features.
+	Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"`
+	// Additional context that may accompany the image.
+	ImageContext *ImageContext `protobuf:"bytes,3,opt,name=image_context,json=imageContext" json:"image_context,omitempty"`
+}
+
+func (m *AnnotateImageRequest) Reset()                    { *m = AnnotateImageRequest{} }
+func (m *AnnotateImageRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnnotateImageRequest) ProtoMessage()               {}
+func (*AnnotateImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
+
+func (m *AnnotateImageRequest) GetImage() *Image {
+	if m != nil {
+		return m.Image
+	}
+	return nil
+}
+
+func (m *AnnotateImageRequest) GetFeatures() []*Feature {
+	if m != nil {
+		return m.Features
+	}
+	return nil
+}
+
+func (m *AnnotateImageRequest) GetImageContext() *ImageContext {
+	if m != nil {
+		return m.ImageContext
+	}
+	return nil
+}
+
+// If an image was produced from a file (e.g. a PDF), this message gives
+// information about the source of that image.
+type ImageAnnotationContext struct {
+	// The URI of the file used to produce the image.
+	Uri string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
+	// If the file was a PDF or TIFF, this field gives the page number within
+	// the file used to produce the image.
+	PageNumber int32 `protobuf:"varint,2,opt,name=page_number,json=pageNumber" json:"page_number,omitempty"`
+}
+
+func (m *ImageAnnotationContext) Reset()                    { *m = ImageAnnotationContext{} }
+func (m *ImageAnnotationContext) String() string            { return proto.CompactTextString(m) }
+func (*ImageAnnotationContext) ProtoMessage()               {}
+func (*ImageAnnotationContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} }
+
+func (m *ImageAnnotationContext) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+func (m *ImageAnnotationContext) GetPageNumber() int32 {
+	if m != nil {
+		return m.PageNumber
+	}
+	return 0
+}
+
+// Response to an image annotation request.
+type AnnotateImageResponse struct {
+	// If present, face detection has completed successfully.
+	FaceAnnotations []*FaceAnnotation `protobuf:"bytes,1,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"`
+	// If present, landmark detection has completed successfully.
+	LandmarkAnnotations []*EntityAnnotation `protobuf:"bytes,2,rep,name=landmark_annotations,json=landmarkAnnotations" json:"landmark_annotations,omitempty"`
+	// If present, logo detection has completed successfully.
+	LogoAnnotations []*EntityAnnotation `protobuf:"bytes,3,rep,name=logo_annotations,json=logoAnnotations" json:"logo_annotations,omitempty"`
+	// If present, label detection has completed successfully.
+	LabelAnnotations []*EntityAnnotation `protobuf:"bytes,4,rep,name=label_annotations,json=labelAnnotations" json:"label_annotations,omitempty"`
+	// If present, text (OCR) detection has completed successfully.
+	TextAnnotations []*EntityAnnotation `protobuf:"bytes,5,rep,name=text_annotations,json=textAnnotations" json:"text_annotations,omitempty"`
+	// If present, text (OCR) detection or document (OCR) text detection has
+	// completed successfully.
+	// This annotation provides the structural hierarchy for the OCR detected
+	// text.
+	FullTextAnnotation *TextAnnotation `protobuf:"bytes,12,opt,name=full_text_annotation,json=fullTextAnnotation" json:"full_text_annotation,omitempty"`
+	// If present, safe-search annotation has completed successfully.
+	SafeSearchAnnotation *SafeSearchAnnotation `protobuf:"bytes,6,opt,name=safe_search_annotation,json=safeSearchAnnotation" json:"safe_search_annotation,omitempty"`
+	// If present, image properties were extracted successfully.
+	ImagePropertiesAnnotation *ImageProperties `protobuf:"bytes,8,opt,name=image_properties_annotation,json=imagePropertiesAnnotation" json:"image_properties_annotation,omitempty"`
+	// If present, crop hints have completed successfully.
+	CropHintsAnnotation *CropHintsAnnotation `protobuf:"bytes,11,opt,name=crop_hints_annotation,json=cropHintsAnnotation" json:"crop_hints_annotation,omitempty"`
+	// If present, web detection has completed successfully.
+	WebDetection *WebDetection `protobuf:"bytes,13,opt,name=web_detection,json=webDetection" json:"web_detection,omitempty"`
+	// If set, represents the error message for the operation.
+	// Note that filled-in image annotations are guaranteed to be
+	// correct, even when `error` is set.
+	Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"`
+	// If present, contextual information is needed to understand where this image
+	// comes from.
+	Context *ImageAnnotationContext `protobuf:"bytes,21,opt,name=context" json:"context,omitempty"`
+}
+
+func (m *AnnotateImageResponse) Reset()                    { *m = AnnotateImageResponse{} }
+func (m *AnnotateImageResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnnotateImageResponse) ProtoMessage()               {}
+func (*AnnotateImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} }
+
+func (m *AnnotateImageResponse) GetFaceAnnotations() []*FaceAnnotation {
+	if m != nil {
+		return m.FaceAnnotations
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetLandmarkAnnotations() []*EntityAnnotation {
+	if m != nil {
+		return m.LandmarkAnnotations
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetLogoAnnotations() []*EntityAnnotation {
+	if m != nil {
+		return m.LogoAnnotations
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetLabelAnnotations() []*EntityAnnotation {
+	if m != nil {
+		return m.LabelAnnotations
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetTextAnnotations() []*EntityAnnotation {
+	if m != nil {
+		return m.TextAnnotations
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetFullTextAnnotation() *TextAnnotation {
+	if m != nil {
+		return m.FullTextAnnotation
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetSafeSearchAnnotation() *SafeSearchAnnotation {
+	if m != nil {
+		return m.SafeSearchAnnotation
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetImagePropertiesAnnotation() *ImageProperties {
+	if m != nil {
+		return m.ImagePropertiesAnnotation
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetCropHintsAnnotation() *CropHintsAnnotation {
+	if m != nil {
+		return m.CropHintsAnnotation
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetWebDetection() *WebDetection {
+	if m != nil {
+		return m.WebDetection
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetError() *google_rpc.Status {
+	if m != nil {
+		return m.Error
+	}
+	return nil
+}
+
+func (m *AnnotateImageResponse) GetContext() *ImageAnnotationContext {
+	if m != nil {
+		return m.Context
+	}
+	return nil
+}
+
+// Multiple image annotation requests are batched into a single service call.
+type BatchAnnotateImagesRequest struct {
+	// Individual image annotation requests for this batch.
+	Requests []*AnnotateImageRequest `protobuf:"bytes,1,rep,name=requests" json:"requests,omitempty"`
+}
+
+func (m *BatchAnnotateImagesRequest) Reset()                    { *m = BatchAnnotateImagesRequest{} }
+func (m *BatchAnnotateImagesRequest) String() string            { return proto.CompactTextString(m) }
+func (*BatchAnnotateImagesRequest) ProtoMessage()               {}
+func (*BatchAnnotateImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} }
+
+func (m *BatchAnnotateImagesRequest) GetRequests() []*AnnotateImageRequest {
+	if m != nil {
+		return m.Requests
+	}
+	return nil
+}
+
+// Response to a batch image annotation request.
+type BatchAnnotateImagesResponse struct {
+	// Individual responses to image annotation requests within the batch.
+	Responses []*AnnotateImageResponse `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"`
+}
+
+func (m *BatchAnnotateImagesResponse) Reset()                    { *m = BatchAnnotateImagesResponse{} }
+func (m *BatchAnnotateImagesResponse) String() string            { return proto.CompactTextString(m) }
+func (*BatchAnnotateImagesResponse) ProtoMessage()               {}
+func (*BatchAnnotateImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} }
+
+func (m *BatchAnnotateImagesResponse) GetResponses() []*AnnotateImageResponse {
+	if m != nil {
+		return m.Responses
+	}
+	return nil
+}
+
+// An offline file annotation request.
+type AsyncAnnotateFileRequest struct {
+	// Required. Information about the input file.
+	InputConfig *InputConfig `protobuf:"bytes,1,opt,name=input_config,json=inputConfig" json:"input_config,omitempty"`
+	// Required. Requested features.
+	Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"`
+	// Additional context that may accompany the image(s) in the file.
+	ImageContext *ImageContext `protobuf:"bytes,3,opt,name=image_context,json=imageContext" json:"image_context,omitempty"`
+	// Required. The desired output location and metadata (e.g. format).
+	OutputConfig *OutputConfig `protobuf:"bytes,4,opt,name=output_config,json=outputConfig" json:"output_config,omitempty"`
+}
+
+func (m *AsyncAnnotateFileRequest) Reset()                    { *m = AsyncAnnotateFileRequest{} }
+func (m *AsyncAnnotateFileRequest) String() string            { return proto.CompactTextString(m) }
+func (*AsyncAnnotateFileRequest) ProtoMessage()               {}
+func (*AsyncAnnotateFileRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} }
+
+func (m *AsyncAnnotateFileRequest) GetInputConfig() *InputConfig {
+	if m != nil {
+		return m.InputConfig
+	}
+	return nil
+}
+
+func (m *AsyncAnnotateFileRequest) GetFeatures() []*Feature {
+	if m != nil {
+		return m.Features
+	}
+	return nil
+}
+
+func (m *AsyncAnnotateFileRequest) GetImageContext() *ImageContext {
+	if m != nil {
+		return m.ImageContext
+	}
+	return nil
+}
+
+func (m *AsyncAnnotateFileRequest) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// The response for a single offline file annotation request.
+type AsyncAnnotateFileResponse struct {
+	// The output location and metadata from AsyncAnnotateFileRequest.
+	OutputConfig *OutputConfig `protobuf:"bytes,1,opt,name=output_config,json=outputConfig" json:"output_config,omitempty"`
+}
+
+func (m *AsyncAnnotateFileResponse) Reset()                    { *m = AsyncAnnotateFileResponse{} }
+func (m *AsyncAnnotateFileResponse) String() string            { return proto.CompactTextString(m) }
+func (*AsyncAnnotateFileResponse) ProtoMessage()               {}
+func (*AsyncAnnotateFileResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} }
+
+func (m *AsyncAnnotateFileResponse) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Multiple async file annotation requests are batched into a single service
+// call.
+type AsyncBatchAnnotateFilesRequest struct {
+	// Individual async file annotation requests for this batch.
+	Requests []*AsyncAnnotateFileRequest `protobuf:"bytes,1,rep,name=requests" json:"requests,omitempty"`
+}
+
+func (m *AsyncBatchAnnotateFilesRequest) Reset()                    { *m = AsyncBatchAnnotateFilesRequest{} }
+func (m *AsyncBatchAnnotateFilesRequest) String() string            { return proto.CompactTextString(m) }
+func (*AsyncBatchAnnotateFilesRequest) ProtoMessage()               {}
+func (*AsyncBatchAnnotateFilesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} }
+
+func (m *AsyncBatchAnnotateFilesRequest) GetRequests() []*AsyncAnnotateFileRequest {
+	if m != nil {
+		return m.Requests
+	}
+	return nil
+}
+
+// Response to an async batch file annotation request.
+type AsyncBatchAnnotateFilesResponse struct {
+	// The list of file annotation responses, one for each request in
+	// AsyncBatchAnnotateFilesRequest.
+	Responses []*AsyncAnnotateFileResponse `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"`
+}
+
+func (m *AsyncBatchAnnotateFilesResponse) Reset()         { *m = AsyncBatchAnnotateFilesResponse{} }
+func (m *AsyncBatchAnnotateFilesResponse) String() string { return proto.CompactTextString(m) }
+func (*AsyncBatchAnnotateFilesResponse) ProtoMessage()    {}
+func (*AsyncBatchAnnotateFilesResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor1, []int{25}
+}
+
+func (m *AsyncBatchAnnotateFilesResponse) GetResponses() []*AsyncAnnotateFileResponse {
+	if m != nil {
+		return m.Responses
+	}
+	return nil
+}
+
+// The desired input location and metadata.
+type InputConfig struct {
+	// The Google Cloud Storage location to read the input from.
+	GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource" json:"gcs_source,omitempty"`
+	// The type of the file. Currently only "application/pdf" and "image/tiff"
+	// are supported. Wildcards are not supported.
+	MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"`
+}
+
+func (m *InputConfig) Reset()                    { *m = InputConfig{} }
+func (m *InputConfig) String() string            { return proto.CompactTextString(m) }
+func (*InputConfig) ProtoMessage()               {}
+func (*InputConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} }
+
+func (m *InputConfig) GetGcsSource() *GcsSource {
+	if m != nil {
+		return m.GcsSource
+	}
+	return nil
+}
+
+func (m *InputConfig) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+// The desired output location and metadata.
+type OutputConfig struct {
+	// The Google Cloud Storage location to write the output(s) to.
+	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination" json:"gcs_destination,omitempty"`
+	// The max number of response protos to put into each output JSON file on GCS.
+	// The valid range is [1, 100]. If not specified, the default value is 20.
+	//
+	// For example, for one pdf file with 100 pages, 100 response protos will
+	// be generated. If `batch_size` = 20, then 5 json files each
+	// containing 20 response protos will be written under the prefix
+	// `gcs_destination`.`uri`.
+	//
+	// Currently, batch_size only applies to GcsDestination, with potential future
+	// support for other output configurations.
+	BatchSize int32 `protobuf:"varint,2,opt,name=batch_size,json=batchSize" json:"batch_size,omitempty"`
+}
+
+func (m *OutputConfig) Reset()                    { *m = OutputConfig{} }
+func (m *OutputConfig) String() string            { return proto.CompactTextString(m) }
+func (*OutputConfig) ProtoMessage()               {}
+func (*OutputConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} }
+
+func (m *OutputConfig) GetGcsDestination() *GcsDestination {
+	if m != nil {
+		return m.GcsDestination
+	}
+	return nil
+}
+
+func (m *OutputConfig) GetBatchSize() int32 {
+	if m != nil {
+		return m.BatchSize
+	}
+	return 0
+}
+
+// The Google Cloud Storage location where the input will be read from.
+type GcsSource struct {
+	// Google Cloud Storage URI for the input file. This must only be a GCS
+	// object. Wildcards are not currently supported.
+	Uri string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
+}
+
+func (m *GcsSource) Reset()                    { *m = GcsSource{} }
+func (m *GcsSource) String() string            { return proto.CompactTextString(m) }
+func (*GcsSource) ProtoMessage()               {}
+func (*GcsSource) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} }
+
+func (m *GcsSource) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+// The Google Cloud Storage location where the output will be written to.
+type GcsDestination struct {
+	// Google Cloud Storage URI where the results will be stored. Results will
+	// be in JSON format and preceded by its corresponding input URI. This field
+	// can either represent a single file, or a prefix for multiple outputs.
+	// Prefixes must end in a `/`.
+	//
+	// Examples:
+	//
+	// *    File: gs://bucket-name/filename.json
+	// *    Prefix: gs://bucket-name/prefix/here/
+	// *    File: gs://bucket-name/prefix/here
+	//
+	// If multiple outputs, each response is still AnnotateFileResponse, each of
+	// which contains some subset of the full list of AnnotateImageResponse.
+	// Multiple outputs can happen if, for example, the output JSON is too large
+	// and overflows into multiple sharded files.
+	Uri string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"`
+}
+
+func (m *GcsDestination) Reset()                    { *m = GcsDestination{} }
+func (m *GcsDestination) String() string            { return proto.CompactTextString(m) }
+func (*GcsDestination) ProtoMessage()               {}
+func (*GcsDestination) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} }
+
+func (m *GcsDestination) GetUri() string {
+	if m != nil {
+		return m.Uri
+	}
+	return ""
+}
+
+// Contains metadata for the BatchAnnotateImages operation.
+type OperationMetadata struct {
+	// Current state of the batch operation.
+	State OperationMetadata_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.vision.v1p2beta1.OperationMetadata_State" json:"state,omitempty"`
+	// The time when the batch request was received.
+	CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// The time when the operation result was last updated.
+	UpdateTime *google_protobuf3.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
+}
+
+func (m *OperationMetadata) Reset()                    { *m = OperationMetadata{} }
+func (m *OperationMetadata) String() string            { return proto.CompactTextString(m) }
+func (*OperationMetadata) ProtoMessage()               {}
+func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} }
+
+func (m *OperationMetadata) GetState() OperationMetadata_State {
+	if m != nil {
+		return m.State
+	}
+	return OperationMetadata_STATE_UNSPECIFIED
+}
+
+func (m *OperationMetadata) GetCreateTime() *google_protobuf3.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *OperationMetadata) GetUpdateTime() *google_protobuf3.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Feature)(nil), "google.cloud.vision.v1p2beta1.Feature")
+	proto.RegisterType((*ImageSource)(nil), "google.cloud.vision.v1p2beta1.ImageSource")
+	proto.RegisterType((*Image)(nil), "google.cloud.vision.v1p2beta1.Image")
+	proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.vision.v1p2beta1.FaceAnnotation")
+	proto.RegisterType((*FaceAnnotation_Landmark)(nil), "google.cloud.vision.v1p2beta1.FaceAnnotation.Landmark")
+	proto.RegisterType((*LocationInfo)(nil), "google.cloud.vision.v1p2beta1.LocationInfo")
+	proto.RegisterType((*Property)(nil), "google.cloud.vision.v1p2beta1.Property")
+	proto.RegisterType((*EntityAnnotation)(nil), "google.cloud.vision.v1p2beta1.EntityAnnotation")
+	proto.RegisterType((*SafeSearchAnnotation)(nil), "google.cloud.vision.v1p2beta1.SafeSearchAnnotation")
+	proto.RegisterType((*LatLongRect)(nil), "google.cloud.vision.v1p2beta1.LatLongRect")
+	proto.RegisterType((*ColorInfo)(nil), "google.cloud.vision.v1p2beta1.ColorInfo")
+	proto.RegisterType((*DominantColorsAnnotation)(nil), "google.cloud.vision.v1p2beta1.DominantColorsAnnotation")
+	proto.RegisterType((*ImageProperties)(nil), "google.cloud.vision.v1p2beta1.ImageProperties")
+	proto.RegisterType((*CropHint)(nil), "google.cloud.vision.v1p2beta1.CropHint")
+	proto.RegisterType((*CropHintsAnnotation)(nil), "google.cloud.vision.v1p2beta1.CropHintsAnnotation")
+	proto.RegisterType((*CropHintsParams)(nil), "google.cloud.vision.v1p2beta1.CropHintsParams")
+	proto.RegisterType((*WebDetectionParams)(nil), "google.cloud.vision.v1p2beta1.WebDetectionParams")
+	proto.RegisterType((*ImageContext)(nil), "google.cloud.vision.v1p2beta1.ImageContext")
+	proto.RegisterType((*AnnotateImageRequest)(nil), "google.cloud.vision.v1p2beta1.AnnotateImageRequest")
+	proto.RegisterType((*ImageAnnotationContext)(nil), "google.cloud.vision.v1p2beta1.ImageAnnotationContext")
+	proto.RegisterType((*AnnotateImageResponse)(nil), "google.cloud.vision.v1p2beta1.AnnotateImageResponse")
+	proto.RegisterType((*BatchAnnotateImagesRequest)(nil), "google.cloud.vision.v1p2beta1.BatchAnnotateImagesRequest")
+	proto.RegisterType((*BatchAnnotateImagesResponse)(nil), "google.cloud.vision.v1p2beta1.BatchAnnotateImagesResponse")
+	proto.RegisterType((*AsyncAnnotateFileRequest)(nil), "google.cloud.vision.v1p2beta1.AsyncAnnotateFileRequest")
+	proto.RegisterType((*AsyncAnnotateFileResponse)(nil), "google.cloud.vision.v1p2beta1.AsyncAnnotateFileResponse")
+	proto.RegisterType((*AsyncBatchAnnotateFilesRequest)(nil), "google.cloud.vision.v1p2beta1.AsyncBatchAnnotateFilesRequest")
+	proto.RegisterType((*AsyncBatchAnnotateFilesResponse)(nil), "google.cloud.vision.v1p2beta1.AsyncBatchAnnotateFilesResponse")
+	proto.RegisterType((*InputConfig)(nil), "google.cloud.vision.v1p2beta1.InputConfig")
+	proto.RegisterType((*OutputConfig)(nil), "google.cloud.vision.v1p2beta1.OutputConfig")
+	proto.RegisterType((*GcsSource)(nil), "google.cloud.vision.v1p2beta1.GcsSource")
+	proto.RegisterType((*GcsDestination)(nil), "google.cloud.vision.v1p2beta1.GcsDestination")
+	proto.RegisterType((*OperationMetadata)(nil), "google.cloud.vision.v1p2beta1.OperationMetadata")
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.Likelihood", Likelihood_name, Likelihood_value)
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.Feature_Type", Feature_Type_name, Feature_Type_value)
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.FaceAnnotation_Landmark_Type", FaceAnnotation_Landmark_Type_name, FaceAnnotation_Landmark_Type_value)
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.OperationMetadata_State", OperationMetadata_State_name, OperationMetadata_State_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for ImageAnnotator service
+
+type ImageAnnotatorClient interface {
+	// Run image detection and annotation for a batch of images.
+	BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error)
+	// Run async image detection and annotation for a list of generic files (e.g.
+	// PDF) which may contain multiple pages and multiple images per page.
+	// Progress and results can be retrieved through the
+	// `google.longrunning.Operations` interface.
+	// `Operation.metadata` contains `OperationMetadata` (metadata).
+	// `Operation.response` contains `AsyncBatchAnnotateFilesResponse` (results).
+	AsyncBatchAnnotateFiles(ctx context.Context, in *AsyncBatchAnnotateFilesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+}
+
+type imageAnnotatorClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewImageAnnotatorClient(cc *grpc.ClientConn) ImageAnnotatorClient {
+	return &imageAnnotatorClient{cc}
+}
+
+func (c *imageAnnotatorClient) BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error) {
+	out := new(BatchAnnotateImagesResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.vision.v1p2beta1.ImageAnnotator/BatchAnnotateImages", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *imageAnnotatorClient) AsyncBatchAnnotateFiles(ctx context.Context, in *AsyncBatchAnnotateFilesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.cloud.vision.v1p2beta1.ImageAnnotator/AsyncBatchAnnotateFiles", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for ImageAnnotator service
+
+type ImageAnnotatorServer interface {
+	// Run image detection and annotation for a batch of images.
+	BatchAnnotateImages(context.Context, *BatchAnnotateImagesRequest) (*BatchAnnotateImagesResponse, error)
+	// Run async image detection and annotation for a list of generic files (e.g.
+	// PDF) which may contain multiple pages and multiple images per page.
+	// Progress and results can be retrieved through the
+	// `google.longrunning.Operations` interface.
+	// `Operation.metadata` contains `OperationMetadata` (metadata).
+	// `Operation.response` contains `AsyncBatchAnnotateFilesResponse` (results).
+	AsyncBatchAnnotateFiles(context.Context, *AsyncBatchAnnotateFilesRequest) (*google_longrunning.Operation, error)
+}
+
+func RegisterImageAnnotatorServer(s *grpc.Server, srv ImageAnnotatorServer) {
+	s.RegisterService(&_ImageAnnotator_serviceDesc, srv)
+}
+
+func _ImageAnnotator_BatchAnnotateImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchAnnotateImagesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.vision.v1p2beta1.ImageAnnotator/BatchAnnotateImages",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, req.(*BatchAnnotateImagesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ImageAnnotator_AsyncBatchAnnotateFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AsyncBatchAnnotateFilesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ImageAnnotatorServer).AsyncBatchAnnotateFiles(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.vision.v1p2beta1.ImageAnnotator/AsyncBatchAnnotateFiles",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ImageAnnotatorServer).AsyncBatchAnnotateFiles(ctx, req.(*AsyncBatchAnnotateFilesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _ImageAnnotator_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.vision.v1p2beta1.ImageAnnotator",
+	HandlerType: (*ImageAnnotatorServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "BatchAnnotateImages",
+			Handler:    _ImageAnnotator_BatchAnnotateImages_Handler,
+		},
+		{
+			MethodName: "AsyncBatchAnnotateFiles",
+			Handler:    _ImageAnnotator_AsyncBatchAnnotateFiles_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/vision/v1p2beta1/image_annotator.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/vision/v1p2beta1/image_annotator.proto", fileDescriptor1)
+}
+
+var fileDescriptor1 = []byte{
+	// 2880 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcf, 0x73, 0xdb, 0xc6,
+	0xf5, 0x0f, 0xa9, 0x5f, 0xe4, 0x23, 0x25, 0x41, 0xab, 0x1f, 0xa6, 0x65, 0x2b, 0x56, 0x90, 0x6f,
+	0xbe, 0x5f, 0x7d, 0xdd, 0x94, 0x1a, 0xcb, 0x49, 0xda, 0x3a, 0xcd, 0xa4, 0x14, 0x09, 0x49, 0x1c,
+	0x53, 0x24, 0xbb, 0x84, 0xec, 0xd8, 0x93, 0x0e, 0x0a, 0x81, 0x4b, 0x1a, 0x09, 0x08, 0x20, 0x00,
+	0x68, 0x8b, 0x39, 0x66, 0xa6, 0x7f, 0x41, 0x6f, 0xbd, 0x77, 0x7a, 0x6a, 0x2f, 0xed, 0xdf, 0xd0,
+	0x7b, 0xa7, 0x87, 0x5e, 0x7a, 0x6b, 0x0f, 0x3d, 0xf6, 0xd4, 0xe9, 0xf4, 0xd4, 0xd9, 0x1f, 0x00,
+	0x17, 0x94, 0x64, 0x8a, 0xce, 0x74, 0xa6, 0x27, 0x62, 0xdf, 0xdb, 0xcf, 0xe7, 0x2d, 0xde, 0xbe,
+	0x7d, 0xfb, 0x76, 0x41, 0x78, 0xd8, 0xf7, 0xbc, 0xbe, 0x43, 0xf6, 0x2d, 0xc7, 0x1b, 0x76, 0xf7,
+	0x5f, 0xda, 0xa1, 0xed, 0xb9, 0xfb, 0x2f, 0x1f, 0xf8, 0x07, 0xe7, 0x24, 0x32, 0x1f, 0xec, 0xdb,
+	0x03, 0xb3, 0x4f, 0x0c, 0xd3, 0x75, 0xbd, 0xc8, 0x8c, 0xbc, 0xa0, 0xec, 0x07, 0x5e, 0xe4, 0xa1,
+	0x1d, 0x0e, 0x2a, 0x33, 0x50, 0x99, 0x83, 0xca, 0x09, 0x68, 0xfb, 0xae, 0xe0, 0x34, 0x7d, 0x7b,
+	0x5f, 0x40, 0x6d, 0xcf, 0x0d, 0x39, 0x78, 0xfb, 0xfd, 0xd7, 0x5b, 0xec, 0x13, 0x6f, 0x40, 0xa2,
+	0x60, 0x24, 0x7a, 0x4f, 0x19, 0x5f, 0x44, 0x2e, 0x22, 0x63, 0x6c, 0x43, 0x80, 0x1e, 0xbc, 0x1e,
+	0xf4, 0x8a, 0x9c, 0x1b, 0x5d, 0x12, 0x11, 0x4b, 0x82, 0xbc, 0x2b, 0x20, 0x8e, 0xe7, 0xf6, 0x83,
+	0xa1, 0xeb, 0xda, 0x6e, 0x7f, 0xdf, 0xf3, 0x49, 0x90, 0x1a, 0xfa, 0x3d, 0xd1, 0x89, 0xb5, 0xce,
+	0x87, 0xbd, 0xfd, 0xc8, 0x1e, 0x90, 0x30, 0x32, 0x07, 0xbe, 0xe8, 0x70, 0x4b, 0x74, 0x08, 0x7c,
+	0x6b, 0x3f, 0x8c, 0xcc, 0x68, 0x18, 0x4e, 0x28, 0xa2, 0x91, 0x4f, 0xf6, 0x2d, 0xcf, 0x89, 0x5d,
+	0xb9, 0x5d, 0x92, 0x15, 0x8e, 0x19, 0x39, 0x6e, 0x9f, 0x6b, 0xd4, 0x7f, 0x65, 0x61, 0xe9, 0x88,
+	0x98, 0xd1, 0x30, 0x20, 0xe8, 0x53, 0x98, 0xa7, 0x1d, 0x4a, 0x99, 0xdd, 0xcc, 0xde, 0xca, 0xc1,
+	0x77, 0xca, 0xaf, 0xf5, 0x7f, 0x59, 0xa0, 0xca, 0xfa, 0xc8, 0x27, 0x98, 0x01, 0xd1, 0x3d, 0x28,
+	0x0c, 0xcc, 0x0b, 0x23, 0x20, 0xe1, 0xd0, 0x89, 0xc2, 0x52, 0x76, 0x37, 0xb3, 0xb7, 0x80, 0x61,
+	0x60, 0x5e, 0x60, 0x2e, 0x41, 0x1b, 0xb0, 0x30, 0xf0, 0xba, 0xc4, 0x29, 0xcd, 0xed, 0x66, 0xf6,
+	0xf2, 0x98, 0x37, 0xd4, 0x7f, 0x64, 0x60, 0x9e, 0xb2, 0xa0, 0x0d, 0x50, 0xf4, 0x67, 0x6d, 0xcd,
+	0x38, 0x6b, 0x76, 0xda, 0x5a, 0xb5, 0x7e, 0x54, 0xd7, 0x6a, 0xca, 0x5b, 0x08, 0xc1, 0xca, 0x51,
+	0xa5, 0xaa, 0x19, 0x35, 0x4d, 0xd7, 0xaa, 0x7a, 0xbd, 0xd5, 0x54, 0x32, 0x68, 0x0b, 0x50, 0xa3,
+	0xd2, 0xac, 0x9d, 0x56, 0xf0, 0x63, 0x49, 0x9e, 0xa5, 0x7d, 0x1b, 0xad, 0xe3, 0x96, 0x24, 0x9b,
+	0x43, 0xeb, 0xb0, 0xda, 0xa8, 0x1c, 0x6a, 0x0d, 0x49, 0x38, 0x4f, 0x3b, 0xea, 0xda, 0x67, 0xba,
+	0x24, 0x5b, 0x40, 0x77, 0xe0, 0x56, 0xad, 0x55, 0x3d, 0x3b, 0xd5, 0x9a, 0xba, 0x31, 0xa1, 0x2c,
+	0xa0, 0xdb, 0xb0, 0xd9, 0xa9, 0x1c, 0x69, 0x46, 0x47, 0xab, 0xe0, 0xea, 0x89, 0xa4, 0x5a, 0xa4,
+	0xc3, 0xae, 0x9f, 0x56, 0x8e, 0x35, 0xa3, 0x8d, 0x5b, 0x6d, 0x0d, 0xeb, 0x75, 0xad, 0xa3, 0x2c,
+	0xa1, 0x15, 0x80, 0x2a, 0x6e, 0xb5, 0x8d, 0x93, 0x7a, 0x53, 0xef, 0x28, 0x79, 0xb4, 0x06, 0xcb,
+	0x4f, 0xb5, 0x43, 0x09, 0x08, 0x6a, 0x13, 0x0a, 0x75, 0x1a, 0xfa, 0x1d, 0x6f, 0x18, 0x58, 0x04,
+	0xa9, 0xb0, 0xdc, 0xb7, 0x42, 0x83, 0xaf, 0x86, 0x61, 0x60, 0xb3, 0x89, 0xc8, 0xe3, 0x42, 0xdf,
+	0x0a, 0x59, 0xb7, 0xb3, 0xc0, 0x46, 0x77, 0x20, 0x3f, 0xd6, 0x67, 0x99, 0x3e, 0x67, 0x0b, 0xa5,
+	0x4a, 0x60, 0x81, 0x75, 0x44, 0x25, 0x58, 0xb2, 0x3c, 0x37, 0x22, 0x6e, 0xc4, 0x38, 0x8a, 0x38,
+	0x6e, 0xa2, 0x43, 0x58, 0x0c, 0x99, 0x35, 0x06, 0x2e, 0x1c, 0xdc, 0x9f, 0x32, 0xcb, 0xd2, 0xf8,
+	0xb0, 0x40, 0xaa, 0xbf, 0x54, 0x60, 0xe5, 0xc8, 0xb4, 0x48, 0x25, 0x59, 0x11, 0xa8, 0x0d, 0xcb,
+	0xe7, 0xde, 0xd0, 0xed, 0xda, 0x6e, 0xdf, 0xf0, 0x3d, 0x67, 0xc4, 0xcc, 0x16, 0xa6, 0xc6, 0xd0,
+	0xa1, 0xc0, 0xb4, 0x3d, 0x67, 0x84, 0x8b, 0xe7, 0x52, 0x0b, 0x9d, 0x81, 0xd2, 0xeb, 0x1a, 0x69,
+	0xd2, 0xec, 0xec, 0xa4, 0x2b, 0xbd, 0xae, 0xdc, 0x46, 0x3a, 0xe4, 0x1d, 0xd3, 0xed, 0x0e, 0xcc,
+	0xe0, 0xcb, 0xb0, 0x34, 0xb7, 0x3b, 0xb7, 0x57, 0x38, 0xf8, 0x68, 0x5a, 0xa0, 0xa7, 0x5e, 0xb5,
+	0xdc, 0x10, 0x70, 0x3c, 0x26, 0x42, 0x3b, 0x00, 0x81, 0xe7, 0x38, 0x86, 0xe9, 0xf6, 0x1d, 0x52,
+	0x9a, 0xdf, 0xcd, 0xec, 0x65, 0x71, 0x9e, 0x4a, 0x2a, 0x54, 0x40, 0x27, 0xcd, 0x37, 0x5d, 0xa1,
+	0x5d, 0x60, 0xda, 0x9c, 0x6f, 0xba, 0x5c, 0xb9, 0x03, 0x10, 0xd9, 0x4e, 0x24, 0xb4, 0x8b, 0x1c,
+	0x4b, 0x25, 0x5c, 0xfd, 0x00, 0x36, 0x92, 0x2c, 0x62, 0x58, 0x9e, 0xdb, 0xb3, 0xbb, 0xc4, 0xb5,
+	0x48, 0x69, 0x89, 0x75, 0x5c, 0x4f, 0x74, 0xd5, 0x44, 0x85, 0x3e, 0x84, 0xad, 0x78, 0x68, 0xd4,
+	0x75, 0x12, 0x28, 0xc7, 0x40, 0x9b, 0x92, 0x56, 0x82, 0xb5, 0x61, 0xe5, 0x0b, 0x6f, 0x64, 0x38,
+	0xf6, 0x97, 0xc4, 0xb1, 0x5f, 0x78, 0x5e, 0xb7, 0x94, 0x67, 0x89, 0xe0, 0xff, 0xa7, 0xf8, 0xa7,
+	0x91, 0x00, 0xf0, 0xf2, 0x17, 0xde, 0x68, 0xdc, 0x44, 0x4f, 0x60, 0x2d, 0xf4, 0x82, 0xc0, 0x7b,
+	0x25, 0x93, 0xc2, 0xac, 0xa4, 0x0a, 0xe7, 0x90, 0x78, 0x75, 0x50, 0x4c, 0xb7, 0x4f, 0x02, 0x99,
+	0xb6, 0x30, 0x2b, 0xed, 0x2a, 0xa3, 0x90, 0x58, 0x9f, 0xc3, 0x7a, 0x38, 0x0c, 0xfc, 0xc0, 0x0e,
+	0x89, 0x4c, 0x5c, 0x9c, 0x95, 0x18, 0xc5, 0x2c, 0x12, 0xb7, 0x05, 0xa5, 0xa1, 0xdb, 0x25, 0x81,
+	0x41, 0x2e, 0x7c, 0x2f, 0x24, 0x5d, 0xd9, 0xc0, 0xf2, 0xac, 0x06, 0xb6, 0x18, 0x95, 0xc6, 0x99,
+	0x24, 0x23, 0x9f, 0x01, 0x3a, 0x77, 0x86, 0x41, 0x90, 0xa6, 0x5f, 0x99, 0x95, 0x7e, 0x4d, 0x90,
+	0xa4, 0x5d, 0xf3, 0x82, 0x98, 0xdd, 0x57, 0xc4, 0x4c, 0xf9, 0x7c, 0x75, 0x66, 0xd7, 0xc4, 0x2c,
+	0x63, 0xd9, 0xf6, 0x9f, 0x96, 0x20, 0x17, 0xaf, 0x29, 0xd4, 0x12, 0x5b, 0xd0, 0x1c, 0x63, 0xfe,
+	0xf8, 0xcd, 0x56, 0xa6, 0xbc, 0x25, 0x55, 0x21, 0xe7, 0x7b, 0xa1, 0x4d, 0xf5, 0x6c, 0x5d, 0x16,
+	0x0e, 0xfe, 0x6f, 0x0a, 0x69, 0x5b, 0x74, 0xc7, 0x09, 0x50, 0xfd, 0xdd, 0xe2, 0x78, 0x83, 0x3a,
+	0x6b, 0x3e, 0x6e, 0xb6, 0x9e, 0x36, 0x8d, 0x78, 0xfb, 0x51, 0xde, 0x42, 0x45, 0xc8, 0x35, 0xb4,
+	0x23, 0xdd, 0xd0, 0x9e, 0x69, 0x4a, 0x06, 0x2d, 0x43, 0x1e, 0xd7, 0x8f, 0x4f, 0x78, 0x33, 0x8b,
+	0x4a, 0xb0, 0xc1, 0x94, 0xad, 0x23, 0x23, 0xee, 0x74, 0x88, 0x5b, 0x4f, 0x95, 0x39, 0xba, 0xa3,
+	0xf0, 0x8e, 0x93, 0xaa, 0x79, 0xaa, 0x8a, 0x41, 0x09, 0x17, 0x53, 0x2d, 0xa0, 0x6d, 0xd8, 0x4a,
+	0x50, 0x69, 0xdd, 0x22, 0x85, 0x9d, 0xd6, 0x6b, 0xed, 0x56, 0xbd, 0xa9, 0x1b, 0x87, 0x9a, 0xfe,
+	0x54, 0xd3, 0x9a, 0x54, 0x4b, 0x77, 0xa3, 0x22, 0xe4, 0x9a, 0xad, 0x8e, 0x66, 0xe8, 0xf5, 0xb6,
+	0x92, 0xa3, 0x63, 0x3c, 0x6b, 0xb7, 0x35, 0x6c, 0x34, 0xea, 0x6d, 0x25, 0x4f, 0x9b, 0x8d, 0xd6,
+	0x53, 0xd1, 0x04, 0xba, 0x73, 0x9d, 0xb6, 0xce, 0xf4, 0x13, 0x36, 0x2a, 0xa5, 0x80, 0x56, 0xa1,
+	0xc0, 0xdb, 0xcc, 0x9e, 0x52, 0x44, 0x0a, 0x14, 0xb9, 0xa0, 0xaa, 0x35, 0x75, 0x0d, 0x2b, 0xcb,
+	0x68, 0x13, 0xd6, 0x18, 0xfd, 0x61, 0x4b, 0xd7, 0x5b, 0xa7, 0xa2, 0xe3, 0x0a, 0xf5, 0x97, 0x2c,
+	0x66, 0x7c, 0xab, 0x74, 0xf3, 0x96, 0xa5, 0x82, 0x44, 0x49, 0xde, 0x5a, 0x7b, 0xa6, 0x19, 0x7a,
+	0xab, 0x6d, 0x1c, 0xb6, 0xce, 0x9a, 0xb5, 0x0a, 0x7e, 0xa6, 0xac, 0xa5, 0x54, 0xfc, 0xad, 0xab,
+	0x2d, 0xdc, 0xd4, 0xb0, 0x82, 0xd0, 0x5d, 0x28, 0x25, 0x2a, 0xc1, 0x98, 0x00, 0xd7, 0x13, 0xf7,
+	0x53, 0x2d, 0x7b, 0x10, 0xb8, 0x8d, 0xb1, 0x23, 0x2f, 0x99, 0xdb, 0x4c, 0xeb, 0x52, 0xf6, 0xb6,
+	0xd0, 0x0e, 0xdc, 0x1e, 0xeb, 0x26, 0x0d, 0xde, 0x1a, 0xcf, 0xea, 0xa4, 0xc5, 0x12, 0xba, 0x07,
+	0x77, 0xe4, 0x79, 0x36, 0xf8, 0x14, 0xc4, 0x33, 0xa6, 0xdc, 0x46, 0xbb, 0x70, 0x37, 0x35, 0xa5,
+	0x93, 0x3d, 0xb6, 0xa9, 0x43, 0x39, 0x45, 0x05, 0x1b, 0x3a, 0xae, 0x1c, 0xd3, 0x3a, 0xe2, 0x0e,
+	0xf5, 0xbe, 0xc0, 0x49, 0xe2, 0xbb, 0xac, 0x18, 0x8a, 0xdf, 0xbd, 0x7d, 0xd6, 0xae, 0x37, 0x94,
+	0x1d, 0x5a, 0x0c, 0x8d, 0x87, 0xc7, 0x85, 0x6f, 0x53, 0xfc, 0x51, 0x0b, 0x6b, 0x27, 0x5a, 0xa5,
+	0x66, 0x1c, 0xb3, 0x5a, 0xa9, 0x51, 0x51, 0xee, 0xd1, 0x8a, 0xa5, 0x7a, 0x52, 0x6f, 0x1a, 0xc7,
+	0xcd, 0x8a, 0x7e, 0x42, 0x29, 0x77, 0xa9, 0x7d, 0x26, 0x62, 0xbc, 0xc7, 0xad, 0x26, 0x95, 0xbe,
+	0x43, 0xf1, 0x4c, 0xca, 0x99, 0x85, 0x58, 0x55, 0x7f, 0x08, 0xc5, 0x86, 0x67, 0xb1, 0xb5, 0x59,
+	0x77, 0x7b, 0x1e, 0x7a, 0x1f, 0x96, 0x1c, 0x33, 0x32, 0x1c, 0xb7, 0x2f, 0xca, 0x83, 0xf5, 0x78,
+	0x29, 0xd2, 0xa5, 0x5a, 0x6e, 0x98, 0x51, 0xc3, 0xed, 0xe3, 0x45, 0x87, 0xfd, 0xaa, 0x4f, 0x21,
+	0xd7, 0x0e, 0x68, 0x71, 0x1c, 0x8d, 0x10, 0x82, 0x79, 0xd7, 0x1c, 0x10, 0x51, 0x10, 0xb1, 0x67,
+	0x5a, 0x4b, 0xbe, 0x34, 0x9d, 0x21, 0x11, 0x55, 0x10, 0x6f, 0xa0, 0x77, 0xa0, 0x38, 0xb4, 0xdd,
+	0xe8, 0xa3, 0x0f, 0x0c, 0xae, 0xa4, 0x89, 0x64, 0x1e, 0x17, 0xb8, 0xec, 0x09, 0x15, 0xa9, 0xbf,
+	0x98, 0x03, 0x45, 0x73, 0x23, 0x3b, 0x1a, 0x49, 0x05, 0x8c, 0x02, 0x73, 0x03, 0xbb, 0x2b, 0x0c,
+	0xd0, 0x47, 0xb4, 0x05, 0x8b, 0x8e, 0x67, 0x99, 0x4e, 0x6c, 0x40, 0xb4, 0xd0, 0x2e, 0x14, 0xba,
+	0x24, 0xb4, 0x02, 0xdb, 0x67, 0x49, 0x85, 0x57, 0xb2, 0xb2, 0x88, 0x8e, 0x2c, 0xb4, 0xbc, 0x20,
+	0x2e, 0x04, 0x78, 0x03, 0xbd, 0x0d, 0x20, 0xed, 0xc4, 0xbc, 0x0a, 0x90, 0x24, 0x54, 0x1f, 0x79,
+	0xbe, 0x6d, 0x99, 0x8e, 0x1d, 0x8d, 0x44, 0x1d, 0x20, 0x49, 0x2e, 0x97, 0x58, 0x4b, 0xdf, 0xb6,
+	0xc4, 0xaa, 0x43, 0xde, 0x11, 0xf3, 0x13, 0x96, 0x72, 0xac, 0x16, 0x9a, 0xc6, 0x26, 0xcf, 0x27,
+	0x1e, 0xa3, 0xd1, 0x31, 0x80, 0xcf, 0x27, 0xcb, 0x26, 0x61, 0x29, 0xcf, 0xb8, 0xa6, 0x26, 0x5a,
+	0x31, 0xbb, 0x58, 0x82, 0xaa, 0x7f, 0xc9, 0xc2, 0x46, 0xc7, 0xec, 0x91, 0x0e, 0x31, 0x03, 0xeb,
+	0x85, 0x34, 0x41, 0x9f, 0xc2, 0x82, 0xd9, 0x1d, 0x3a, 0x91, 0x38, 0x9d, 0xcc, 0xb0, 0xe9, 0x70,
+	0x1c, 0x25, 0x08, 0x7d, 0xcf, 0xeb, 0xb1, 0xe9, 0x9c, 0x8d, 0x80, 0xe1, 0x50, 0x15, 0x96, 0x06,
+	0xa4, 0x4b, 0xa7, 0x43, 0x6c, 0x4f, 0x33, 0x50, 0xc4, 0x48, 0xa4, 0x41, 0xee, 0xa5, 0xed, 0x39,
+	0x2c, 0x06, 0xe6, 0x67, 0x65, 0x49, 0xa0, 0xe8, 0x13, 0x98, 0x0f, 0x4c, 0x6b, 0x34, 0x7b, 0x85,
+	0xc6, 0x60, 0xea, 0x2b, 0x28, 0xd0, 0xd5, 0xe6, 0xb9, 0x7d, 0x4c, 0xac, 0x08, 0x3d, 0x84, 0xc2,
+	0xc0, 0x76, 0x8d, 0x1b, 0x2c, 0xce, 0xfc, 0xc0, 0x76, 0xf9, 0x23, 0x03, 0x99, 0x17, 0x09, 0x28,
+	0xfb, 0x3a, 0x90, 0x79, 0xc1, 0x1f, 0xd5, 0x00, 0xf2, 0x55, 0x7a, 0x2e, 0x65, 0xf9, 0x60, 0x0f,
+	0x16, 0xd8, 0x21, 0x55, 0x18, 0x44, 0x29, 0x2c, 0xeb, 0x86, 0x79, 0x87, 0xf1, 0x8a, 0xca, 0xca,
+	0x2b, 0xea, 0x3d, 0x58, 0xf1, 0xed, 0x0b, 0xe2, 0x18, 0xbd, 0xc0, 0xb4, 0x92, 0xc5, 0x98, 0xc5,
+	0xcb, 0x4c, 0x7a, 0x24, 0x84, 0xea, 0xe7, 0x50, 0xaa, 0x79, 0x03, 0xdb, 0x35, 0xdd, 0x88, 0x91,
+	0x86, 0x52, 0x54, 0xfd, 0x08, 0x16, 0x99, 0x85, 0xb0, 0x94, 0x61, 0x31, 0xbb, 0x37, 0xc5, 0x93,
+	0xc9, 0xe0, 0xb1, 0xc0, 0xa9, 0x21, 0xac, 0xb2, 0x33, 0x52, 0x3b, 0x89, 0x61, 0xf4, 0x53, 0x58,
+	0xed, 0x0a, 0x83, 0x46, 0xc2, 0x4e, 0xdf, 0xf0, 0x7b, 0x53, 0xd8, 0xaf, 0x1b, 0x26, 0x5e, 0xe9,
+	0xa6, 0x34, 0xea, 0xaf, 0x33, 0x90, 0xab, 0x06, 0x9e, 0x7f, 0x62, 0xbb, 0xd1, 0x7f, 0xe0, 0xec,
+	0x95, 0x4e, 0x55, 0xd9, 0x4b, 0xa9, 0x6a, 0x1f, 0xd6, 0xed, 0x81, 0xef, 0x05, 0x91, 0xe9, 0x5a,
+	0x64, 0xd2, 0xfb, 0x68, 0xac, 0x4a, 0xa6, 0xe0, 0x27, 0xb0, 0x1e, 0x0f, 0x57, 0xf6, 0xfe, 0x11,
+	0x80, 0x15, 0x78, 0xbe, 0xf1, 0x82, 0xca, 0xc5, 0x0c, 0x4c, 0xcb, 0x1a, 0x31, 0x0f, 0xce, 0x5b,
+	0x31, 0xa3, 0xfa, 0x11, 0xac, 0x26, 0xf4, 0x6d, 0x33, 0x30, 0x07, 0x21, 0x7a, 0x17, 0x96, 0xcd,
+	0xd0, 0x27, 0x56, 0x64, 0xb0, 0xcb, 0x15, 0xce, 0x9e, 0xc5, 0x45, 0x2e, 0xc4, 0x4c, 0xa6, 0xd6,
+	0x00, 0x3d, 0x25, 0xe7, 0xb5, 0xf8, 0x08, 0x25, 0xa0, 0x65, 0x58, 0xb7, 0x5d, 0xcb, 0x19, 0x76,
+	0x89, 0xd1, 0x27, 0x5e, 0xea, 0x36, 0x23, 0x87, 0xd7, 0x84, 0xea, 0x98, 0x78, 0xe2, 0x52, 0x43,
+	0xfd, 0x7d, 0x16, 0x8a, 0x2c, 0x04, 0xaa, 0xf4, 0x8c, 0x7d, 0x11, 0xa1, 0x26, 0x2c, 0xb3, 0x55,
+	0xe1, 0xb9, 0x7d, 0x23, 0x20, 0x56, 0x24, 0x26, 0x64, 0xda, 0x51, 0x5b, 0x5a, 0x91, 0xb8, 0xe0,
+	0x48, 0xcb, 0xf3, 0x3d, 0x58, 0x71, 0x4c, 0xb7, 0x3f, 0xa4, 0xc7, 0x7e, 0xee, 0xaa, 0xec, 0xee,
+	0xdc, 0x5e, 0x1e, 0x2f, 0xc7, 0x52, 0xf6, 0xe2, 0xe8, 0x39, 0xac, 0x8d, 0xbd, 0x69, 0xf8, 0xec,
+	0x65, 0x44, 0xcd, 0x5b, 0xbe, 0xa1, 0x53, 0x85, 0xf7, 0xf0, 0xaa, 0x35, 0xe1, 0x4e, 0x0b, 0x36,
+	0x52, 0xf7, 0x59, 0x31, 0xfd, 0x22, 0xa3, 0x7f, 0x30, 0x85, 0xfe, 0xb2, 0x93, 0x31, 0x7a, 0x75,
+	0x49, 0xa6, 0xfe, 0x2d, 0x03, 0x1b, 0x22, 0x3a, 0x08, 0x73, 0x28, 0x26, 0x5f, 0x0d, 0x49, 0x18,
+	0xa1, 0x47, 0xb0, 0xc0, 0xee, 0x38, 0x84, 0x23, 0xff, 0xe7, 0x26, 0x77, 0x16, 0x98, 0x43, 0xd0,
+	0x21, 0xe4, 0x7a, 0xfc, 0xa6, 0x8a, 0xbb, 0xad, 0x70, 0xf0, 0xbf, 0x37, 0xbb, 0xd8, 0xc2, 0x09,
+	0x8e, 0xae, 0x30, 0x7e, 0xe9, 0x62, 0xf1, 0x19, 0x66, 0x91, 0x3e, 0x7d, 0x85, 0xc9, 0x41, 0x81,
+	0x8b, 0xb6, 0xd4, 0x52, 0x1f, 0xc3, 0x16, 0xd3, 0x8e, 0x17, 0x43, 0x1c, 0x3c, 0x0a, 0xcc, 0x8d,
+	0xaf, 0x7e, 0xe8, 0x23, 0xba, 0x07, 0x05, 0x9f, 0x1a, 0x77, 0x87, 0x83, 0x73, 0x12, 0xc4, 0xb7,
+	0x6a, 0x54, 0xd4, 0x64, 0x12, 0xf5, 0xcf, 0x39, 0xd8, 0x9c, 0xf0, 0x5b, 0xe8, 0x7b, 0x6e, 0x48,
+	0xd0, 0x67, 0xa0, 0xf4, 0x4c, 0x8b, 0x48, 0x77, 0x97, 0xf1, 0x32, 0xfb, 0xee, 0x4c, 0x47, 0x2b,
+	0xbc, 0xda, 0x4b, 0xb5, 0x43, 0x74, 0x0e, 0x1b, 0xf1, 0x2d, 0x42, 0x8a, 0x9d, 0xbb, 0x78, 0x7f,
+	0x0a, 0xfb, 0x64, 0xf9, 0x85, 0xd7, 0x63, 0x32, 0xd9, 0xc6, 0x73, 0x50, 0x1c, 0xaf, 0xef, 0xa5,
+	0xf8, 0xe7, 0xde, 0x8c, 0x7f, 0x95, 0x12, 0xc9, 0xdc, 0x9f, 0xc3, 0x9a, 0x63, 0x9e, 0x13, 0x27,
+	0x45, 0x3e, 0xff, 0x66, 0xe4, 0x0a, 0x63, 0x9a, 0x18, 0xf9, 0xc4, 0x9d, 0x71, 0x58, 0x5a, 0x78,
+	0xc3, 0x91, 0x53, 0x22, 0x99, 0xdb, 0x80, 0x8d, 0xde, 0xd0, 0x71, 0x8c, 0x09, 0x03, 0xec, 0x9e,
+	0x62, 0xfa, 0xbc, 0xea, 0x29, 0x36, 0x8c, 0x28, 0x55, 0x5a, 0x86, 0x6c, 0xd8, 0x0a, 0xcd, 0x1e,
+	0x31, 0x42, 0x56, 0x82, 0xc9, 0x26, 0xf8, 0x6a, 0x7f, 0x38, 0xc5, 0xc4, 0x55, 0xe5, 0x1b, 0xde,
+	0x08, 0xaf, 0x2a, 0xea, 0x5c, 0xb8, 0xc3, 0x17, 0xd6, 0xb8, 0x02, 0x94, 0xed, 0xe5, 0x6e, 0x94,
+	0xbc, 0x26, 0xb6, 0x5f, 0x7c, 0xdb, 0x4e, 0x0b, 0x24, 0x7b, 0x3d, 0xd8, 0x94, 0x52, 0xa4, 0x64,
+	0xa9, 0xc0, 0x2c, 0x1d, 0xdc, 0x34, 0x4d, 0xca, 0x91, 0x6b, 0x5d, 0xb1, 0xb1, 0xb5, 0x61, 0x39,
+	0x95, 0x2e, 0xd9, 0x1d, 0xcf, 0xf4, 0x84, 0x21, 0xe7, 0x49, 0x5c, 0x94, 0x33, 0x24, 0xad, 0x95,
+	0x48, 0x10, 0x78, 0x01, 0xab, 0xf8, 0xa4, 0x5a, 0x29, 0xf0, 0xad, 0x72, 0x87, 0x7d, 0x03, 0xc0,
+	0xbc, 0x03, 0x6a, 0x89, 0xbb, 0xdf, 0x8b, 0xa8, 0xb4, 0xc9, 0xfa, 0x7e, 0x78, 0x13, 0xff, 0x5d,
+	0x4a, 0x44, 0x38, 0x66, 0x51, 0x07, 0xb0, 0x7d, 0x68, 0x46, 0xc9, 0xbc, 0xf1, 0x14, 0x13, 0xc6,
+	0xb9, 0xb9, 0x05, 0xb9, 0x80, 0x3f, 0xc6, 0xa9, 0x65, 0x5a, 0x7c, 0x5c, 0x95, 0xe2, 0x71, 0x42,
+	0xa2, 0x7e, 0x05, 0x77, 0xae, 0x34, 0x27, 0x52, 0x1a, 0x86, 0x7c, 0x20, 0x9e, 0x63, 0x83, 0x1f,
+	0xcc, 0x66, 0x90, 0x83, 0xf1, 0x98, 0x46, 0xfd, 0x43, 0x16, 0x4a, 0x95, 0x70, 0xe4, 0x5a, 0x71,
+	0xcf, 0x23, 0xdb, 0x49, 0x36, 0x9f, 0x53, 0x28, 0xda, 0xae, 0x3f, 0x8c, 0xf8, 0x3d, 0x6a, 0xff,
+	0x86, 0x9b, 0x79, 0x9d, 0x42, 0xd8, 0xe5, 0x6a, 0x1f, 0x17, 0xec, 0x71, 0xe3, 0xbf, 0x73, 0x3f,
+	0xa2, 0x8c, 0xde, 0x30, 0x92, 0xde, 0x72, 0xfe, 0x46, 0x8c, 0x2d, 0x86, 0x11, 0xaf, 0x59, 0xf4,
+	0xa4, 0x96, 0x3a, 0x80, 0xdb, 0x57, 0xb8, 0x54, 0x4c, 0xe2, 0x25, 0x73, 0x99, 0x6f, 0x6b, 0x6e,
+	0x08, 0x6f, 0x33, 0x73, 0xa9, 0xd0, 0xa1, 0x36, 0x93, 0x40, 0xed, 0x5c, 0x0a, 0xd4, 0x69, 0xe5,
+	0xf8, 0x75, 0x21, 0x21, 0x05, 0xeb, 0x08, 0xee, 0x5d, 0x6b, 0x56, 0xbc, 0xeb, 0x93, 0xcb, 0x01,
+	0xfb, 0xfd, 0xd9, 0x0d, 0x5f, 0x0e, 0xda, 0x10, 0x0a, 0x52, 0x90, 0xd1, 0x13, 0x78, 0xdf, 0x0a,
+	0x0d, 0xf1, 0x71, 0x87, 0xfb, 0x73, 0xda, 0x69, 0xe6, 0xd8, 0x0a, 0xc5, 0xa7, 0x9d, 0x7c, 0x3f,
+	0x7e, 0x44, 0x77, 0x20, 0x3f, 0xb0, 0x07, 0xc4, 0x60, 0xf7, 0xb0, 0xe2, 0x0b, 0x13, 0x15, 0xe8,
+	0x23, 0x9f, 0xa8, 0x3f, 0xcb, 0x40, 0x51, 0x9e, 0x05, 0xf4, 0x04, 0x56, 0xa9, 0xd9, 0x2e, 0x09,
+	0x23, 0xdb, 0xe5, 0xb9, 0x34, 0x73, 0xa3, 0x8d, 0xe8, 0xd8, 0x0a, 0x6b, 0x63, 0x10, 0x5e, 0xe9,
+	0xa7, 0xda, 0x68, 0x07, 0xe0, 0x9c, 0xfa, 0xd4, 0x08, 0xed, 0xaf, 0x89, 0xa8, 0x79, 0xf2, 0x4c,
+	0xd2, 0xb1, 0xbf, 0x26, 0xea, 0x0e, 0xe4, 0x93, 0xc1, 0x5f, 0x2e, 0x99, 0x54, 0x15, 0x56, 0xd2,
+	0xfc, 0x57, 0xf4, 0xf9, 0x4d, 0x16, 0xd6, 0x5a, 0xf1, 0xb7, 0xd7, 0x53, 0x12, 0x99, 0x5d, 0x33,
+	0x32, 0x51, 0x03, 0x16, 0x42, 0xea, 0x75, 0x71, 0xcd, 0x30, 0xed, 0xdb, 0xd0, 0x25, 0x02, 0x96,
+	0x8c, 0x09, 0xe6, 0x24, 0xe8, 0x63, 0x28, 0x58, 0x01, 0x31, 0x23, 0x62, 0x44, 0xf6, 0x80, 0x5f,
+	0xfa, 0x14, 0x0e, 0xb6, 0x63, 0xce, 0xf8, 0x03, 0x6f, 0x59, 0x8f, 0x3f, 0xf0, 0x62, 0xe0, 0xdd,
+	0xa9, 0x80, 0x82, 0x87, 0x7e, 0x37, 0x01, 0x2f, 0x4e, 0x07, 0xf3, 0xee, 0x54, 0xa0, 0xfe, 0x18,
+	0x16, 0xd8, 0x48, 0xd0, 0x26, 0xac, 0x75, 0xf4, 0x8a, 0x3e, 0xf9, 0x51, 0xb5, 0x00, 0x4b, 0x55,
+	0xac, 0x55, 0x74, 0xad, 0xa6, 0x64, 0x68, 0x03, 0x9f, 0x35, 0x9b, 0xf5, 0xe6, 0xb1, 0x92, 0x45,
+	0x39, 0x98, 0xaf, 0xb5, 0x9a, 0x9a, 0x32, 0x87, 0x96, 0x21, 0x5f, 0xad, 0x34, 0xab, 0x5a, 0xa3,
+	0xa1, 0xd5, 0x94, 0xf9, 0xfb, 0x04, 0x40, 0xfa, 0x24, 0x50, 0x80, 0x25, 0x71, 0x15, 0xae, 0xbc,
+	0x85, 0xd6, 0x60, 0xf9, 0x89, 0x86, 0x9f, 0x19, 0x67, 0xcd, 0x46, 0xfd, 0xb1, 0xd6, 0x78, 0xa6,
+	0x64, 0x50, 0x11, 0x72, 0x49, 0x2b, 0x4b, 0x5b, 0xed, 0x56, 0xa7, 0x53, 0x3f, 0x6c, 0x50, 0x62,
+	0x80, 0x45, 0xa1, 0x99, 0x47, 0xab, 0x50, 0x60, 0x50, 0x21, 0x58, 0x38, 0xf8, 0x7b, 0x16, 0x56,
+	0xe4, 0x2d, 0xc9, 0x0b, 0xd0, 0x6f, 0x33, 0xb0, 0x7e, 0xc5, 0x9e, 0x80, 0x7e, 0x30, 0xed, 0x88,
+	0x7b, 0xed, 0xb6, 0xb5, 0xfd, 0xe8, 0x4d, 0xa0, 0x7c, 0xe9, 0xa9, 0xef, 0x7d, 0xf3, 0xc7, 0xbf,
+	0xfe, 0x3c, 0x7b, 0x4f, 0xdd, 0x9e, 0xfc, 0x0b, 0x43, 0xf8, 0x48, 0x94, 0x14, 0xe4, 0x51, 0xe6,
+	0x3e, 0xfa, 0x55, 0x06, 0x6e, 0x5d, 0x93, 0x1c, 0xd0, 0x27, 0x37, 0xc9, 0x00, 0xd7, 0xe6, 0xb2,
+	0xed, 0x9d, 0x18, 0x2e, 0xfd, 0x91, 0x60, 0x1c, 0x8b, 0x6a, 0x99, 0x0d, 0x70, 0x4f, 0x7d, 0x57,
+	0x1a, 0x60, 0x8f, 0xe2, 0x1f, 0x99, 0x97, 0x78, 0x1f, 0x65, 0xee, 0x1f, 0x7e, 0x93, 0x81, 0x77,
+	0x2c, 0x6f, 0xf0, 0xfa, 0x31, 0x1d, 0xae, 0xa7, 0x67, 0xa5, 0x4d, 0x03, 0xb0, 0x9d, 0x79, 0x5e,
+	0x15, 0xa8, 0xbe, 0x47, 0x8f, 0xa3, 0x65, 0x2f, 0xe8, 0xef, 0xf7, 0x89, 0xcb, 0xc2, 0x73, 0x9f,
+	0xab, 0x4c, 0xdf, 0x0e, 0xaf, 0xf9, 0x97, 0xc4, 0xc7, 0x5c, 0xf0, 0xcf, 0x4c, 0xe6, 0x7c, 0x91,
+	0x41, 0x1e, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x49, 0x4b, 0x80, 0x49, 0x2c, 0x22, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/vision/v1p2beta1/text_annotation.pb.go b/googleapis/cloud/vision/v1p2beta1/text_annotation.pb.go
new file mode 100644
index 00000000..bea7c74e
--- /dev/null
+++ b/googleapis/cloud/vision/v1p2beta1/text_annotation.pb.go
@@ -0,0 +1,593 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/vision/v1p2beta1/text_annotation.proto
+
+package vision
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Enum to denote the type of break found. New line, space etc.
+type TextAnnotation_DetectedBreak_BreakType int32
+
+const (
+	// Unknown break label type.
+	TextAnnotation_DetectedBreak_UNKNOWN TextAnnotation_DetectedBreak_BreakType = 0
+	// Regular space.
+	TextAnnotation_DetectedBreak_SPACE TextAnnotation_DetectedBreak_BreakType = 1
+	// Sure space (very wide).
+	TextAnnotation_DetectedBreak_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 2
+	// Line-wrapping break.
+	TextAnnotation_DetectedBreak_EOL_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 3
+	// End-line hyphen that is not present in text; does not co-occur with
+	// `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`.
+	TextAnnotation_DetectedBreak_HYPHEN TextAnnotation_DetectedBreak_BreakType = 4
+	// Line break that ends a paragraph.
+	TextAnnotation_DetectedBreak_LINE_BREAK TextAnnotation_DetectedBreak_BreakType = 5
+)
+
+var TextAnnotation_DetectedBreak_BreakType_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "SPACE",
+	2: "SURE_SPACE",
+	3: "EOL_SURE_SPACE",
+	4: "HYPHEN",
+	5: "LINE_BREAK",
+}
+var TextAnnotation_DetectedBreak_BreakType_value = map[string]int32{
+	"UNKNOWN":        0,
+	"SPACE":          1,
+	"SURE_SPACE":     2,
+	"EOL_SURE_SPACE": 3,
+	"HYPHEN":         4,
+	"LINE_BREAK":     5,
+}
+
+func (x TextAnnotation_DetectedBreak_BreakType) String() string {
+	return proto.EnumName(TextAnnotation_DetectedBreak_BreakType_name, int32(x))
+}
+func (TextAnnotation_DetectedBreak_BreakType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor2, []int{0, 1, 0}
+}
+
+// Type of a block (text, image etc) as identified by OCR.
+type Block_BlockType int32
+
+const (
+	// Unknown block type.
+	Block_UNKNOWN Block_BlockType = 0
+	// Regular text block.
+	Block_TEXT Block_BlockType = 1
+	// Table block.
+	Block_TABLE Block_BlockType = 2
+	// Image block.
+	Block_PICTURE Block_BlockType = 3
+	// Horizontal/vertical line box.
+	Block_RULER Block_BlockType = 4
+	// Barcode block.
+	Block_BARCODE Block_BlockType = 5
+)
+
+var Block_BlockType_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "TEXT",
+	2: "TABLE",
+	3: "PICTURE",
+	4: "RULER",
+	5: "BARCODE",
+}
+var Block_BlockType_value = map[string]int32{
+	"UNKNOWN": 0,
+	"TEXT":    1,
+	"TABLE":   2,
+	"PICTURE": 3,
+	"RULER":   4,
+	"BARCODE": 5,
+}
+
+func (x Block_BlockType) String() string {
+	return proto.EnumName(Block_BlockType_name, int32(x))
+}
+func (Block_BlockType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} }
+
+// TextAnnotation contains a structured representation of OCR extracted text.
+// The hierarchy of an OCR extracted text structure is like this:
+//     TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
+// Each structural component, starting from Page, may further have their own
+// properties. Properties describe detected languages, breaks etc.. Please refer
+// to the [TextAnnotation.TextProperty][google.cloud.vision.v1p2beta1.TextAnnotation.TextProperty] message definition below for more
+// detail.
+type TextAnnotation struct {
+	// List of pages detected by OCR.
+	Pages []*Page `protobuf:"bytes,1,rep,name=pages" json:"pages,omitempty"`
+	// UTF-8 text detected on the pages.
+	Text string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
+}
+
+func (m *TextAnnotation) Reset()                    { *m = TextAnnotation{} }
+func (m *TextAnnotation) String() string            { return proto.CompactTextString(m) }
+func (*TextAnnotation) ProtoMessage()               {}
+func (*TextAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
+
+func (m *TextAnnotation) GetPages() []*Page {
+	if m != nil {
+		return m.Pages
+	}
+	return nil
+}
+
+func (m *TextAnnotation) GetText() string {
+	if m != nil {
+		return m.Text
+	}
+	return ""
+}
+
+// Detected language for a structural component.
+type TextAnnotation_DetectedLanguage struct {
+	// The BCP-47 language code, such as "en-US" or "sr-Latn". For more
+	// information, see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+	// Confidence of detected language. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *TextAnnotation_DetectedLanguage) Reset()         { *m = TextAnnotation_DetectedLanguage{} }
+func (m *TextAnnotation_DetectedLanguage) String() string { return proto.CompactTextString(m) }
+func (*TextAnnotation_DetectedLanguage) ProtoMessage()    {}
+func (*TextAnnotation_DetectedLanguage) Descriptor() ([]byte, []int) {
+	return fileDescriptor2, []int{0, 0}
+}
+
+func (m *TextAnnotation_DetectedLanguage) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *TextAnnotation_DetectedLanguage) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// Detected start or end of a structural component.
+type TextAnnotation_DetectedBreak struct {
+	// Detected break type.
+	Type TextAnnotation_DetectedBreak_BreakType `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1p2beta1.TextAnnotation_DetectedBreak_BreakType" json:"type,omitempty"`
+	// True if break prepends the element.
+	IsPrefix bool `protobuf:"varint,2,opt,name=is_prefix,json=isPrefix" json:"is_prefix,omitempty"`
+}
+
+func (m *TextAnnotation_DetectedBreak) Reset()                    { *m = TextAnnotation_DetectedBreak{} }
+func (m *TextAnnotation_DetectedBreak) String() string            { return proto.CompactTextString(m) }
+func (*TextAnnotation_DetectedBreak) ProtoMessage()               {}
+func (*TextAnnotation_DetectedBreak) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} }
+
+func (m *TextAnnotation_DetectedBreak) GetType() TextAnnotation_DetectedBreak_BreakType {
+	if m != nil {
+		return m.Type
+	}
+	return TextAnnotation_DetectedBreak_UNKNOWN
+}
+
+func (m *TextAnnotation_DetectedBreak) GetIsPrefix() bool {
+	if m != nil {
+		return m.IsPrefix
+	}
+	return false
+}
+
+// Additional information detected on the structural component.
+type TextAnnotation_TextProperty struct {
+	// A list of detected languages together with confidence.
+	DetectedLanguages []*TextAnnotation_DetectedLanguage `protobuf:"bytes,1,rep,name=detected_languages,json=detectedLanguages" json:"detected_languages,omitempty"`
+	// Detected start or end of a text segment.
+	DetectedBreak *TextAnnotation_DetectedBreak `protobuf:"bytes,2,opt,name=detected_break,json=detectedBreak" json:"detected_break,omitempty"`
+}
+
+func (m *TextAnnotation_TextProperty) Reset()                    { *m = TextAnnotation_TextProperty{} }
+func (m *TextAnnotation_TextProperty) String() string            { return proto.CompactTextString(m) }
+func (*TextAnnotation_TextProperty) ProtoMessage()               {}
+func (*TextAnnotation_TextProperty) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 2} }
+
+func (m *TextAnnotation_TextProperty) GetDetectedLanguages() []*TextAnnotation_DetectedLanguage {
+	if m != nil {
+		return m.DetectedLanguages
+	}
+	return nil
+}
+
+func (m *TextAnnotation_TextProperty) GetDetectedBreak() *TextAnnotation_DetectedBreak {
+	if m != nil {
+		return m.DetectedBreak
+	}
+	return nil
+}
+
+// Detected page from OCR.
+type Page struct {
+	// Additional information detected on the page.
+	Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+	// Page width. For PDFs the unit is points. For images (including
+	// TIFFs) the unit is pixels.
+	Width int32 `protobuf:"varint,2,opt,name=width" json:"width,omitempty"`
+	// Page height. For PDFs the unit is points. For images (including
+	// TIFFs) the unit is pixels.
+	Height int32 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"`
+	// List of blocks of text, images etc on this page.
+	Blocks []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"`
+	// Confidence of the OCR results on the page. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *Page) Reset()                    { *m = Page{} }
+func (m *Page) String() string            { return proto.CompactTextString(m) }
+func (*Page) ProtoMessage()               {}
+func (*Page) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
+
+func (m *Page) GetProperty() *TextAnnotation_TextProperty {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+func (m *Page) GetWidth() int32 {
+	if m != nil {
+		return m.Width
+	}
+	return 0
+}
+
+func (m *Page) GetHeight() int32 {
+	if m != nil {
+		return m.Height
+	}
+	return 0
+}
+
+func (m *Page) GetBlocks() []*Block {
+	if m != nil {
+		return m.Blocks
+	}
+	return nil
+}
+
+func (m *Page) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// Logical element on the page.
+type Block struct {
+	// Additional information detected for the block.
+	Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+	// The bounding box for the block.
+	// The vertices are in the order of top-left, top-right, bottom-right,
+	// bottom-left. When a rotation of the bounding box is detected the rotation
+	// is represented as around the top-left corner as defined when the text is
+	// read in the 'natural' orientation.
+	// For example:
+	//
+	// * when the text is horizontal it might look like:
+	//
+	//         0----1
+	//         |    |
+	//         3----2
+	//
+	// * when it's rotated 180 degrees around the top-left corner it becomes:
+	//
+	//         2----3
+	//         |    |
+	//         1----0
+	//
+	//   and the vertice order will still be (0, 1, 2, 3).
+	BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
+	// List of paragraphs in this block (if this blocks is of type text).
+	Paragraphs []*Paragraph `protobuf:"bytes,3,rep,name=paragraphs" json:"paragraphs,omitempty"`
+	// Detected block type (text, image etc) for this block.
+	BlockType Block_BlockType `protobuf:"varint,4,opt,name=block_type,json=blockType,enum=google.cloud.vision.v1p2beta1.Block_BlockType" json:"block_type,omitempty"`
+	// Confidence of the OCR results on the block. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *Block) Reset()                    { *m = Block{} }
+func (m *Block) String() string            { return proto.CompactTextString(m) }
+func (*Block) ProtoMessage()               {}
+func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
+
+func (m *Block) GetProperty() *TextAnnotation_TextProperty {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+func (m *Block) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+func (m *Block) GetParagraphs() []*Paragraph {
+	if m != nil {
+		return m.Paragraphs
+	}
+	return nil
+}
+
+func (m *Block) GetBlockType() Block_BlockType {
+	if m != nil {
+		return m.BlockType
+	}
+	return Block_UNKNOWN
+}
+
+func (m *Block) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// Structural unit of text representing a number of words in certain order.
+type Paragraph struct {
+	// Additional information detected for the paragraph.
+	Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+	// The bounding box for the paragraph.
+	// The vertices are in the order of top-left, top-right, bottom-right,
+	// bottom-left. When a rotation of the bounding box is detected the rotation
+	// is represented as around the top-left corner as defined when the text is
+	// read in the 'natural' orientation.
+	// For example:
+	//   * when the text is horizontal it might look like:
+	//      0----1
+	//      |    |
+	//      3----2
+	//   * when it's rotated 180 degrees around the top-left corner it becomes:
+	//      2----3
+	//      |    |
+	//      1----0
+	//   and the vertice order will still be (0, 1, 2, 3).
+	BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
+	// List of words in this paragraph.
+	Words []*Word `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"`
+	// Confidence of the OCR results for the paragraph. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *Paragraph) Reset()                    { *m = Paragraph{} }
+func (m *Paragraph) String() string            { return proto.CompactTextString(m) }
+func (*Paragraph) ProtoMessage()               {}
+func (*Paragraph) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
+
+func (m *Paragraph) GetProperty() *TextAnnotation_TextProperty {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+func (m *Paragraph) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+func (m *Paragraph) GetWords() []*Word {
+	if m != nil {
+		return m.Words
+	}
+	return nil
+}
+
+func (m *Paragraph) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// A word representation.
+type Word struct {
+	// Additional information detected for the word.
+	Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+	// The bounding box for the word.
+	// The vertices are in the order of top-left, top-right, bottom-right,
+	// bottom-left. When a rotation of the bounding box is detected the rotation
+	// is represented as around the top-left corner as defined when the text is
+	// read in the 'natural' orientation.
+	// For example:
+	//   * when the text is horizontal it might look like:
+	//      0----1
+	//      |    |
+	//      3----2
+	//   * when it's rotated 180 degrees around the top-left corner it becomes:
+	//      2----3
+	//      |    |
+	//      1----0
+	//   and the vertice order will still be (0, 1, 2, 3).
+	BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
+	// List of symbols in the word.
+	// The order of the symbols follows the natural reading order.
+	Symbols []*Symbol `protobuf:"bytes,3,rep,name=symbols" json:"symbols,omitempty"`
+	// Confidence of the OCR results for the word. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *Word) Reset()                    { *m = Word{} }
+func (m *Word) String() string            { return proto.CompactTextString(m) }
+func (*Word) ProtoMessage()               {}
+func (*Word) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} }
+
+func (m *Word) GetProperty() *TextAnnotation_TextProperty {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+func (m *Word) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+func (m *Word) GetSymbols() []*Symbol {
+	if m != nil {
+		return m.Symbols
+	}
+	return nil
+}
+
+func (m *Word) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+// A single symbol representation.
+type Symbol struct {
+	// Additional information detected for the symbol.
+	Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
+	// The bounding box for the symbol.
+	// The vertices are in the order of top-left, top-right, bottom-right,
+	// bottom-left. When a rotation of the bounding box is detected the rotation
+	// is represented as around the top-left corner as defined when the text is
+	// read in the 'natural' orientation.
+	// For example:
+	//   * when the text is horizontal it might look like:
+	//      0----1
+	//      |    |
+	//      3----2
+	//   * when it's rotated 180 degrees around the top-left corner it becomes:
+	//      2----3
+	//      |    |
+	//      1----0
+	//   and the vertice order will still be (0, 1, 2, 3).
+	BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
+	// The actual UTF-8 representation of the symbol.
+	Text string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"`
+	// Confidence of the OCR results for the symbol. Range [0, 1].
+	Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *Symbol) Reset()                    { *m = Symbol{} }
+func (m *Symbol) String() string            { return proto.CompactTextString(m) }
+func (*Symbol) ProtoMessage()               {}
+func (*Symbol) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} }
+
+func (m *Symbol) GetProperty() *TextAnnotation_TextProperty {
+	if m != nil {
+		return m.Property
+	}
+	return nil
+}
+
+func (m *Symbol) GetBoundingBox() *BoundingPoly {
+	if m != nil {
+		return m.BoundingBox
+	}
+	return nil
+}
+
+func (m *Symbol) GetText() string {
+	if m != nil {
+		return m.Text
+	}
+	return ""
+}
+
+func (m *Symbol) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*TextAnnotation)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation")
+	proto.RegisterType((*TextAnnotation_DetectedLanguage)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.DetectedLanguage")
+	proto.RegisterType((*TextAnnotation_DetectedBreak)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.DetectedBreak")
+	proto.RegisterType((*TextAnnotation_TextProperty)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.TextProperty")
+	proto.RegisterType((*Page)(nil), "google.cloud.vision.v1p2beta1.Page")
+	proto.RegisterType((*Block)(nil), "google.cloud.vision.v1p2beta1.Block")
+	proto.RegisterType((*Paragraph)(nil), "google.cloud.vision.v1p2beta1.Paragraph")
+	proto.RegisterType((*Word)(nil), "google.cloud.vision.v1p2beta1.Word")
+	proto.RegisterType((*Symbol)(nil), "google.cloud.vision.v1p2beta1.Symbol")
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.TextAnnotation_DetectedBreak_BreakType", TextAnnotation_DetectedBreak_BreakType_name, TextAnnotation_DetectedBreak_BreakType_value)
+	proto.RegisterEnum("google.cloud.vision.v1p2beta1.Block_BlockType", Block_BlockType_name, Block_BlockType_value)
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/vision/v1p2beta1/text_annotation.proto", fileDescriptor2)
+}
+
+var fileDescriptor2 = []byte{
+	// 774 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0xd3, 0x48,
+	0x14, 0x5f, 0x27, 0x76, 0x1a, 0xbf, 0xb4, 0x91, 0x77, 0x76, 0xb5, 0x8a, 0xb2, 0xbb, 0xa8, 0xa4,
+	0x20, 0x55, 0x02, 0x39, 0x6a, 0x7a, 0x2a, 0x45, 0xa0, 0x38, 0xb5, 0xd4, 0xaa, 0x21, 0xb5, 0xa6,
+	0x09, 0xa5, 0x5c, 0x2c, 0xff, 0x99, 0x3a, 0x56, 0x13, 0x8f, 0x65, 0xbb, 0x6d, 0x72, 0xe5, 0x8a,
+	0x04, 0x5f, 0x88, 0x2f, 0x83, 0xc4, 0x09, 0xf1, 0x01, 0x38, 0x22, 0x8f, 0xed, 0x34, 0x09, 0xa2,
+	0xe6, 0x8f, 0x38, 0xf4, 0x12, 0xcd, 0x7b, 0x79, 0xbf, 0x37, 0xef, 0xf7, 0x7b, 0xf3, 0x3c, 0x03,
+	0xdb, 0x0e, 0xa5, 0xce, 0x88, 0x34, 0xad, 0x11, 0xbd, 0xb0, 0x9b, 0x97, 0x6e, 0xe8, 0x52, 0xaf,
+	0x79, 0xb9, 0xe5, 0xb7, 0x4c, 0x12, 0x19, 0x5b, 0xcd, 0x88, 0x4c, 0x22, 0xdd, 0xf0, 0x3c, 0x1a,
+	0x19, 0x91, 0x4b, 0x3d, 0xd9, 0x0f, 0x68, 0x44, 0xd1, 0xff, 0x09, 0x48, 0x66, 0x20, 0x39, 0x01,
+	0xc9, 0x33, 0x50, 0xfd, 0xbf, 0x34, 0xa7, 0xe1, 0xbb, 0xcd, 0x6b, 0x6c, 0x98, 0x80, 0xeb, 0x0f,
+	0x6f, 0xde, 0xd1, 0x21, 0x74, 0x4c, 0xa2, 0x60, 0x9a, 0x44, 0x37, 0x5e, 0x0b, 0x50, 0xed, 0x93,
+	0x49, 0xd4, 0x9e, 0xe5, 0x41, 0x3b, 0x20, 0xf8, 0x86, 0x43, 0xc2, 0x1a, 0xb7, 0x5e, 0xdc, 0xac,
+	0xb4, 0x36, 0xe4, 0x1b, 0xab, 0x91, 0x35, 0xc3, 0x21, 0x38, 0x41, 0x20, 0x04, 0x7c, 0xcc, 0xa8,
+	0x56, 0x58, 0xe7, 0x36, 0x45, 0xcc, 0xd6, 0xf5, 0x13, 0x90, 0xf6, 0x48, 0x44, 0xac, 0x88, 0xd8,
+	0x5d, 0xc3, 0x73, 0x2e, 0x0c, 0x87, 0xa0, 0x0d, 0x58, 0x1b, 0xa5, 0x6b, 0xdd, 0xa2, 0x36, 0xa9,
+	0x71, 0x0c, 0xb0, 0x9a, 0x39, 0x3b, 0xd4, 0x26, 0xe8, 0x0e, 0x80, 0x45, 0xbd, 0x33, 0xd7, 0x26,
+	0x9e, 0x45, 0x58, 0xca, 0x02, 0x9e, 0xf3, 0xd4, 0x3f, 0x71, 0xb0, 0x96, 0x65, 0x56, 0x02, 0x62,
+	0x9c, 0xa3, 0x53, 0xe0, 0xa3, 0xa9, 0x9f, 0x64, 0xab, 0xb6, 0xd4, 0x9c, 0xc2, 0x17, 0x69, 0xcb,
+	0x0b, 0xa9, 0x64, 0xf6, 0xdb, 0x9f, 0xfa, 0x04, 0xb3, 0x94, 0xe8, 0x5f, 0x10, 0xdd, 0x50, 0xf7,
+	0x03, 0x72, 0xe6, 0x4e, 0x58, 0x2d, 0x65, 0x5c, 0x76, 0x43, 0x8d, 0xd9, 0x0d, 0x0b, 0xc4, 0x59,
+	0x3c, 0xaa, 0xc0, 0xca, 0xa0, 0x77, 0xd8, 0x3b, 0x3a, 0xe9, 0x49, 0x7f, 0x20, 0x11, 0x84, 0x63,
+	0xad, 0xdd, 0x51, 0x25, 0x0e, 0x55, 0x01, 0x8e, 0x07, 0x58, 0xd5, 0x13, 0xbb, 0x80, 0x10, 0x54,
+	0xd5, 0xa3, 0xae, 0x3e, 0xe7, 0x2b, 0x22, 0x80, 0xd2, 0xfe, 0xa9, 0xb6, 0xaf, 0xf6, 0x24, 0x3e,
+	0x8e, 0xef, 0x1e, 0xf4, 0x54, 0x5d, 0xc1, 0x6a, 0xfb, 0x50, 0x12, 0xea, 0xef, 0x39, 0x58, 0x8d,
+	0x4b, 0xd6, 0x02, 0xea, 0x93, 0x20, 0x9a, 0xa2, 0x31, 0x20, 0x3b, 0xad, 0x59, 0xcf, 0x84, 0xcb,
+	0x9a, 0xf6, 0xe4, 0xe7, 0xb8, 0x67, 0x0d, 0xc2, 0x7f, 0xda, 0x4b, 0x9e, 0x10, 0x99, 0x50, 0x9d,
+	0x6d, 0x67, 0xc6, 0x6c, 0x99, 0x0c, 0x95, 0xd6, 0xee, 0x2f, 0xc8, 0x8c, 0xd7, 0xec, 0x79, 0xb3,
+	0xf1, 0x91, 0x03, 0x3e, 0x3e, 0x4f, 0xe8, 0x39, 0x94, 0xfd, 0x94, 0x27, 0xeb, 0x66, 0xa5, 0xf5,
+	0xe8, 0xc7, 0xb6, 0x99, 0x57, 0x0a, 0xcf, 0x72, 0xa1, 0xbf, 0x41, 0xb8, 0x72, 0xed, 0x68, 0xc8,
+	0x6a, 0x17, 0x70, 0x62, 0xa0, 0x7f, 0xa0, 0x34, 0x24, 0xae, 0x33, 0x8c, 0x6a, 0x45, 0xe6, 0x4e,
+	0x2d, 0xf4, 0x18, 0x4a, 0xe6, 0x88, 0x5a, 0xe7, 0x61, 0x8d, 0x67, 0xaa, 0xde, 0xcb, 0xa9, 0x41,
+	0x89, 0x83, 0x71, 0x8a, 0x59, 0x3a, 0xbf, 0xc2, 0xf2, 0xf9, 0x6d, 0xbc, 0x2b, 0x82, 0xc0, 0x10,
+	0xbf, 0x8d, 0x6d, 0x0f, 0x56, 0x4d, 0x7a, 0xe1, 0xd9, 0xae, 0xe7, 0xe8, 0x26, 0x9d, 0xa4, 0x0d,
+	0x7b, 0x90, 0xc7, 0x22, 0x85, 0x68, 0x74, 0x34, 0xc5, 0x95, 0x2c, 0x81, 0x42, 0x27, 0x68, 0x1f,
+	0xc0, 0x37, 0x02, 0xc3, 0x09, 0x0c, 0x7f, 0x18, 0xd6, 0x8a, 0x4c, 0x93, 0xcd, 0xdc, 0xcf, 0x43,
+	0x0a, 0xc0, 0x73, 0x58, 0xf4, 0x0c, 0x80, 0xa9, 0xa4, 0xb3, 0x79, 0xe5, 0xd9, 0xbc, 0xca, 0xdf,
+	0xa3, 0x6e, 0xf2, 0xcb, 0x06, 0x53, 0x34, 0xb3, 0x65, 0xae, 0xd4, 0x18, 0xc4, 0x19, 0x6e, 0x71,
+	0x40, 0xcb, 0xc0, 0xf7, 0xd5, 0x17, 0x7d, 0x89, 0x8b, 0x47, 0xb5, 0xdf, 0x56, 0xba, 0xf1, 0x68,
+	0x56, 0x60, 0x45, 0x3b, 0xe8, 0xf4, 0x07, 0x38, 0x9e, 0x49, 0x11, 0x04, 0x3c, 0xe8, 0xaa, 0x58,
+	0xe2, 0x63, 0xbf, 0xd2, 0xc6, 0x9d, 0xa3, 0x3d, 0x55, 0x12, 0x1a, 0x6f, 0x0a, 0x20, 0xce, 0xc8,
+	0xdd, 0x9a, 0x16, 0xee, 0x80, 0x70, 0x45, 0x03, 0x3b, 0xeb, 0x5e, 0xde, 0xc7, 0xfd, 0x84, 0x06,
+	0x36, 0x4e, 0x10, 0x4b, 0x22, 0xf3, 0x5f, 0x89, 0xfc, 0xb6, 0x00, 0x7c, 0x1c, 0x7f, 0x6b, 0xb4,
+	0x78, 0x0a, 0x2b, 0xe1, 0x74, 0x6c, 0xd2, 0x51, 0xa6, 0xc6, 0xfd, 0x9c, 0x54, 0xc7, 0x2c, 0x1a,
+	0x67, 0xa8, 0x5c, 0x45, 0x3e, 0x70, 0x50, 0x4a, 0x30, 0xb7, 0x46, 0x93, 0xec, 0x06, 0x2f, 0x5e,
+	0xdf, 0xe0, 0x79, 0x34, 0x95, 0x57, 0x1c, 0xdc, 0xb5, 0xe8, 0xf8, 0xe6, 0x3d, 0x95, 0xbf, 0x16,
+	0x09, 0x69, 0xf1, 0xf3, 0x43, 0xe3, 0x5e, 0x76, 0x52, 0x94, 0x43, 0xe3, 0x3b, 0x4c, 0xa6, 0x81,
+	0xd3, 0x74, 0x88, 0xc7, 0x1e, 0x27, 0xcd, 0xe4, 0x2f, 0xc3, 0x77, 0xc3, 0x6f, 0xbc, 0x66, 0x76,
+	0x13, 0xc7, 0x67, 0x8e, 0x33, 0x4b, 0x0c, 0xb2, 0xfd, 0x25, 0x00, 0x00, 0xff, 0xff, 0xce, 0x91,
+	0x71, 0x97, 0x71, 0x09, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/vision/v1p2beta1/web_detection.pb.go b/googleapis/cloud/vision/v1p2beta1/web_detection.pb.go
new file mode 100644
index 00000000..9185111e
--- /dev/null
+++ b/googleapis/cloud/vision/v1p2beta1/web_detection.pb.go
@@ -0,0 +1,278 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/vision/v1p2beta1/web_detection.proto
+
+package vision
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Relevant information for the image from the Internet.
+type WebDetection struct {
+	// Deduced entities from similar images on the Internet.
+	WebEntities []*WebDetection_WebEntity `protobuf:"bytes,1,rep,name=web_entities,json=webEntities" json:"web_entities,omitempty"`
+	// Fully matching images from the Internet.
+	// Can include resized copies of the query image.
+	FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,2,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
+	// Partial matching images from the Internet.
+	// Those images are similar enough to share some key-point features. For
+	// example an original image will likely have partial matching for its crops.
+	PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,3,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
+	// Web pages containing the matching images from the Internet.
+	PagesWithMatchingImages []*WebDetection_WebPage `protobuf:"bytes,4,rep,name=pages_with_matching_images,json=pagesWithMatchingImages" json:"pages_with_matching_images,omitempty"`
+	// The visually similar image results.
+	VisuallySimilarImages []*WebDetection_WebImage `protobuf:"bytes,6,rep,name=visually_similar_images,json=visuallySimilarImages" json:"visually_similar_images,omitempty"`
+	// The service's best guess as to the topic of the request image.
+	// Inferred from similar images on the open web.
+	BestGuessLabels []*WebDetection_WebLabel `protobuf:"bytes,8,rep,name=best_guess_labels,json=bestGuessLabels" json:"best_guess_labels,omitempty"`
+}
+
+func (m *WebDetection) Reset()                    { *m = WebDetection{} }
+func (m *WebDetection) String() string            { return proto.CompactTextString(m) }
+func (*WebDetection) ProtoMessage()               {}
+func (*WebDetection) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
+
+func (m *WebDetection) GetWebEntities() []*WebDetection_WebEntity {
+	if m != nil {
+		return m.WebEntities
+	}
+	return nil
+}
+
+func (m *WebDetection) GetFullMatchingImages() []*WebDetection_WebImage {
+	if m != nil {
+		return m.FullMatchingImages
+	}
+	return nil
+}
+
+func (m *WebDetection) GetPartialMatchingImages() []*WebDetection_WebImage {
+	if m != nil {
+		return m.PartialMatchingImages
+	}
+	return nil
+}
+
+func (m *WebDetection) GetPagesWithMatchingImages() []*WebDetection_WebPage {
+	if m != nil {
+		return m.PagesWithMatchingImages
+	}
+	return nil
+}
+
+func (m *WebDetection) GetVisuallySimilarImages() []*WebDetection_WebImage {
+	if m != nil {
+		return m.VisuallySimilarImages
+	}
+	return nil
+}
+
+func (m *WebDetection) GetBestGuessLabels() []*WebDetection_WebLabel {
+	if m != nil {
+		return m.BestGuessLabels
+	}
+	return nil
+}
+
+// Entity deduced from similar images on the Internet.
+type WebDetection_WebEntity struct {
+	// Opaque entity ID.
+	EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"`
+	// Overall relevancy score for the entity.
+	// Not normalized and not comparable across different image queries.
+	Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
+	// Canonical description of the entity, in English.
+	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
+}
+
+func (m *WebDetection_WebEntity) Reset()                    { *m = WebDetection_WebEntity{} }
+func (m *WebDetection_WebEntity) String() string            { return proto.CompactTextString(m) }
+func (*WebDetection_WebEntity) ProtoMessage()               {}
+func (*WebDetection_WebEntity) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} }
+
+func (m *WebDetection_WebEntity) GetEntityId() string {
+	if m != nil {
+		return m.EntityId
+	}
+	return ""
+}
+
+func (m *WebDetection_WebEntity) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *WebDetection_WebEntity) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+// Metadata for online images.
+type WebDetection_WebImage struct {
+	// The result image URL.
+	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	// (Deprecated) Overall relevancy score for the image.
+	Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
+}
+
+func (m *WebDetection_WebImage) Reset()                    { *m = WebDetection_WebImage{} }
+func (m *WebDetection_WebImage) String() string            { return proto.CompactTextString(m) }
+func (*WebDetection_WebImage) ProtoMessage()               {}
+func (*WebDetection_WebImage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} }
+
+func (m *WebDetection_WebImage) GetUrl() string {
+	if m != nil {
+		return m.Url
+	}
+	return ""
+}
+
+func (m *WebDetection_WebImage) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+// Metadata for web pages.
+type WebDetection_WebPage struct {
+	// The result web page URL.
+	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	// (Deprecated) Overall relevancy score for the web page.
+	Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
+	// Title for the web page, may contain HTML markups.
+	PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle" json:"page_title,omitempty"`
+	// Fully matching images on the page.
+	// Can include resized copies of the query image.
+	FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,4,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
+	// Partial matching images on the page.
+	// Those images are similar enough to share some key-point features. For
+	// example an original image will likely have partial matching for its
+	// crops.
+	PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,5,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
+}
+
+func (m *WebDetection_WebPage) Reset()                    { *m = WebDetection_WebPage{} }
+func (m *WebDetection_WebPage) String() string            { return proto.CompactTextString(m) }
+func (*WebDetection_WebPage) ProtoMessage()               {}
+func (*WebDetection_WebPage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2} }
+
+func (m *WebDetection_WebPage) GetUrl() string {
+	if m != nil {
+		return m.Url
+	}
+	return ""
+}
+
+func (m *WebDetection_WebPage) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *WebDetection_WebPage) GetPageTitle() string {
+	if m != nil {
+		return m.PageTitle
+	}
+	return ""
+}
+
+func (m *WebDetection_WebPage) GetFullMatchingImages() []*WebDetection_WebImage {
+	if m != nil {
+		return m.FullMatchingImages
+	}
+	return nil
+}
+
+func (m *WebDetection_WebPage) GetPartialMatchingImages() []*WebDetection_WebImage {
+	if m != nil {
+		return m.PartialMatchingImages
+	}
+	return nil
+}
+
+// Label to provide extra metadata for the web detection.
+type WebDetection_WebLabel struct {
+	// Label for extra metadata.
+	Label string `protobuf:"bytes,1,opt,name=label" json:"label,omitempty"`
+	// The BCP-47 language code for `label`, such as "en-US" or "sr-Latn".
+	// For more information, see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+}
+
+func (m *WebDetection_WebLabel) Reset()                    { *m = WebDetection_WebLabel{} }
+func (m *WebDetection_WebLabel) String() string            { return proto.CompactTextString(m) }
+func (*WebDetection_WebLabel) ProtoMessage()               {}
+func (*WebDetection_WebLabel) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} }
+
+func (m *WebDetection_WebLabel) GetLabel() string {
+	if m != nil {
+		return m.Label
+	}
+	return ""
+}
+
+func (m *WebDetection_WebLabel) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*WebDetection)(nil), "google.cloud.vision.v1p2beta1.WebDetection")
+	proto.RegisterType((*WebDetection_WebEntity)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebEntity")
+	proto.RegisterType((*WebDetection_WebImage)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebImage")
+	proto.RegisterType((*WebDetection_WebPage)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebPage")
+	proto.RegisterType((*WebDetection_WebLabel)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebLabel")
+}
+
+func init() { proto.RegisterFile("google/cloud/vision/v1p2beta1/web_detection.proto", fileDescriptor3) }
+
+var fileDescriptor3 = []byte{
+	// 511 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4f, 0x6f, 0xd3, 0x30,
+	0x18, 0xc6, 0x95, 0x76, 0x1b, 0x8d, 0x5b, 0x04, 0xb3, 0x86, 0x16, 0x05, 0x26, 0x15, 0xb8, 0xf4,
+	0x94, 0xa8, 0x1d, 0x9c, 0xb8, 0x6d, 0x4c, 0x68, 0x12, 0x48, 0x55, 0x40, 0x1a, 0xe2, 0x92, 0x39,
+	0x89, 0x97, 0xbe, 0x92, 0x1b, 0x47, 0xb1, 0xd3, 0xaa, 0x37, 0x4e, 0x7c, 0x14, 0x3e, 0x23, 0x47,
+	0xf4, 0xda, 0xee, 0x54, 0x51, 0x36, 0x31, 0x86, 0xb8, 0xf9, 0x7d, 0xac, 0xe7, 0xf9, 0xd9, 0xaf,
+	0xff, 0x90, 0x71, 0x29, 0x65, 0x29, 0x78, 0x9c, 0x0b, 0xd9, 0x16, 0xf1, 0x02, 0x14, 0xc8, 0x2a,
+	0x5e, 0x8c, 0xeb, 0x49, 0xc6, 0x35, 0x1b, 0xc7, 0x4b, 0x9e, 0xa5, 0x05, 0xd7, 0x3c, 0xd7, 0x20,
+	0xab, 0xa8, 0x6e, 0xa4, 0x96, 0xf4, 0xc8, 0x5a, 0x22, 0x63, 0x89, 0xac, 0x25, 0xba, 0xb6, 0x84,
+	0xcf, 0x5c, 0x22, 0xab, 0x21, 0x66, 0x55, 0x25, 0x35, 0x43, 0xaf, 0xb2, 0xe6, 0x17, 0xdf, 0x7c,
+	0x32, 0xb8, 0xe0, 0xd9, 0xdb, 0x75, 0x26, 0xfd, 0x4c, 0x06, 0x08, 0xe1, 0x95, 0x06, 0x0d, 0x5c,
+	0x05, 0xde, 0xb0, 0x3b, 0xea, 0x4f, 0x5e, 0x47, 0xb7, 0x42, 0xa2, 0xcd, 0x08, 0x2c, 0xce, 0xd0,
+	0xbe, 0x4a, 0xfa, 0x4b, 0x37, 0x04, 0xae, 0xe8, 0x15, 0x39, 0xb8, 0x6a, 0x85, 0x48, 0xe7, 0x4c,
+	0xe7, 0x33, 0xa8, 0xca, 0x14, 0xe6, 0xac, 0xe4, 0x2a, 0xe8, 0x18, 0xc2, 0xab, 0x3b, 0x12, 0xce,
+	0xd1, 0x9c, 0x50, 0x4c, 0xfc, 0xe0, 0x02, 0x8d, 0xa4, 0xa8, 0x20, 0x87, 0x35, 0x6b, 0x34, 0xb0,
+	0x6d, 0x54, 0xf7, 0x1e, 0xa8, 0x27, 0x2e, 0xf4, 0x17, 0x5a, 0x4d, 0xc2, 0x1a, 0x07, 0xe9, 0x12,
+	0xf4, 0x6c, 0x0b, 0xb8, 0x63, 0x80, 0xc7, 0x77, 0x04, 0x4e, 0x91, 0x77, 0x68, 0x62, 0x2f, 0x40,
+	0xcf, 0xb6, 0xf7, 0xb7, 0x00, 0xd5, 0x32, 0x21, 0x56, 0xa9, 0x82, 0x39, 0x08, 0xd6, 0xac, 0x71,
+	0x7b, 0xf7, 0xd9, 0xdf, 0x3a, 0xf4, 0xa3, 0xcd, 0x74, 0xb4, 0x4b, 0xb2, 0x9f, 0x71, 0xa5, 0xd3,
+	0xb2, 0xe5, 0x4a, 0xa5, 0x82, 0x65, 0x5c, 0xa8, 0xa0, 0xf7, 0x57, 0x9c, 0xf7, 0x68, 0x4e, 0x1e,
+	0x61, 0xdc, 0x3b, 0x4c, 0x33, 0xb5, 0x0a, 0x2f, 0x89, 0x7f, 0x7d, 0x63, 0xe8, 0x53, 0xe2, 0x9b,
+	0xab, 0xb7, 0x4a, 0xa1, 0x08, 0xbc, 0xa1, 0x37, 0xf2, 0x93, 0x9e, 0x15, 0xce, 0x0b, 0x7a, 0x40,
+	0x76, 0x55, 0x2e, 0x1b, 0x1e, 0x74, 0x86, 0xde, 0xa8, 0x93, 0xd8, 0x82, 0x0e, 0x49, 0xbf, 0xe0,
+	0x2a, 0x6f, 0xa0, 0x46, 0x50, 0xd0, 0x35, 0xa6, 0x4d, 0x29, 0x9c, 0x90, 0xde, 0x7a, 0x9b, 0xf4,
+	0x31, 0xe9, 0xb6, 0x8d, 0x70, 0xd1, 0x38, 0xfc, 0x7d, 0x6a, 0xf8, 0xbd, 0x43, 0x1e, 0xb8, 0xa3,
+	0xf8, 0x53, 0x0f, 0x3d, 0x22, 0x04, 0x0f, 0x2d, 0xd5, 0xa0, 0x05, 0x77, 0x0b, 0xf1, 0x51, 0xf9,
+	0x84, 0xc2, 0x8d, 0x0f, 0x60, 0xe7, 0xff, 0x3d, 0x80, 0xdd, 0x7f, 0xfe, 0x00, 0xc2, 0x33, 0xd3,
+	0x5c, 0x73, 0x96, 0xd8, 0x16, 0x73, 0x43, 0x5c, 0xab, 0x6c, 0x41, 0x5f, 0x92, 0x87, 0x82, 0x55,
+	0x65, 0x8b, 0xad, 0xc9, 0x65, 0x61, 0x9b, 0xe6, 0x27, 0x83, 0xb5, 0x78, 0x2a, 0x0b, 0x7e, 0xf2,
+	0xd5, 0x23, 0xcf, 0x73, 0x39, 0xbf, 0x7d, 0x65, 0x27, 0xfb, 0x9b, 0x4b, 0x9b, 0xe2, 0x0f, 0x36,
+	0xf5, 0xbe, 0x9c, 0x3a, 0x4f, 0x29, 0x31, 0x31, 0x92, 0x4d, 0x19, 0x97, 0xbc, 0x32, 0xff, 0x5b,
+	0x6c, 0xa7, 0x58, 0x0d, 0xea, 0x86, 0x2f, 0xf5, 0x8d, 0x15, 0x7e, 0x78, 0x5e, 0xb6, 0x67, 0x2c,
+	0xc7, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x66, 0x62, 0xaa, 0xcd, 0x84, 0x05, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/alert.pb.go b/googleapis/monitoring/v3/alert.pb.go
new file mode 100644
index 00000000..61570e2a
--- /dev/null
+++ b/googleapis/monitoring/v3/alert.pb.go
@@ -0,0 +1,904 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/monitoring/v3/alert.proto
+
+/*
+Package monitoring is a generated protocol buffer package.
+
+It is generated from these files:
+	google/monitoring/v3/alert.proto
+	google/monitoring/v3/alert_service.proto
+	google/monitoring/v3/common.proto
+	google/monitoring/v3/group.proto
+	google/monitoring/v3/group_service.proto
+	google/monitoring/v3/metric.proto
+	google/monitoring/v3/metric_service.proto
+	google/monitoring/v3/mutation_record.proto
+	google/monitoring/v3/notification.proto
+	google/monitoring/v3/notification_service.proto
+	google/monitoring/v3/uptime.proto
+	google/monitoring/v3/uptime_service.proto
+
+It has these top-level messages:
+	AlertPolicy
+	CreateAlertPolicyRequest
+	GetAlertPolicyRequest
+	ListAlertPoliciesRequest
+	ListAlertPoliciesResponse
+	UpdateAlertPolicyRequest
+	DeleteAlertPolicyRequest
+	TypedValue
+	TimeInterval
+	Aggregation
+	Group
+	ListGroupsRequest
+	ListGroupsResponse
+	GetGroupRequest
+	CreateGroupRequest
+	UpdateGroupRequest
+	DeleteGroupRequest
+	ListGroupMembersRequest
+	ListGroupMembersResponse
+	Point
+	TimeSeries
+	ListMonitoredResourceDescriptorsRequest
+	ListMonitoredResourceDescriptorsResponse
+	GetMonitoredResourceDescriptorRequest
+	ListMetricDescriptorsRequest
+	ListMetricDescriptorsResponse
+	GetMetricDescriptorRequest
+	CreateMetricDescriptorRequest
+	DeleteMetricDescriptorRequest
+	ListTimeSeriesRequest
+	ListTimeSeriesResponse
+	CreateTimeSeriesRequest
+	CreateTimeSeriesError
+	MutationRecord
+	NotificationChannelDescriptor
+	NotificationChannel
+	ListNotificationChannelDescriptorsRequest
+	ListNotificationChannelDescriptorsResponse
+	GetNotificationChannelDescriptorRequest
+	CreateNotificationChannelRequest
+	ListNotificationChannelsRequest
+	ListNotificationChannelsResponse
+	GetNotificationChannelRequest
+	UpdateNotificationChannelRequest
+	DeleteNotificationChannelRequest
+	SendNotificationChannelVerificationCodeRequest
+	GetNotificationChannelVerificationCodeRequest
+	GetNotificationChannelVerificationCodeResponse
+	VerifyNotificationChannelRequest
+	UptimeCheckConfig
+	UptimeCheckIp
+	ListUptimeCheckConfigsRequest
+	ListUptimeCheckConfigsResponse
+	GetUptimeCheckConfigRequest
+	CreateUptimeCheckConfigRequest
+	UpdateUptimeCheckConfigRequest
+	DeleteUptimeCheckConfigRequest
+	ListUptimeCheckIpsRequest
+	ListUptimeCheckIpsResponse
+*/
+package monitoring
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers"
+
+// 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
+
+// Operators for combining conditions.
+type AlertPolicy_ConditionCombinerType int32
+
+const (
+	// An unspecified combiner.
+	AlertPolicy_COMBINE_UNSPECIFIED AlertPolicy_ConditionCombinerType = 0
+	// Combine conditions using the logical `AND` operator. An
+	// incident is created only if all conditions are met
+	// simultaneously. This combiner is satisfied if all conditions are
+	// met, even if they are met on completely different resources.
+	AlertPolicy_AND AlertPolicy_ConditionCombinerType = 1
+	// Combine conditions using the logical `OR` operator. An incident
+	// is created if any of the listed conditions is met.
+	AlertPolicy_OR AlertPolicy_ConditionCombinerType = 2
+	// Combine conditions using logical `AND` operator, but unlike the regular
+	// `AND` option, an incident is created only if all conditions are met
+	// simultaneously on at least one resource.
+	AlertPolicy_AND_WITH_MATCHING_RESOURCE AlertPolicy_ConditionCombinerType = 3
+)
+
+var AlertPolicy_ConditionCombinerType_name = map[int32]string{
+	0: "COMBINE_UNSPECIFIED",
+	1: "AND",
+	2: "OR",
+	3: "AND_WITH_MATCHING_RESOURCE",
+}
+var AlertPolicy_ConditionCombinerType_value = map[string]int32{
+	"COMBINE_UNSPECIFIED": 0,
+	"AND": 1,
+	"OR":  2,
+	"AND_WITH_MATCHING_RESOURCE": 3,
+}
+
+func (x AlertPolicy_ConditionCombinerType) String() string {
+	return proto.EnumName(AlertPolicy_ConditionCombinerType_name, int32(x))
+}
+func (AlertPolicy_ConditionCombinerType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{0, 0}
+}
+
+// A description of the conditions under which some aspect of your system is
+// considered to be "unhealthy" and the ways to notify people or services about
+// this state. For an overview of alert policies, see
+// [Introduction to Alerting](/monitoring/alerts/).
+type AlertPolicy struct {
+	// Required if the policy exists. The resource name for this policy. The
+	// syntax is:
+	//
+	//     projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+	//
+	// `[ALERT_POLICY_ID]` is assigned by Stackdriver Monitoring when the policy
+	// is created.  When calling the
+	// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
+	// method, do not include the `name` field in the alerting policy passed as
+	// part of the request.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// A short name or phrase used to identify the policy in dashboards,
+	// notifications, and incidents. To avoid confusion, don't use the same
+	// display name for multiple policies in the same project. The name is
+	// limited to 512 Unicode characters.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// Documentation that is included with notifications and incidents related to
+	// this policy. Best practice is for the documentation to include information
+	// to help responders understand, mitigate, escalate, and correct the
+	// underlying problems detected by the alerting policy. Notification channels
+	// that have limited capacity might not show this documentation.
+	Documentation *AlertPolicy_Documentation `protobuf:"bytes,13,opt,name=documentation" json:"documentation,omitempty"`
+	// User-supplied key/value data to be used for organizing and
+	// identifying the `AlertPolicy` objects.
+	//
+	// The field can contain up to 64 entries. Each key and value is limited to
+	// 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
+	// values can contain only lowercase letters, numerals, underscores, and
+	// dashes. Keys must begin with a letter.
+	UserLabels map[string]string `protobuf:"bytes,16,rep,name=user_labels,json=userLabels" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// A list of conditions for the policy. The conditions are combined by AND or
+	// OR according to the `combiner` field. If the combined conditions evaluate
+	// to true, then an incident is created. A policy can have from one to six
+	// conditions.
+	Conditions []*AlertPolicy_Condition `protobuf:"bytes,12,rep,name=conditions" json:"conditions,omitempty"`
+	// How to combine the results of multiple conditions
+	// to determine if an incident should be opened.
+	Combiner AlertPolicy_ConditionCombinerType `protobuf:"varint,6,opt,name=combiner,enum=google.monitoring.v3.AlertPolicy_ConditionCombinerType" json:"combiner,omitempty"`
+	// Whether or not the policy is enabled. On write, the default interpretation
+	// if unset is that the policy is enabled. On read, clients should not make
+	// any assumption about the state if it has not been populated. The
+	// field should always be populated on List and Get operations, unless
+	// a field projection has been specified that strips it out.
+	Enabled *google_protobuf4.BoolValue `protobuf:"bytes,17,opt,name=enabled" json:"enabled,omitempty"`
+	// Identifies the notification channels to which notifications should be sent
+	// when incidents are opened or closed or when new violations occur on
+	// an already opened incident. Each element of this array corresponds to
+	// the `name` field in each of the
+	// [`NotificationChannel`][google.monitoring.v3.NotificationChannel]
+	// objects that are returned from the [`ListNotificationChannels`]
+	// [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
+	// method. The syntax of the entries in this field is:
+	//
+	//     projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
+	NotificationChannels []string `protobuf:"bytes,14,rep,name=notification_channels,json=notificationChannels" json:"notification_channels,omitempty"`
+	// A read-only record of the creation of the alerting policy. If provided
+	// in a call to create or update, this field will be ignored.
+	CreationRecord *MutationRecord `protobuf:"bytes,10,opt,name=creation_record,json=creationRecord" json:"creation_record,omitempty"`
+	// A read-only record of the most recent change to the alerting policy. If
+	// provided in a call to create or update, this field will be ignored.
+	MutationRecord *MutationRecord `protobuf:"bytes,11,opt,name=mutation_record,json=mutationRecord" json:"mutation_record,omitempty"`
+}
+
+func (m *AlertPolicy) Reset()                    { *m = AlertPolicy{} }
+func (m *AlertPolicy) String() string            { return proto.CompactTextString(m) }
+func (*AlertPolicy) ProtoMessage()               {}
+func (*AlertPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *AlertPolicy) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AlertPolicy) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *AlertPolicy) GetDocumentation() *AlertPolicy_Documentation {
+	if m != nil {
+		return m.Documentation
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetUserLabels() map[string]string {
+	if m != nil {
+		return m.UserLabels
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetConditions() []*AlertPolicy_Condition {
+	if m != nil {
+		return m.Conditions
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetCombiner() AlertPolicy_ConditionCombinerType {
+	if m != nil {
+		return m.Combiner
+	}
+	return AlertPolicy_COMBINE_UNSPECIFIED
+}
+
+func (m *AlertPolicy) GetEnabled() *google_protobuf4.BoolValue {
+	if m != nil {
+		return m.Enabled
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetNotificationChannels() []string {
+	if m != nil {
+		return m.NotificationChannels
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetCreationRecord() *MutationRecord {
+	if m != nil {
+		return m.CreationRecord
+	}
+	return nil
+}
+
+func (m *AlertPolicy) GetMutationRecord() *MutationRecord {
+	if m != nil {
+		return m.MutationRecord
+	}
+	return nil
+}
+
+// A content string and a MIME type that describes the content string's
+// format.
+type AlertPolicy_Documentation struct {
+	// The text of the documentation, interpreted according to `mime_type`.
+	// The content may not exceed 8,192 Unicode characters and may not exceed
+	// more than 10,240 bytes when encoded in UTF-8 format, whichever is
+	// smaller.
+	Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"`
+	// The format of the `content` field. Presently, only the value
+	// `"text/markdown"` is supported. See
+	// [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information.
+	MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"`
+}
+
+func (m *AlertPolicy_Documentation) Reset()                    { *m = AlertPolicy_Documentation{} }
+func (m *AlertPolicy_Documentation) String() string            { return proto.CompactTextString(m) }
+func (*AlertPolicy_Documentation) ProtoMessage()               {}
+func (*AlertPolicy_Documentation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
+
+func (m *AlertPolicy_Documentation) GetContent() string {
+	if m != nil {
+		return m.Content
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Documentation) GetMimeType() string {
+	if m != nil {
+		return m.MimeType
+	}
+	return ""
+}
+
+// A condition is a true/false test that determines when an alerting policy
+// should open an incident. If a condition evaluates to true, it signifies
+// that something is wrong.
+type AlertPolicy_Condition struct {
+	// Required if the condition exists. The unique resource name for this
+	// condition. Its syntax is:
+	//
+	//     projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
+	//
+	// `[CONDITION_ID]` is assigned by Stackdriver Monitoring when the
+	// condition is created as part of a new or updated alerting policy.
+	//
+	// When calling the
+	// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
+	// method, do not include the `name` field in the conditions of the
+	// requested alerting policy. Stackdriver Monitoring creates the
+	// condition identifiers and includes them in the new policy.
+	//
+	// When calling the
+	// [alertPolicies.update][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
+	// method to update a policy, including a condition `name` causes the
+	// existing condition to be updated. Conditions without names are added to
+	// the updated policy. Existing conditions are deleted if they are not
+	// updated.
+	//
+	// Best practice is to preserve `[CONDITION_ID]` if you make only small
+	// changes, such as those to condition thresholds, durations, or trigger
+	// values.  Otherwise, treat the change as a new condition and let the
+	// existing condition be deleted.
+	Name string `protobuf:"bytes,12,opt,name=name" json:"name,omitempty"`
+	// A short name or phrase used to identify the condition in dashboards,
+	// notifications, and incidents. To avoid confusion, don't use the same
+	// display name for multiple conditions in the same policy.
+	DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// Only one of the following condition types will be specified.
+	//
+	// Types that are valid to be assigned to Condition:
+	//	*AlertPolicy_Condition_ConditionThreshold
+	//	*AlertPolicy_Condition_ConditionAbsent
+	Condition isAlertPolicy_Condition_Condition `protobuf_oneof:"condition"`
+}
+
+func (m *AlertPolicy_Condition) Reset()                    { *m = AlertPolicy_Condition{} }
+func (m *AlertPolicy_Condition) String() string            { return proto.CompactTextString(m) }
+func (*AlertPolicy_Condition) ProtoMessage()               {}
+func (*AlertPolicy_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} }
+
+type isAlertPolicy_Condition_Condition interface {
+	isAlertPolicy_Condition_Condition()
+}
+
+type AlertPolicy_Condition_ConditionThreshold struct {
+	ConditionThreshold *AlertPolicy_Condition_MetricThreshold `protobuf:"bytes,1,opt,name=condition_threshold,json=conditionThreshold,oneof"`
+}
+type AlertPolicy_Condition_ConditionAbsent struct {
+	ConditionAbsent *AlertPolicy_Condition_MetricAbsence `protobuf:"bytes,2,opt,name=condition_absent,json=conditionAbsent,oneof"`
+}
+
+func (*AlertPolicy_Condition_ConditionThreshold) isAlertPolicy_Condition_Condition() {}
+func (*AlertPolicy_Condition_ConditionAbsent) isAlertPolicy_Condition_Condition()    {}
+
+func (m *AlertPolicy_Condition) GetCondition() isAlertPolicy_Condition_Condition {
+	if m != nil {
+		return m.Condition
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Condition) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Condition) GetConditionThreshold() *AlertPolicy_Condition_MetricThreshold {
+	if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionThreshold); ok {
+		return x.ConditionThreshold
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition) GetConditionAbsent() *AlertPolicy_Condition_MetricAbsence {
+	if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionAbsent); ok {
+		return x.ConditionAbsent
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*AlertPolicy_Condition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _AlertPolicy_Condition_OneofMarshaler, _AlertPolicy_Condition_OneofUnmarshaler, _AlertPolicy_Condition_OneofSizer, []interface{}{
+		(*AlertPolicy_Condition_ConditionThreshold)(nil),
+		(*AlertPolicy_Condition_ConditionAbsent)(nil),
+	}
+}
+
+func _AlertPolicy_Condition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*AlertPolicy_Condition)
+	// condition
+	switch x := m.Condition.(type) {
+	case *AlertPolicy_Condition_ConditionThreshold:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ConditionThreshold); err != nil {
+			return err
+		}
+	case *AlertPolicy_Condition_ConditionAbsent:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.ConditionAbsent); err != nil {
+			return err
+		}
+	case nil:
+	default:
+		return fmt.Errorf("AlertPolicy_Condition.Condition has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _AlertPolicy_Condition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*AlertPolicy_Condition)
+	switch tag {
+	case 1: // condition.condition_threshold
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(AlertPolicy_Condition_MetricThreshold)
+		err := b.DecodeMessage(msg)
+		m.Condition = &AlertPolicy_Condition_ConditionThreshold{msg}
+		return true, err
+	case 2: // condition.condition_absent
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(AlertPolicy_Condition_MetricAbsence)
+		err := b.DecodeMessage(msg)
+		m.Condition = &AlertPolicy_Condition_ConditionAbsent{msg}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _AlertPolicy_Condition_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*AlertPolicy_Condition)
+	// condition
+	switch x := m.Condition.(type) {
+	case *AlertPolicy_Condition_ConditionThreshold:
+		s := proto.Size(x.ConditionThreshold)
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *AlertPolicy_Condition_ConditionAbsent:
+		s := proto.Size(x.ConditionAbsent)
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Specifies how many time series must fail a predicate to trigger a
+// condition. If not specified, then a `{count: 1}` trigger is used.
+type AlertPolicy_Condition_Trigger struct {
+	// A type of trigger.
+	//
+	// Types that are valid to be assigned to Type:
+	//	*AlertPolicy_Condition_Trigger_Count
+	//	*AlertPolicy_Condition_Trigger_Percent
+	Type isAlertPolicy_Condition_Trigger_Type `protobuf_oneof:"type"`
+}
+
+func (m *AlertPolicy_Condition_Trigger) Reset()         { *m = AlertPolicy_Condition_Trigger{} }
+func (m *AlertPolicy_Condition_Trigger) String() string { return proto.CompactTextString(m) }
+func (*AlertPolicy_Condition_Trigger) ProtoMessage()    {}
+func (*AlertPolicy_Condition_Trigger) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{0, 1, 0}
+}
+
+type isAlertPolicy_Condition_Trigger_Type interface {
+	isAlertPolicy_Condition_Trigger_Type()
+}
+
+type AlertPolicy_Condition_Trigger_Count struct {
+	Count int32 `protobuf:"varint,1,opt,name=count,oneof"`
+}
+type AlertPolicy_Condition_Trigger_Percent struct {
+	Percent float64 `protobuf:"fixed64,2,opt,name=percent,oneof"`
+}
+
+func (*AlertPolicy_Condition_Trigger_Count) isAlertPolicy_Condition_Trigger_Type()   {}
+func (*AlertPolicy_Condition_Trigger_Percent) isAlertPolicy_Condition_Trigger_Type() {}
+
+func (m *AlertPolicy_Condition_Trigger) GetType() isAlertPolicy_Condition_Trigger_Type {
+	if m != nil {
+		return m.Type
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_Trigger) GetCount() int32 {
+	if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Count); ok {
+		return x.Count
+	}
+	return 0
+}
+
+func (m *AlertPolicy_Condition_Trigger) GetPercent() float64 {
+	if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Percent); ok {
+		return x.Percent
+	}
+	return 0
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*AlertPolicy_Condition_Trigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _AlertPolicy_Condition_Trigger_OneofMarshaler, _AlertPolicy_Condition_Trigger_OneofUnmarshaler, _AlertPolicy_Condition_Trigger_OneofSizer, []interface{}{
+		(*AlertPolicy_Condition_Trigger_Count)(nil),
+		(*AlertPolicy_Condition_Trigger_Percent)(nil),
+	}
+}
+
+func _AlertPolicy_Condition_Trigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*AlertPolicy_Condition_Trigger)
+	// type
+	switch x := m.Type.(type) {
+	case *AlertPolicy_Condition_Trigger_Count:
+		b.EncodeVarint(1<<3 | proto.WireVarint)
+		b.EncodeVarint(uint64(x.Count))
+	case *AlertPolicy_Condition_Trigger_Percent:
+		b.EncodeVarint(2<<3 | proto.WireFixed64)
+		b.EncodeFixed64(math.Float64bits(x.Percent))
+	case nil:
+	default:
+		return fmt.Errorf("AlertPolicy_Condition_Trigger.Type has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _AlertPolicy_Condition_Trigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*AlertPolicy_Condition_Trigger)
+	switch tag {
+	case 1: // type.count
+		if wire != proto.WireVarint {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeVarint()
+		m.Type = &AlertPolicy_Condition_Trigger_Count{int32(x)}
+		return true, err
+	case 2: // type.percent
+		if wire != proto.WireFixed64 {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeFixed64()
+		m.Type = &AlertPolicy_Condition_Trigger_Percent{math.Float64frombits(x)}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _AlertPolicy_Condition_Trigger_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*AlertPolicy_Condition_Trigger)
+	// type
+	switch x := m.Type.(type) {
+	case *AlertPolicy_Condition_Trigger_Count:
+		n += proto.SizeVarint(1<<3 | proto.WireVarint)
+		n += proto.SizeVarint(uint64(x.Count))
+	case *AlertPolicy_Condition_Trigger_Percent:
+		n += proto.SizeVarint(2<<3 | proto.WireFixed64)
+		n += 8
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// A condition type that compares a collection of time series
+// against a threshold.
+type AlertPolicy_Condition_MetricThreshold struct {
+	// A [filter](/monitoring/api/v3/filters) that
+	// identifies which time series should be compared with the threshold.
+	//
+	// The filter is similar to the one that is specified in the
+	// [`MetricService.ListTimeSeries`
+	// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+	// call is useful to verify the time series that will be retrieved /
+	// processed) and must specify the metric type and optionally may contain
+	// restrictions on resource type, resource labels, and metric labels.
+	// This field may not exceed 2048 Unicode characters in length.
+	Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"`
+	// Specifies the alignment of data points in individual time series as
+	// well as how to combine the retrieved time series together (such as
+	// when aggregating multiple streams on each resource to a single
+	// stream for each resource or when aggregating streams across all
+	// members of a group of resrouces). Multiple aggregations
+	// are applied in the order specified.
+	//
+	// This field is similar to the one in the
+	// [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
+	// It is advisable to use the `ListTimeSeries` method when debugging this field.
+	Aggregations []*Aggregation `protobuf:"bytes,8,rep,name=aggregations" json:"aggregations,omitempty"`
+	// A [filter](/monitoring/api/v3/filters) that identifies a time
+	// series that should be used as the denominator of a ratio that will be
+	// compared with the threshold. If a `denominator_filter` is specified,
+	// the time series specified by the `filter` field will be used as the
+	// numerator.
+	//
+	// The filter is similar to the one that is specified in the
+	// [`MetricService.ListTimeSeries`
+	// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+	// call is useful to verify the time series that will be retrieved /
+	// processed) and must specify the metric type and optionally may contain
+	// restrictions on resource type, resource labels, and metric labels.
+	// This field may not exceed 2048 Unicode characters in length.
+	DenominatorFilter string `protobuf:"bytes,9,opt,name=denominator_filter,json=denominatorFilter" json:"denominator_filter,omitempty"`
+	// Specifies the alignment of data points in individual time series
+	// selected by `denominatorFilter` as
+	// well as how to combine the retrieved time series together (such as
+	// when aggregating multiple streams on each resource to a single
+	// stream for each resource or when aggregating streams across all
+	// members of a group of resources).
+	//
+	// When computing ratios, the `aggregations` and
+	// `denominator_aggregations` fields must use the same alignment period
+	// and produce time series that have the same periodicity and labels.
+	//
+	// This field is similar to the one in the
+	// [`MetricService.ListTimeSeries`
+	// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
+	// is advisable to use the `ListTimeSeries` method when debugging this
+	// field.
+	DenominatorAggregations []*Aggregation `protobuf:"bytes,10,rep,name=denominator_aggregations,json=denominatorAggregations" json:"denominator_aggregations,omitempty"`
+	// The comparison to apply between the time series (indicated by `filter`
+	// and `aggregation`) and the threshold (indicated by `threshold_value`).
+	// The comparison is applied on each time series, with the time series
+	// on the left-hand side and the threshold on the right-hand side.
+	//
+	// Only `COMPARISON_LT` and `COMPARISON_GT` are supported currently.
+	Comparison ComparisonType `protobuf:"varint,4,opt,name=comparison,enum=google.monitoring.v3.ComparisonType" json:"comparison,omitempty"`
+	// A value against which to compare the time series.
+	ThresholdValue float64 `protobuf:"fixed64,5,opt,name=threshold_value,json=thresholdValue" json:"threshold_value,omitempty"`
+	// The amount of time that a time series must violate the
+	// threshold to be considered failing. Currently, only values
+	// that are a multiple of a minute--e.g.  60, 120, or 300
+	// seconds--are supported. If an invalid value is given, an
+	// error will be returned. The `Duration.nanos` field is
+	// ignored. When choosing a duration, it is useful to keep in mind the
+	// frequency of the underlying time series data (which may also be
+	// affected by any alignments specified in the `aggregation` field);
+	// a good duration is long enough so that a single outlier does not
+	// generate spurious alerts, but short enough that unhealthy states
+	// are detected and alerted on quickly.
+	Duration *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=duration" json:"duration,omitempty"`
+	// The number/percent of time series for which the comparison must hold
+	// in order for the condition to trigger. If unspecified, then the
+	// condition will trigger if the comparison is true for any of the
+	// time series that have been identified by `filter` and `aggregations`,
+	// or by the ratio, if `denominator_filter` and `denominator_aggregations`
+	// are specified.
+	Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,7,opt,name=trigger" json:"trigger,omitempty"`
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) Reset()         { *m = AlertPolicy_Condition_MetricThreshold{} }
+func (m *AlertPolicy_Condition_MetricThreshold) String() string { return proto.CompactTextString(m) }
+func (*AlertPolicy_Condition_MetricThreshold) ProtoMessage()    {}
+func (*AlertPolicy_Condition_MetricThreshold) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{0, 1, 1}
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetAggregations() []*Aggregation {
+	if m != nil {
+		return m.Aggregations
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorFilter() string {
+	if m != nil {
+		return m.DenominatorFilter
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorAggregations() []*Aggregation {
+	if m != nil {
+		return m.DenominatorAggregations
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetComparison() ComparisonType {
+	if m != nil {
+		return m.Comparison
+	}
+	return ComparisonType_COMPARISON_UNSPECIFIED
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetThresholdValue() float64 {
+	if m != nil {
+		return m.ThresholdValue
+	}
+	return 0
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetDuration() *google_protobuf3.Duration {
+	if m != nil {
+		return m.Duration
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_MetricThreshold) GetTrigger() *AlertPolicy_Condition_Trigger {
+	if m != nil {
+		return m.Trigger
+	}
+	return nil
+}
+
+// A condition type that checks that monitored resources
+// are reporting data. The configuration defines a metric and
+// a set of monitored resources. The predicate is considered in violation
+// when a time series for the specified metric of a monitored
+// resource does not include any data in the specified `duration`.
+type AlertPolicy_Condition_MetricAbsence struct {
+	// A [filter](/monitoring/api/v3/filters) that
+	// identifies which time series should be compared with the threshold.
+	//
+	// The filter is similar to the one that is specified in the
+	// [`MetricService.ListTimeSeries`
+	// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
+	// call is useful to verify the time series that will be retrieved /
+	// processed) and must specify the metric type and optionally may contain
+	// restrictions on resource type, resource labels, and metric labels.
+	// This field may not exceed 2048 Unicode characters in length.
+	Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+	// Specifies the alignment of data points in individual time series as
+	// well as how to combine the retrieved time series together (such as
+	// when aggregating multiple streams on each resource to a single
+	// stream for each resource or when aggregating streams across all
+	// members of a group of resrouces). Multiple aggregations
+	// are applied in the order specified.
+	//
+	// This field is similar to the
+	// one in the [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
+	// It is advisable to use the `ListTimeSeries` method when debugging this field.
+	Aggregations []*Aggregation `protobuf:"bytes,5,rep,name=aggregations" json:"aggregations,omitempty"`
+	// The amount of time that a time series must fail to report new
+	// data to be considered failing. Currently, only values that
+	// are a multiple of a minute--e.g.  60, 120, or 300
+	// seconds--are supported. If an invalid value is given, an
+	// error will be returned. The `Duration.nanos` field is
+	// ignored.
+	Duration *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=duration" json:"duration,omitempty"`
+	// The number/percent of time series for which the comparison must hold
+	// in order for the condition to trigger. If unspecified, then the
+	// condition will trigger if the comparison is true for any of the
+	// time series that have been identified by `filter` and `aggregations`.
+	Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,3,opt,name=trigger" json:"trigger,omitempty"`
+}
+
+func (m *AlertPolicy_Condition_MetricAbsence) Reset()         { *m = AlertPolicy_Condition_MetricAbsence{} }
+func (m *AlertPolicy_Condition_MetricAbsence) String() string { return proto.CompactTextString(m) }
+func (*AlertPolicy_Condition_MetricAbsence) ProtoMessage()    {}
+func (*AlertPolicy_Condition_MetricAbsence) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{0, 1, 2}
+}
+
+func (m *AlertPolicy_Condition_MetricAbsence) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *AlertPolicy_Condition_MetricAbsence) GetAggregations() []*Aggregation {
+	if m != nil {
+		return m.Aggregations
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_MetricAbsence) GetDuration() *google_protobuf3.Duration {
+	if m != nil {
+		return m.Duration
+	}
+	return nil
+}
+
+func (m *AlertPolicy_Condition_MetricAbsence) GetTrigger() *AlertPolicy_Condition_Trigger {
+	if m != nil {
+		return m.Trigger
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*AlertPolicy)(nil), "google.monitoring.v3.AlertPolicy")
+	proto.RegisterType((*AlertPolicy_Documentation)(nil), "google.monitoring.v3.AlertPolicy.Documentation")
+	proto.RegisterType((*AlertPolicy_Condition)(nil), "google.monitoring.v3.AlertPolicy.Condition")
+	proto.RegisterType((*AlertPolicy_Condition_Trigger)(nil), "google.monitoring.v3.AlertPolicy.Condition.Trigger")
+	proto.RegisterType((*AlertPolicy_Condition_MetricThreshold)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricThreshold")
+	proto.RegisterType((*AlertPolicy_Condition_MetricAbsence)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricAbsence")
+	proto.RegisterEnum("google.monitoring.v3.AlertPolicy_ConditionCombinerType", AlertPolicy_ConditionCombinerType_name, AlertPolicy_ConditionCombinerType_value)
+}
+
+func init() { proto.RegisterFile("google/monitoring/v3/alert.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 941 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xeb, 0x6e, 0xe3, 0x44,
+	0x14, 0xae, 0x93, 0xe6, 0x76, 0xd2, 0x36, 0xd9, 0xd9, 0xee, 0xae, 0x31, 0x68, 0x95, 0xae, 0x90,
+	0x88, 0x40, 0x38, 0x22, 0x01, 0x71, 0x59, 0x81, 0x94, 0x5b, 0x37, 0x11, 0x24, 0xad, 0xa6, 0x69,
+	0x91, 0x50, 0x25, 0xcb, 0x71, 0xa6, 0xae, 0x85, 0x3d, 0x63, 0x4d, 0xec, 0xa2, 0xbc, 0x0e, 0x3f,
+	0x79, 0x14, 0x1e, 0x81, 0x7f, 0xbc, 0x02, 0xe2, 0x01, 0x90, 0xc7, 0x63, 0xc7, 0xe9, 0xa6, 0xbb,
+	0x64, 0xf7, 0x5f, 0xce, 0x9c, 0xef, 0x7c, 0xe7, 0xf6, 0xcd, 0x38, 0xd0, 0xb0, 0x19, 0xb3, 0x5d,
+	0xd2, 0xf2, 0x18, 0x75, 0x02, 0xc6, 0x1d, 0x6a, 0xb7, 0xee, 0x3a, 0x2d, 0xd3, 0x25, 0x3c, 0xd0,
+	0x7d, 0xce, 0x02, 0x86, 0x8e, 0x63, 0x84, 0xbe, 0x46, 0xe8, 0x77, 0x1d, 0xed, 0x23, 0x19, 0x67,
+	0xfa, 0x4e, 0xcb, 0xa4, 0x94, 0x05, 0x66, 0xe0, 0x30, 0xba, 0x8c, 0x63, 0xb4, 0x93, 0xad, 0xac,
+	0x16, 0xf3, 0x3c, 0x46, 0x25, 0xe4, 0xd3, 0xad, 0x10, 0x2f, 0x8c, 0x89, 0x0c, 0x4e, 0x2c, 0xc6,
+	0x17, 0x12, 0xfb, 0x5c, 0x62, 0x85, 0x35, 0x0f, 0x6f, 0x5a, 0x8b, 0x90, 0x0b, 0xd8, 0x43, 0xfe,
+	0xdf, 0xb8, 0xe9, 0xfb, 0x84, 0xcb, 0x72, 0x5e, 0xfc, 0x5d, 0x83, 0x6a, 0x37, 0x6a, 0xe9, 0x9c,
+	0xb9, 0x8e, 0xb5, 0x42, 0x08, 0xf6, 0xa9, 0xe9, 0x11, 0x55, 0x69, 0x28, 0xcd, 0x0a, 0x16, 0xbf,
+	0xd1, 0x09, 0x1c, 0x2c, 0x9c, 0xa5, 0xef, 0x9a, 0x2b, 0x43, 0xf8, 0x72, 0xc2, 0x57, 0x95, 0x67,
+	0xd3, 0x08, 0x72, 0x09, 0x87, 0x0b, 0x66, 0x85, 0x1e, 0xa1, 0x71, 0x91, 0xea, 0x61, 0x43, 0x69,
+	0x56, 0xdb, 0x2d, 0x7d, 0xdb, 0x84, 0xf4, 0x4c, 0x42, 0x7d, 0x90, 0x0d, 0xc3, 0x9b, 0x2c, 0x08,
+	0x43, 0x35, 0x5c, 0x12, 0x6e, 0xb8, 0xe6, 0x9c, 0xb8, 0x4b, 0xb5, 0xde, 0xc8, 0x37, 0xab, 0xed,
+	0x2f, 0xde, 0x4e, 0x7a, 0xb9, 0x24, 0xfc, 0x27, 0x11, 0x33, 0xa4, 0x01, 0x5f, 0x61, 0x08, 0xd3,
+	0x03, 0xf4, 0x23, 0x80, 0xc5, 0xe8, 0xc2, 0x11, 0x4b, 0x51, 0x0f, 0x04, 0xe5, 0x67, 0x6f, 0xa7,
+	0xec, 0x27, 0x31, 0x38, 0x13, 0x8e, 0x2e, 0xa0, 0x6c, 0x31, 0x6f, 0xee, 0x50, 0xc2, 0xd5, 0x62,
+	0x43, 0x69, 0x1e, 0xb5, 0xbf, 0xde, 0x81, 0xaa, 0x2f, 0x43, 0x67, 0x2b, 0x9f, 0xe0, 0x94, 0x08,
+	0x7d, 0x09, 0x25, 0x42, 0xcd, 0xb9, 0x4b, 0x16, 0xea, 0x23, 0x31, 0x46, 0x2d, 0xe1, 0x4c, 0xb6,
+	0xa8, 0xf7, 0x18, 0x73, 0xaf, 0x4c, 0x37, 0x24, 0x38, 0x81, 0xa2, 0x0e, 0x3c, 0xa1, 0x2c, 0x70,
+	0x6e, 0x1c, 0x2b, 0x96, 0x89, 0x75, 0x6b, 0x52, 0x1a, 0x4d, 0xed, 0xa8, 0x91, 0x6f, 0x56, 0xf0,
+	0x71, 0xd6, 0xd9, 0x97, 0x3e, 0x34, 0x81, 0x9a, 0xc5, 0x49, 0x56, 0x57, 0x2a, 0x88, 0x94, 0x1f,
+	0x6f, 0x6f, 0x63, 0x22, 0x45, 0x88, 0x05, 0x16, 0x1f, 0x25, 0xc1, 0xb1, 0x1d, 0xd1, 0xdd, 0x93,
+	0xa9, 0x5a, 0xdd, 0x85, 0xce, 0xdb, 0xb0, 0xb5, 0x53, 0x38, 0xdc, 0x90, 0x07, 0x52, 0xa1, 0x64,
+	0x31, 0x1a, 0x10, 0x1a, 0x48, 0x81, 0x26, 0x26, 0xfa, 0x10, 0x2a, 0x9e, 0xe3, 0x11, 0x23, 0x58,
+	0xf9, 0x89, 0x40, 0xcb, 0xd1, 0x41, 0x34, 0x5a, 0xed, 0xaf, 0x32, 0x54, 0xd2, 0xa1, 0xa7, 0x12,
+	0x3f, 0x78, 0x83, 0xc4, 0x8b, 0xaf, 0x4b, 0x9c, 0xc2, 0xe3, 0x74, 0xf1, 0x46, 0x70, 0xcb, 0xc9,
+	0xf2, 0x96, 0xb9, 0x0b, 0x51, 0x47, 0xb5, 0xfd, 0x72, 0x87, 0xad, 0xeb, 0x13, 0x12, 0x70, 0xc7,
+	0x9a, 0x25, 0x14, 0xa3, 0x3d, 0x8c, 0x52, 0xe6, 0xf4, 0x14, 0xdd, 0x40, 0x7d, 0x9d, 0xcf, 0x9c,
+	0x2f, 0xa3, 0xa6, 0x73, 0x22, 0xd9, 0xb7, 0xbb, 0x27, 0xeb, 0x46, 0xf1, 0x16, 0x19, 0xed, 0xe1,
+	0x5a, 0x4a, 0x2a, 0xce, 0x02, 0x6d, 0x08, 0xa5, 0x19, 0x77, 0x6c, 0x9b, 0x70, 0xf4, 0x14, 0x0a,
+	0x16, 0x0b, 0xe5, 0x70, 0x0b, 0xa3, 0x3d, 0x1c, 0x9b, 0x48, 0x83, 0x92, 0x4f, 0xb8, 0x95, 0x54,
+	0xa0, 0x8c, 0xf6, 0x70, 0x72, 0xd0, 0x2b, 0xc2, 0x7e, 0x34, 0x73, 0xed, 0x9f, 0x3c, 0xd4, 0xee,
+	0x35, 0x86, 0x9e, 0x42, 0xf1, 0xc6, 0x71, 0x03, 0xc2, 0xe5, 0x46, 0xa4, 0x85, 0x86, 0x70, 0x60,
+	0xda, 0x36, 0x27, 0x76, 0xfc, 0x32, 0xaa, 0x65, 0x71, 0x09, 0x4f, 0x1e, 0x68, 0x6b, 0x8d, 0xc4,
+	0x1b, 0x61, 0xe8, 0x73, 0x40, 0x0b, 0x42, 0x99, 0xe7, 0x50, 0x33, 0x60, 0xdc, 0x90, 0xa9, 0x2a,
+	0x22, 0xd5, 0xa3, 0x8c, 0xe7, 0x34, 0xce, 0x7a, 0x0d, 0x6a, 0x16, 0xbe, 0x51, 0x01, 0xfc, 0xdf,
+	0x0a, 0x9e, 0x65, 0x28, 0xba, 0xd9, 0x62, 0x06, 0xd1, 0xb3, 0xe2, 0xf9, 0x26, 0x77, 0x96, 0x8c,
+	0xaa, 0xfb, 0xe2, 0x2d, 0x78, 0x40, 0xf5, 0xfd, 0x14, 0x27, 0x2e, 0x7e, 0x26, 0x0e, 0x7d, 0x02,
+	0xb5, 0x54, 0x5a, 0xc6, 0x5d, 0x74, 0xc1, 0xd5, 0x42, 0x34, 0x71, 0x7c, 0x94, 0x1e, 0x8b, 0x6b,
+	0x8f, 0xbe, 0x82, 0x72, 0xf2, 0xd2, 0x0b, 0xb1, 0x56, 0xdb, 0x1f, 0xbc, 0xf6, 0x48, 0x0c, 0x24,
+	0x00, 0xa7, 0x50, 0x34, 0x81, 0x52, 0x10, 0x2f, 0x5b, 0x2d, 0x89, 0xa8, 0xce, 0x2e, 0x5a, 0x92,
+	0x3a, 0xc1, 0x09, 0x87, 0xf6, 0xaf, 0x02, 0x87, 0x1b, 0x02, 0xcb, 0xac, 0x5c, 0x79, 0xe3, 0xca,
+	0x0b, 0xef, 0xb6, 0xf2, 0x6c, 0xdb, 0xb9, 0x77, 0x6a, 0x3b, 0xff, 0xfe, 0x6d, 0xf7, 0xaa, 0x50,
+	0x49, 0x6f, 0x91, 0xf6, 0x3d, 0xd4, 0xee, 0x7d, 0x6e, 0x50, 0x1d, 0xf2, 0xbf, 0x92, 0x95, 0x9c,
+	0x40, 0xf4, 0x13, 0x1d, 0x43, 0x21, 0xde, 0x66, 0x7c, 0x11, 0x62, 0xe3, 0xbb, 0xdc, 0x37, 0xca,
+	0x0b, 0x13, 0x9e, 0x6c, 0xfd, 0x1e, 0xa0, 0x67, 0xf0, 0xb8, 0x7f, 0x36, 0xe9, 0x8d, 0xa7, 0x43,
+	0xe3, 0x72, 0x7a, 0x71, 0x3e, 0xec, 0x8f, 0x4f, 0xc7, 0xc3, 0x41, 0x7d, 0x0f, 0x95, 0x20, 0xdf,
+	0x9d, 0x0e, 0xea, 0x0a, 0x2a, 0x42, 0xee, 0x0c, 0xd7, 0x73, 0xe8, 0x39, 0x68, 0xdd, 0xe9, 0xc0,
+	0xf8, 0x79, 0x3c, 0x1b, 0x19, 0x93, 0xee, 0xac, 0x3f, 0x1a, 0x4f, 0x5f, 0x19, 0x78, 0x78, 0x71,
+	0x76, 0x89, 0xfb, 0xc3, 0x7a, 0xbe, 0xf7, 0xbb, 0x02, 0xaa, 0xc5, 0xbc, 0xad, 0x2d, 0xf7, 0x20,
+	0xee, 0x39, 0x1a, 0xde, 0xb9, 0xf2, 0xcb, 0x0f, 0x12, 0x63, 0x33, 0xd7, 0xa4, 0xb6, 0xce, 0xb8,
+	0xdd, 0xb2, 0x09, 0x15, 0xa3, 0x6d, 0xc5, 0x2e, 0xd3, 0x77, 0x96, 0x9b, 0xff, 0x4c, 0x5e, 0xae,
+	0xad, 0x3f, 0x72, 0xda, 0xab, 0x98, 0xa0, 0xef, 0xb2, 0x70, 0xa1, 0x4f, 0xd6, 0xa9, 0xae, 0x3a,
+	0x7f, 0x26, 0xce, 0x6b, 0xe1, 0xbc, 0x5e, 0x3b, 0xaf, 0xaf, 0x3a, 0xf3, 0xa2, 0x48, 0xd2, 0xf9,
+	0x2f, 0x00, 0x00, 0xff, 0xff, 0x66, 0xb5, 0x16, 0x64, 0x76, 0x09, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/alert_service.pb.go b/googleapis/monitoring/v3/alert_service.pb.go
new file mode 100644
index 00000000..0b51478a
--- /dev/null
+++ b/googleapis/monitoring/v3/alert_service.pb.go
@@ -0,0 +1,527 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/monitoring/v3/alert_service.proto
+
+package monitoring
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// The protocol for the `CreateAlertPolicy` request.
+type CreateAlertPolicyRequest struct {
+	// The project in which to create the alerting policy. The format is
+	// `projects/[PROJECT_ID]`.
+	//
+	// Note that this field names the parent container in which the alerting
+	// policy will be written, not the name of the created policy. The alerting
+	// policy that is returned will have a name that contains a normalized
+	// representation of this name as a prefix but adds a suffix of the form
+	// `/alertPolicies/[POLICY_ID]`, identifying the policy in the container.
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	// The requested alerting policy. You should omit the `name` field in this
+	// policy. The name will be returned in the new policy, including
+	// a new [ALERT_POLICY_ID] value.
+	AlertPolicy *AlertPolicy `protobuf:"bytes,2,opt,name=alert_policy,json=alertPolicy" json:"alert_policy,omitempty"`
+}
+
+func (m *CreateAlertPolicyRequest) Reset()                    { *m = CreateAlertPolicyRequest{} }
+func (m *CreateAlertPolicyRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateAlertPolicyRequest) ProtoMessage()               {}
+func (*CreateAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+
+func (m *CreateAlertPolicyRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CreateAlertPolicyRequest) GetAlertPolicy() *AlertPolicy {
+	if m != nil {
+		return m.AlertPolicy
+	}
+	return nil
+}
+
+// The protocol for the `GetAlertPolicy` request.
+type GetAlertPolicyRequest struct {
+	// The alerting policy to retrieve. The format is
+	//
+	//     projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetAlertPolicyRequest) Reset()                    { *m = GetAlertPolicyRequest{} }
+func (m *GetAlertPolicyRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetAlertPolicyRequest) ProtoMessage()               {}
+func (*GetAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
+
+func (m *GetAlertPolicyRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The protocol for the `ListAlertPolicies` request.
+type ListAlertPoliciesRequest struct {
+	// The project whose alert policies are to be listed. The format is
+	//
+	//     projects/[PROJECT_ID]
+	//
+	// Note that this field names the parent container in which the alerting
+	// policies to be listed are stored. To retrieve a single alerting policy
+	// by name, use the
+	// [GetAlertPolicy][google.monitoring.v3.AlertPolicyService.GetAlertPolicy]
+	// operation, instead.
+	Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
+	// If provided, this field specifies the criteria that must be met by
+	// alert policies to be included in the response.
+	//
+	// For more details, see [sorting and
+	// filtering](/monitoring/api/v3/sorting-and-filtering).
+	Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"`
+	// A comma-separated list of fields by which to sort the result. Supports
+	// the same set of field references as the `filter` field. Entries can be
+	// prefixed with a minus sign to sort by the field in descending order.
+	//
+	// For more details, see [sorting and
+	// filtering](/monitoring/api/v3/sorting-and-filtering).
+	OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy" json:"order_by,omitempty"`
+	// The maximum number of results to return in a single response.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// If this field is not empty then it must contain the `nextPageToken` value
+	// returned by a previous call to this method.  Using this field causes the
+	// method to return more results from the previous method call.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListAlertPoliciesRequest) Reset()                    { *m = ListAlertPoliciesRequest{} }
+func (m *ListAlertPoliciesRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListAlertPoliciesRequest) ProtoMessage()               {}
+func (*ListAlertPoliciesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
+
+func (m *ListAlertPoliciesRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ListAlertPoliciesRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListAlertPoliciesRequest) GetOrderBy() string {
+	if m != nil {
+		return m.OrderBy
+	}
+	return ""
+}
+
+func (m *ListAlertPoliciesRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListAlertPoliciesRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// The protocol for the `ListAlertPolicies` response.
+type ListAlertPoliciesResponse struct {
+	// The returned alert policies.
+	AlertPolicies []*AlertPolicy `protobuf:"bytes,3,rep,name=alert_policies,json=alertPolicies" json:"alert_policies,omitempty"`
+	// If there might be more results than were returned, then this field is set
+	// to a non-empty value. To see the additional results,
+	// use that value as `pageToken` in the next call to this method.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListAlertPoliciesResponse) Reset()                    { *m = ListAlertPoliciesResponse{} }
+func (m *ListAlertPoliciesResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListAlertPoliciesResponse) ProtoMessage()               {}
+func (*ListAlertPoliciesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
+
+func (m *ListAlertPoliciesResponse) GetAlertPolicies() []*AlertPolicy {
+	if m != nil {
+		return m.AlertPolicies
+	}
+	return nil
+}
+
+func (m *ListAlertPoliciesResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// The protocol for the `UpdateAlertPolicy` request.
+type UpdateAlertPolicyRequest struct {
+	// Optional. A list of alerting policy field names. If this field is not
+	// empty, each listed field in the existing alerting policy is set to the
+	// value of the corresponding field in the supplied policy (`alert_policy`),
+	// or to the field's default value if the field is not in the supplied
+	// alerting policy.  Fields not listed retain their previous value.
+	//
+	// Examples of valid field masks include `display_name`, `documentation`,
+	// `documentation.content`, `documentation.mime_type`, `user_labels`,
+	// `user_label.nameofkey`, `enabled`, `conditions`, `combiner`, etc.
+	//
+	// If this field is empty, then the supplied alerting policy replaces the
+	// existing policy. It is the same as deleting the existing policy and
+	// adding the supplied policy, except for the following:
+	//
+	// +   The new policy will have the same `[ALERT_POLICY_ID]` as the former
+	//     policy. This gives you continuity with the former policy in your
+	//     notifications and incidents.
+	// +   Conditions in the new policy will keep their former `[CONDITION_ID]` if
+	//     the supplied condition includes the `name` field with that
+	//     `[CONDITION_ID]`. If the supplied condition omits the `name` field,
+	//     then a new `[CONDITION_ID]` is created.
+	UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
+	// Required. The updated alerting policy or the updated values for the
+	// fields listed in `update_mask`.
+	// If `update_mask` is not empty, any fields in this policy that are
+	// not in `update_mask` are ignored.
+	AlertPolicy *AlertPolicy `protobuf:"bytes,3,opt,name=alert_policy,json=alertPolicy" json:"alert_policy,omitempty"`
+}
+
+func (m *UpdateAlertPolicyRequest) Reset()                    { *m = UpdateAlertPolicyRequest{} }
+func (m *UpdateAlertPolicyRequest) String() string            { return proto.CompactTextString(m) }
+func (*UpdateAlertPolicyRequest) ProtoMessage()               {}
+func (*UpdateAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
+
+func (m *UpdateAlertPolicyRequest) GetUpdateMask() *google_protobuf6.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *UpdateAlertPolicyRequest) GetAlertPolicy() *AlertPolicy {
+	if m != nil {
+		return m.AlertPolicy
+	}
+	return nil
+}
+
+// The protocol for the `DeleteAlertPolicy` request.
+type DeleteAlertPolicyRequest struct {
+	// The alerting policy to delete. The format is:
+	//
+	//     projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
+	//
+	// For more information, see [AlertPolicy][google.monitoring.v3.AlertPolicy].
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteAlertPolicyRequest) Reset()                    { *m = DeleteAlertPolicyRequest{} }
+func (m *DeleteAlertPolicyRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteAlertPolicyRequest) ProtoMessage()               {}
+func (*DeleteAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
+
+func (m *DeleteAlertPolicyRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*CreateAlertPolicyRequest)(nil), "google.monitoring.v3.CreateAlertPolicyRequest")
+	proto.RegisterType((*GetAlertPolicyRequest)(nil), "google.monitoring.v3.GetAlertPolicyRequest")
+	proto.RegisterType((*ListAlertPoliciesRequest)(nil), "google.monitoring.v3.ListAlertPoliciesRequest")
+	proto.RegisterType((*ListAlertPoliciesResponse)(nil), "google.monitoring.v3.ListAlertPoliciesResponse")
+	proto.RegisterType((*UpdateAlertPolicyRequest)(nil), "google.monitoring.v3.UpdateAlertPolicyRequest")
+	proto.RegisterType((*DeleteAlertPolicyRequest)(nil), "google.monitoring.v3.DeleteAlertPolicyRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for AlertPolicyService service
+
+type AlertPolicyServiceClient interface {
+	// Lists the existing alerting policies for the project.
+	ListAlertPolicies(ctx context.Context, in *ListAlertPoliciesRequest, opts ...grpc.CallOption) (*ListAlertPoliciesResponse, error)
+	// Gets a single alerting policy.
+	GetAlertPolicy(ctx context.Context, in *GetAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
+	// Creates a new alerting policy.
+	CreateAlertPolicy(ctx context.Context, in *CreateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
+	// Deletes an alerting policy.
+	DeleteAlertPolicy(ctx context.Context, in *DeleteAlertPolicyRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
+	// Updates an alerting policy. You can either replace the entire policy with
+	// a new one or replace only certain fields in the current alerting policy by
+	// specifying the fields to be updated via `updateMask`. Returns the
+	// updated alerting policy.
+	UpdateAlertPolicy(ctx context.Context, in *UpdateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
+}
+
+type alertPolicyServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewAlertPolicyServiceClient(cc *grpc.ClientConn) AlertPolicyServiceClient {
+	return &alertPolicyServiceClient{cc}
+}
+
+func (c *alertPolicyServiceClient) ListAlertPolicies(ctx context.Context, in *ListAlertPoliciesRequest, opts ...grpc.CallOption) (*ListAlertPoliciesResponse, error) {
+	out := new(ListAlertPoliciesResponse)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/ListAlertPolicies", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *alertPolicyServiceClient) GetAlertPolicy(ctx context.Context, in *GetAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
+	out := new(AlertPolicy)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/GetAlertPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *alertPolicyServiceClient) CreateAlertPolicy(ctx context.Context, in *CreateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
+	out := new(AlertPolicy)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/CreateAlertPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *alertPolicyServiceClient) DeleteAlertPolicy(ctx context.Context, in *DeleteAlertPolicyRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/DeleteAlertPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *alertPolicyServiceClient) UpdateAlertPolicy(ctx context.Context, in *UpdateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
+	out := new(AlertPolicy)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/UpdateAlertPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for AlertPolicyService service
+
+type AlertPolicyServiceServer interface {
+	// Lists the existing alerting policies for the project.
+	ListAlertPolicies(context.Context, *ListAlertPoliciesRequest) (*ListAlertPoliciesResponse, error)
+	// Gets a single alerting policy.
+	GetAlertPolicy(context.Context, *GetAlertPolicyRequest) (*AlertPolicy, error)
+	// Creates a new alerting policy.
+	CreateAlertPolicy(context.Context, *CreateAlertPolicyRequest) (*AlertPolicy, error)
+	// Deletes an alerting policy.
+	DeleteAlertPolicy(context.Context, *DeleteAlertPolicyRequest) (*google_protobuf5.Empty, error)
+	// Updates an alerting policy. You can either replace the entire policy with
+	// a new one or replace only certain fields in the current alerting policy by
+	// specifying the fields to be updated via `updateMask`. Returns the
+	// updated alerting policy.
+	UpdateAlertPolicy(context.Context, *UpdateAlertPolicyRequest) (*AlertPolicy, error)
+}
+
+func RegisterAlertPolicyServiceServer(s *grpc.Server, srv AlertPolicyServiceServer) {
+	s.RegisterService(&_AlertPolicyService_serviceDesc, srv)
+}
+
+func _AlertPolicyService_ListAlertPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListAlertPoliciesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AlertPolicyServiceServer).ListAlertPolicies(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.AlertPolicyService/ListAlertPolicies",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AlertPolicyServiceServer).ListAlertPolicies(ctx, req.(*ListAlertPoliciesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AlertPolicyService_GetAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetAlertPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AlertPolicyServiceServer).GetAlertPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.AlertPolicyService/GetAlertPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AlertPolicyServiceServer).GetAlertPolicy(ctx, req.(*GetAlertPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AlertPolicyService_CreateAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateAlertPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AlertPolicyServiceServer).CreateAlertPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.AlertPolicyService/CreateAlertPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AlertPolicyServiceServer).CreateAlertPolicy(ctx, req.(*CreateAlertPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AlertPolicyService_DeleteAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteAlertPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AlertPolicyServiceServer).DeleteAlertPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.AlertPolicyService/DeleteAlertPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AlertPolicyServiceServer).DeleteAlertPolicy(ctx, req.(*DeleteAlertPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AlertPolicyService_UpdateAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateAlertPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AlertPolicyServiceServer).UpdateAlertPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.AlertPolicyService/UpdateAlertPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AlertPolicyServiceServer).UpdateAlertPolicy(ctx, req.(*UpdateAlertPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _AlertPolicyService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.monitoring.v3.AlertPolicyService",
+	HandlerType: (*AlertPolicyServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ListAlertPolicies",
+			Handler:    _AlertPolicyService_ListAlertPolicies_Handler,
+		},
+		{
+			MethodName: "GetAlertPolicy",
+			Handler:    _AlertPolicyService_GetAlertPolicy_Handler,
+		},
+		{
+			MethodName: "CreateAlertPolicy",
+			Handler:    _AlertPolicyService_CreateAlertPolicy_Handler,
+		},
+		{
+			MethodName: "DeleteAlertPolicy",
+			Handler:    _AlertPolicyService_DeleteAlertPolicy_Handler,
+		},
+		{
+			MethodName: "UpdateAlertPolicy",
+			Handler:    _AlertPolicyService_UpdateAlertPolicy_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/monitoring/v3/alert_service.proto",
+}
+
+func init() { proto.RegisterFile("google/monitoring/v3/alert_service.proto", fileDescriptor1) }
+
+var fileDescriptor1 = []byte{
+	// 656 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x6f, 0xd3, 0x4c,
+	0x10, 0x95, 0x93, 0x36, 0x5f, 0xbb, 0xfd, 0x5a, 0x94, 0x15, 0x54, 0xae, 0x0b, 0x52, 0x30, 0x2a,
+	0x54, 0xad, 0xb0, 0xa5, 0xf8, 0x04, 0x15, 0x48, 0xa4, 0x85, 0xf6, 0x40, 0xa5, 0x28, 0x85, 0x1e,
+	0x50, 0xa4, 0x68, 0x93, 0x4c, 0xac, 0x25, 0x8e, 0xd7, 0x78, 0x37, 0x11, 0x29, 0xea, 0x85, 0x23,
+	0x12, 0xe2, 0xc0, 0x99, 0x03, 0x47, 0x38, 0x20, 0x7e, 0x07, 0x57, 0xfe, 0x02, 0x3f, 0x04, 0x79,
+	0xed, 0x34, 0x76, 0x6d, 0xab, 0x16, 0xb7, 0xcc, 0xce, 0xdb, 0x99, 0xb7, 0x6f, 0xde, 0x38, 0x68,
+	0xdb, 0x66, 0xcc, 0x76, 0xc0, 0x1c, 0x31, 0x97, 0x0a, 0xe6, 0x53, 0xd7, 0x36, 0x27, 0x96, 0x49,
+	0x1c, 0xf0, 0x45, 0x87, 0x83, 0x3f, 0xa1, 0x3d, 0x30, 0x3c, 0x9f, 0x09, 0x86, 0xaf, 0x87, 0x48,
+	0x63, 0x8e, 0x34, 0x26, 0x96, 0x76, 0x33, 0xba, 0x4f, 0x3c, 0x6a, 0x12, 0xd7, 0x65, 0x82, 0x08,
+	0xca, 0x5c, 0x1e, 0xde, 0xd1, 0x6a, 0xf9, 0xd5, 0x23, 0xc4, 0x66, 0x84, 0x90, 0x51, 0x77, 0x3c,
+	0x30, 0x61, 0xe4, 0x89, 0xe9, 0xa5, 0xeb, 0x17, 0xc9, 0x01, 0x05, 0xa7, 0xdf, 0x19, 0x11, 0x3e,
+	0x0c, 0x11, 0xba, 0x40, 0xea, 0xbe, 0x0f, 0x44, 0xc0, 0x93, 0xa0, 0x66, 0x93, 0x39, 0xb4, 0x37,
+	0x6d, 0xc1, 0x9b, 0x31, 0x70, 0x81, 0x31, 0x5a, 0x70, 0xc9, 0x08, 0xd4, 0x72, 0x4d, 0xd9, 0x5e,
+	0x6e, 0xc9, 0xdf, 0xf8, 0x00, 0xfd, 0x1f, 0xbe, 0xcd, 0x93, 0x50, 0xb5, 0x54, 0x53, 0xb6, 0x57,
+	0xea, 0xb7, 0x8d, 0xac, 0xb7, 0x19, 0xf1, 0x9a, 0x2b, 0x64, 0x1e, 0xe8, 0xbb, 0xe8, 0xc6, 0x21,
+	0x88, 0x62, 0x2d, 0xf5, 0x2f, 0x0a, 0x52, 0x9f, 0x53, 0x1e, 0x83, 0x53, 0xe0, 0x97, 0x2f, 0x2c,
+	0xc4, 0x38, 0xae, 0xa3, 0xca, 0x80, 0x3a, 0x02, 0x7c, 0x75, 0x51, 0x9e, 0x46, 0x11, 0xde, 0x40,
+	0x4b, 0xcc, 0xef, 0x83, 0xdf, 0xe9, 0x4e, 0xd5, 0x8a, 0xcc, 0xfc, 0x27, 0xe3, 0xc6, 0x14, 0x6f,
+	0xa2, 0x65, 0x8f, 0xd8, 0xd0, 0xe1, 0xf4, 0x0c, 0xe4, 0x9b, 0x16, 0x5b, 0x4b, 0xc1, 0xc1, 0x09,
+	0x3d, 0x03, 0x7c, 0x0b, 0x21, 0x99, 0x14, 0x6c, 0x08, 0x6e, 0x44, 0x4d, 0xc2, 0x5f, 0x04, 0x07,
+	0xfa, 0x47, 0x05, 0x6d, 0x64, 0xf0, 0xe3, 0x1e, 0x73, 0x39, 0xe0, 0x23, 0xb4, 0x16, 0x13, 0x8c,
+	0x02, 0x57, 0xcb, 0xb5, 0x72, 0x31, 0xc9, 0x56, 0x49, 0xbc, 0x22, 0xbe, 0x8b, 0xae, 0xb9, 0xf0,
+	0x56, 0x74, 0x62, 0x5c, 0x4a, 0x92, 0xcb, 0x6a, 0x70, 0xdc, 0xbc, 0xe0, 0x13, 0xe8, 0xf5, 0xd2,
+	0xeb, 0x67, 0xcf, 0x74, 0x0f, 0xad, 0x8c, 0x65, 0x4e, 0x9a, 0x20, 0x1a, 0x9f, 0x36, 0xe3, 0x32,
+	0xf3, 0x89, 0xf1, 0x2c, 0xf0, 0xc9, 0x31, 0xe1, 0xc3, 0x16, 0x0a, 0xe1, 0xc1, 0xef, 0xd4, 0xf0,
+	0xcb, 0xff, 0x34, 0x7c, 0x03, 0xa9, 0x07, 0xe0, 0x40, 0x51, 0xcb, 0xd5, 0x7f, 0x54, 0x10, 0x8e,
+	0x41, 0x4f, 0xc2, 0xa5, 0xc2, 0x5f, 0x15, 0x54, 0x4d, 0xc9, 0x8e, 0x8d, 0x6c, 0x32, 0x79, 0xfe,
+	0xd1, 0xcc, 0xc2, 0xf8, 0x70, 0x9e, 0xfa, 0xee, 0xfb, 0xdf, 0x7f, 0x3e, 0x97, 0xb6, 0xf0, 0x9d,
+	0x60, 0x11, 0xdf, 0x05, 0x04, 0x1f, 0x79, 0x3e, 0x7b, 0x0d, 0x3d, 0xc1, 0xcd, 0x9d, 0x73, 0x33,
+	0x39, 0xb2, 0x4f, 0x0a, 0x5a, 0x4b, 0x1a, 0x1d, 0xef, 0x66, 0x37, 0xcc, 0x5c, 0x07, 0xed, 0x6a,
+	0x69, 0xf5, 0xfb, 0x92, 0xcf, 0x3d, 0xbc, 0x95, 0xc5, 0x27, 0x49, 0xc7, 0xdc, 0x39, 0x97, 0xaa,
+	0xa5, 0x16, 0x3e, 0x4f, 0xb5, 0xbc, 0x2f, 0x43, 0x11, 0x5e, 0x0f, 0x24, 0x2f, 0x4b, 0x2f, 0xa2,
+	0xd3, 0xc3, 0x84, 0xad, 0xf0, 0x07, 0x05, 0x55, 0x53, 0x0e, 0xc9, 0xe3, 0x98, 0x67, 0x25, 0x6d,
+	0x3d, 0x65, 0xea, 0xa7, 0xc1, 0x97, 0x71, 0x26, 0xd8, 0x4e, 0x41, 0xc1, 0x7e, 0x2a, 0xa8, 0x9a,
+	0xda, 0xa6, 0x3c, 0x32, 0x79, 0x6b, 0x57, 0x44, 0xb0, 0x23, 0xc9, 0xab, 0x51, 0xaf, 0x4b, 0x5e,
+	0x71, 0x41, 0x8c, 0xab, 0x48, 0x26, 0xf5, 0x6b, 0x7c, 0x53, 0x90, 0xda, 0x63, 0xa3, 0xcc, 0x96,
+	0x8d, 0xaa, 0xec, 0x19, 0x2d, 0x51, 0x33, 0x90, 0xa6, 0xa9, 0xbc, 0x7a, 0x1c, 0x41, 0x6d, 0xe6,
+	0x10, 0xd7, 0x36, 0x98, 0x6f, 0x9b, 0x36, 0xb8, 0x52, 0x38, 0x33, 0x4c, 0x11, 0x8f, 0xf2, 0xe4,
+	0xbf, 0xd0, 0xde, 0x3c, 0xfa, 0x5e, 0xd2, 0x0e, 0xc3, 0x02, 0xfb, 0x0e, 0x1b, 0xf7, 0x8d, 0xe3,
+	0x79, 0xc7, 0x53, 0xeb, 0xd7, 0x2c, 0xd9, 0x96, 0xc9, 0xf6, 0x3c, 0xd9, 0x3e, 0xb5, 0xba, 0x15,
+	0xd9, 0xc4, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x6f, 0x1f, 0xe6, 0xf0, 0x47, 0x07, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/common.pb.go b/googleapis/monitoring/v3/common.pb.go
index 4d967f52..60239967 100644
--- a/googleapis/monitoring/v3/common.pb.go
+++ b/googleapis/monitoring/v3/common.pb.go
@@ -1,61 +1,12 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: google/monitoring/v3/common.proto
 
-/*
-Package monitoring is a generated protocol buffer package.
-
-It is generated from these files:
-	google/monitoring/v3/common.proto
-	google/monitoring/v3/group.proto
-	google/monitoring/v3/group_service.proto
-	google/monitoring/v3/metric.proto
-	google/monitoring/v3/metric_service.proto
-	google/monitoring/v3/uptime.proto
-	google/monitoring/v3/uptime_service.proto
-
-It has these top-level messages:
-	TypedValue
-	TimeInterval
-	Aggregation
-	Group
-	ListGroupsRequest
-	ListGroupsResponse
-	GetGroupRequest
-	CreateGroupRequest
-	UpdateGroupRequest
-	DeleteGroupRequest
-	ListGroupMembersRequest
-	ListGroupMembersResponse
-	Point
-	TimeSeries
-	ListMonitoredResourceDescriptorsRequest
-	ListMonitoredResourceDescriptorsResponse
-	GetMonitoredResourceDescriptorRequest
-	ListMetricDescriptorsRequest
-	ListMetricDescriptorsResponse
-	GetMetricDescriptorRequest
-	CreateMetricDescriptorRequest
-	DeleteMetricDescriptorRequest
-	ListTimeSeriesRequest
-	ListTimeSeriesResponse
-	CreateTimeSeriesRequest
-	CreateTimeSeriesError
-	UptimeCheckConfig
-	UptimeCheckIp
-	ListUptimeCheckConfigsRequest
-	ListUptimeCheckConfigsResponse
-	GetUptimeCheckConfigRequest
-	CreateUptimeCheckConfigRequest
-	UpdateUptimeCheckConfigRequest
-	DeleteUptimeCheckConfigRequest
-	ListUptimeCheckIpsRequest
-	ListUptimeCheckIpsResponse
-*/
 package monitoring
 
 import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
 import google_api2 "google.golang.org/genproto/googleapis/api/distribution"
 import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
 import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
@@ -65,11 +16,87 @@ 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
+// Specifies an ordering relationship on two arguments, here called left and
+// right.
+type ComparisonType int32
+
+const (
+	// No ordering relationship is specified.
+	ComparisonType_COMPARISON_UNSPECIFIED ComparisonType = 0
+	// The left argument is greater than the right argument.
+	ComparisonType_COMPARISON_GT ComparisonType = 1
+	// The left argument is greater than or equal to the right argument.
+	ComparisonType_COMPARISON_GE ComparisonType = 2
+	// The left argument is less than the right argument.
+	ComparisonType_COMPARISON_LT ComparisonType = 3
+	// The left argument is less than or equal to the right argument.
+	ComparisonType_COMPARISON_LE ComparisonType = 4
+	// The left argument is equal to the right argument.
+	ComparisonType_COMPARISON_EQ ComparisonType = 5
+	// The left argument is not equal to the right argument.
+	ComparisonType_COMPARISON_NE ComparisonType = 6
+)
+
+var ComparisonType_name = map[int32]string{
+	0: "COMPARISON_UNSPECIFIED",
+	1: "COMPARISON_GT",
+	2: "COMPARISON_GE",
+	3: "COMPARISON_LT",
+	4: "COMPARISON_LE",
+	5: "COMPARISON_EQ",
+	6: "COMPARISON_NE",
+}
+var ComparisonType_value = map[string]int32{
+	"COMPARISON_UNSPECIFIED": 0,
+	"COMPARISON_GT":          1,
+	"COMPARISON_GE":          2,
+	"COMPARISON_LT":          3,
+	"COMPARISON_LE":          4,
+	"COMPARISON_EQ":          5,
+	"COMPARISON_NE":          6,
+}
+
+func (x ComparisonType) String() string {
+	return proto.EnumName(ComparisonType_name, int32(x))
+}
+func (ComparisonType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
+
+// The tier of service for a Stackdriver account. Please see the
+// [service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers)
+// for more details.
+type ServiceTier int32
+
+const (
+	// An invalid sentinel value, used to indicate that a tier has not
+	// been provided explicitly.
+	ServiceTier_SERVICE_TIER_UNSPECIFIED ServiceTier = 0
+	// The Stackdriver Basic tier, a free tier of service that provides basic
+	// features, a moderate allotment of logs, and access to built-in metrics.
+	// A number of features are not available in this tier. For more details,
+	// see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
+	ServiceTier_SERVICE_TIER_BASIC ServiceTier = 1
+	// The Stackdriver Premium tier, a higher, more expensive tier of service
+	// that provides access to all Stackdriver features, lets you use Stackdriver
+	// with AWS accounts, and has a larger allotments for logs and metrics. For
+	// more details, see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
+	ServiceTier_SERVICE_TIER_PREMIUM ServiceTier = 2
+)
+
+var ServiceTier_name = map[int32]string{
+	0: "SERVICE_TIER_UNSPECIFIED",
+	1: "SERVICE_TIER_BASIC",
+	2: "SERVICE_TIER_PREMIUM",
+}
+var ServiceTier_value = map[string]int32{
+	"SERVICE_TIER_UNSPECIFIED": 0,
+	"SERVICE_TIER_BASIC":       1,
+	"SERVICE_TIER_PREMIUM":     2,
+}
+
+func (x ServiceTier) String() string {
+	return proto.EnumName(ServiceTier_name, int32(x))
+}
+func (ServiceTier) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
 
 // The Aligner describes how to bring the data points in a single
 // time series into temporal alignment.
@@ -85,11 +112,22 @@ const (
 	// delta metric to a delta metric requires that the alignment
 	// period be increased. The value type of the result is the same
 	// as the value type of the input.
+	//
+	// One can think of this aligner as a rate but without time units; that
+	// is, the output is conceptually (second_point - first_point).
 	Aggregation_ALIGN_DELTA Aggregation_Aligner = 1
 	// Align and convert to a rate. This alignment is valid for
 	// cumulative metrics and delta metrics with numeric values. The output is a
 	// gauge metric with value type
 	// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+	//
+	// One can think of this aligner as conceptually providing the slope of
+	// the line that passes through the value at the start and end of the
+	// window. In other words, this is conceptually ((y1 - y0)/(t1 - t0)),
+	// and the output unit is one that has a "/time" dimension.
+	//
+	// If, by rate, you are looking for percentage change, see the
+	// `ALIGN_PERCENT_CHANGE` aligner option.
 	Aggregation_ALIGN_RATE Aggregation_Aligner = 2
 	// Align by interpolating between adjacent points around the
 	// period boundary. This alignment is valid for gauge
@@ -144,6 +182,12 @@ const (
 	// [INT64][google.api.MetricDescriptor.ValueType.INT64].
 	Aggregation_ALIGN_COUNT_TRUE Aggregation_Aligner = 16
 	// Align time series via aggregation. The resulting data point in
+	// the alignment period is the count of False-valued data points in the
+	// period. This alignment is valid for gauge metrics with
+	// Boolean values. The value type of the output is
+	// [INT64][google.api.MetricDescriptor.ValueType.INT64].
+	Aggregation_ALIGN_COUNT_FALSE Aggregation_Aligner = 24
+	// Align time series via aggregation. The resulting data point in
 	// the alignment period is the fraction of True-valued data points in the
 	// period. This alignment is valid for gauge metrics with Boolean values.
 	// The output value is in the range [0, 1] and has value type
@@ -173,6 +217,22 @@ const (
 	// with distribution values. The output is a gauge metric with value type
 	// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
 	Aggregation_ALIGN_PERCENTILE_05 Aggregation_Aligner = 21
+	// Align and convert to a percentage change. This alignment is valid for
+	// gauge and delta metrics with numeric values. This alignment conceptually
+	// computes the equivalent of "((current - previous)/previous)*100"
+	// where previous value is determined based on the alignmentPeriod.
+	// In the event that previous is 0 the calculated value is infinity with the
+	// exception that if both (current - previous) and previous are 0 the
+	// calculated value is 0.
+	// A 10 minute moving mean is computed at each point of the time window
+	// prior to the above calculation to smooth the metric and prevent false
+	// positives from very short lived spikes.
+	// Only applicable for data that is >= 0. Any values < 0 are treated as
+	// no data. While delta metrics are accepted by this alignment special care
+	// should be taken that the values for the metric will always be positive.
+	// The output is a gauge metric with value type
+	// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
+	Aggregation_ALIGN_PERCENT_CHANGE Aggregation_Aligner = 23
 )
 
 var Aggregation_Aligner_name = map[int32]string{
@@ -188,36 +248,40 @@ var Aggregation_Aligner_name = map[int32]string{
 	14: "ALIGN_SUM",
 	15: "ALIGN_STDDEV",
 	16: "ALIGN_COUNT_TRUE",
+	24: "ALIGN_COUNT_FALSE",
 	17: "ALIGN_FRACTION_TRUE",
 	18: "ALIGN_PERCENTILE_99",
 	19: "ALIGN_PERCENTILE_95",
 	20: "ALIGN_PERCENTILE_50",
 	21: "ALIGN_PERCENTILE_05",
+	23: "ALIGN_PERCENT_CHANGE",
 }
 var Aggregation_Aligner_value = map[string]int32{
-	"ALIGN_NONE":          0,
-	"ALIGN_DELTA":         1,
-	"ALIGN_RATE":          2,
-	"ALIGN_INTERPOLATE":   3,
-	"ALIGN_NEXT_OLDER":    4,
-	"ALIGN_MIN":           10,
-	"ALIGN_MAX":           11,
-	"ALIGN_MEAN":          12,
-	"ALIGN_COUNT":         13,
-	"ALIGN_SUM":           14,
-	"ALIGN_STDDEV":        15,
-	"ALIGN_COUNT_TRUE":    16,
-	"ALIGN_FRACTION_TRUE": 17,
-	"ALIGN_PERCENTILE_99": 18,
-	"ALIGN_PERCENTILE_95": 19,
-	"ALIGN_PERCENTILE_50": 20,
-	"ALIGN_PERCENTILE_05": 21,
+	"ALIGN_NONE":           0,
+	"ALIGN_DELTA":          1,
+	"ALIGN_RATE":           2,
+	"ALIGN_INTERPOLATE":    3,
+	"ALIGN_NEXT_OLDER":     4,
+	"ALIGN_MIN":            10,
+	"ALIGN_MAX":            11,
+	"ALIGN_MEAN":           12,
+	"ALIGN_COUNT":          13,
+	"ALIGN_SUM":            14,
+	"ALIGN_STDDEV":         15,
+	"ALIGN_COUNT_TRUE":     16,
+	"ALIGN_COUNT_FALSE":    24,
+	"ALIGN_FRACTION_TRUE":  17,
+	"ALIGN_PERCENTILE_99":  18,
+	"ALIGN_PERCENTILE_95":  19,
+	"ALIGN_PERCENTILE_50":  20,
+	"ALIGN_PERCENTILE_05":  21,
+	"ALIGN_PERCENT_CHANGE": 23,
 }
 
 func (x Aggregation_Aligner) String() string {
 	return proto.EnumName(Aggregation_Aligner_name, int32(x))
 }
-func (Aggregation_Aligner) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+func (Aggregation_Aligner) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} }
 
 // A Reducer describes how to aggregate data points from multiple
 // time series into a single time series.
@@ -263,6 +327,11 @@ const (
 	// and gauge metrics of Boolean value type. The value type of
 	// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
 	Aggregation_REDUCE_COUNT_TRUE Aggregation_Reducer = 7
+	// Reduce by computing the count of False-valued data points across time
+	// series for each alignment period. This reducer is valid for delta
+	// and gauge metrics of Boolean value type. The value type of
+	// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
+	Aggregation_REDUCE_COUNT_FALSE Aggregation_Reducer = 15
 	// Reduce by computing the fraction of True-valued data points across time
 	// series for each alignment period. This reducer is valid for delta
 	// and gauge metrics of Boolean value type. The output value is in the
@@ -300,6 +369,7 @@ var Aggregation_Reducer_name = map[int32]string{
 	5:  "REDUCE_STDDEV",
 	6:  "REDUCE_COUNT",
 	7:  "REDUCE_COUNT_TRUE",
+	15: "REDUCE_COUNT_FALSE",
 	8:  "REDUCE_FRACTION_TRUE",
 	9:  "REDUCE_PERCENTILE_99",
 	10: "REDUCE_PERCENTILE_95",
@@ -315,6 +385,7 @@ var Aggregation_Reducer_value = map[string]int32{
 	"REDUCE_STDDEV":        5,
 	"REDUCE_COUNT":         6,
 	"REDUCE_COUNT_TRUE":    7,
+	"REDUCE_COUNT_FALSE":   15,
 	"REDUCE_FRACTION_TRUE": 8,
 	"REDUCE_PERCENTILE_99": 9,
 	"REDUCE_PERCENTILE_95": 10,
@@ -325,7 +396,7 @@ var Aggregation_Reducer_value = map[string]int32{
 func (x Aggregation_Reducer) String() string {
 	return proto.EnumName(Aggregation_Reducer_name, int32(x))
 }
-func (Aggregation_Reducer) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} }
+func (Aggregation_Reducer) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 1} }
 
 // A single strongly-typed value.
 type TypedValue struct {
@@ -343,7 +414,7 @@ type TypedValue struct {
 func (m *TypedValue) Reset()                    { *m = TypedValue{} }
 func (m *TypedValue) String() string            { return proto.CompactTextString(m) }
 func (*TypedValue) ProtoMessage()               {}
-func (*TypedValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (*TypedValue) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
 
 type isTypedValue_Value interface {
 	isTypedValue_Value()
@@ -544,7 +615,7 @@ type TimeInterval struct {
 func (m *TimeInterval) Reset()                    { *m = TimeInterval{} }
 func (m *TimeInterval) String() string            { return proto.CompactTextString(m) }
 func (*TimeInterval) ProtoMessage()               {}
-func (*TimeInterval) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (*TimeInterval) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
 
 func (m *TimeInterval) GetEndTime() *google_protobuf2.Timestamp {
 	if m != nil {
@@ -562,8 +633,9 @@ func (m *TimeInterval) GetStartTime() *google_protobuf2.Timestamp {
 
 // Describes how to combine multiple time series to provide different views of
 // the data.  Aggregation consists of an alignment step on individual time
-// series (`per_series_aligner`) followed by an optional reduction of the data
-// across different time series (`cross_series_reducer`).  For more details, see
+// series (`alignment_period` and `per_series_aligner`) followed by an optional
+// reduction step of the data across the aligned time series
+// (`cross_series_reducer` and `group_by_fields`).  For more details, see
 // [Aggregation](/monitoring/api/learn_more#aggregation).
 type Aggregation struct {
 	// The alignment period for per-[time series][google.monitoring.v3.TimeSeries]
@@ -619,7 +691,7 @@ type Aggregation struct {
 func (m *Aggregation) Reset()                    { *m = Aggregation{} }
 func (m *Aggregation) String() string            { return proto.CompactTextString(m) }
 func (*Aggregation) ProtoMessage()               {}
-func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
 
 func (m *Aggregation) GetAlignmentPeriod() *google_protobuf3.Duration {
 	if m != nil {
@@ -653,62 +725,74 @@ func init() {
 	proto.RegisterType((*TypedValue)(nil), "google.monitoring.v3.TypedValue")
 	proto.RegisterType((*TimeInterval)(nil), "google.monitoring.v3.TimeInterval")
 	proto.RegisterType((*Aggregation)(nil), "google.monitoring.v3.Aggregation")
+	proto.RegisterEnum("google.monitoring.v3.ComparisonType", ComparisonType_name, ComparisonType_value)
+	proto.RegisterEnum("google.monitoring.v3.ServiceTier", ServiceTier_name, ServiceTier_value)
 	proto.RegisterEnum("google.monitoring.v3.Aggregation_Aligner", Aggregation_Aligner_name, Aggregation_Aligner_value)
 	proto.RegisterEnum("google.monitoring.v3.Aggregation_Reducer", Aggregation_Reducer_name, Aggregation_Reducer_value)
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/common.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 792 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdd, 0x6a, 0xe3, 0x46,
-	0x14, 0xb6, 0xec, 0x64, 0x1d, 0x1f, 0x39, 0xf1, 0x64, 0xd6, 0x4b, 0xdd, 0x40, 0xbb, 0x5e, 0x17,
-	0x8a, 0x7b, 0x23, 0x87, 0xb8, 0x2e, 0x84, 0x42, 0x41, 0xb1, 0xb5, 0x1b, 0x83, 0x23, 0x9b, 0x59,
-	0x25, 0x0d, 0x6d, 0x40, 0xc8, 0xd1, 0xac, 0x10, 0xc8, 0x1a, 0x31, 0x92, 0x0d, 0xb9, 0xeb, 0x6b,
-	0xf4, 0xba, 0x77, 0xfb, 0x28, 0x7d, 0x84, 0x3e, 0x44, 0x9f, 0xa1, 0x68, 0x66, 0xb4, 0x52, 0x5a,
-	0x97, 0xf6, 0xf2, 0xfb, 0x39, 0xdf, 0xe8, 0x7c, 0x23, 0xd9, 0xf0, 0x26, 0x60, 0x2c, 0x88, 0xe8,
-	0x68, 0xc3, 0xe2, 0x30, 0x63, 0x3c, 0x8c, 0x83, 0xd1, 0x6e, 0x3c, 0x7a, 0x64, 0x9b, 0x0d, 0x8b,
-	0x8d, 0x84, 0xb3, 0x8c, 0xe1, 0xae, 0xb4, 0x18, 0xa5, 0xc5, 0xd8, 0x8d, 0xcf, 0xbe, 0x50, 0x83,
-	0x5e, 0x12, 0x8e, 0xfc, 0x30, 0xcd, 0x78, 0xb8, 0xde, 0x66, 0x61, 0x31, 0x74, 0xf6, 0xa5, 0x92,
-	0x05, 0x5a, 0x6f, 0x3f, 0x8c, 0xfc, 0x2d, 0xf7, 0x2a, 0xfa, 0xeb, 0xbf, 0xeb, 0x59, 0xb8, 0xa1,
-	0x69, 0xe6, 0x6d, 0x12, 0x69, 0x18, 0xfc, 0xa9, 0x01, 0x38, 0x4f, 0x09, 0xf5, 0xef, 0xbc, 0x68,
-	0x4b, 0xf1, 0x6b, 0x80, 0x35, 0x63, 0x91, 0xbb, 0xcb, 0x51, 0x4f, 0xeb, 0x6b, 0xc3, 0xa3, 0xeb,
-	0x1a, 0x69, 0xe5, 0x9c, 0x34, 0xbc, 0x01, 0x3d, 0x8c, 0xb3, 0xef, 0xbe, 0x55, 0x8e, 0x7a, 0x5f,
-	0x1b, 0x36, 0xae, 0x6b, 0x04, 0x04, 0x29, 0x2d, 0x5f, 0x41, 0xdb, 0x67, 0xdb, 0x75, 0x44, 0x95,
-	0xa7, 0xd1, 0xd7, 0x86, 0xda, 0x75, 0x8d, 0xe8, 0x92, 0xfd, 0x64, 0xca, 0x97, 0x89, 0x03, 0x65,
-	0x3a, 0xe8, 0x6b, 0xc3, 0x56, 0x6e, 0x92, 0xac, 0x34, 0xcd, 0x01, 0x57, 0x77, 0x56, 0xd6, 0xc3,
-	0xbe, 0x36, 0xd4, 0x2f, 0x7a, 0x86, 0xea, 0xcb, 0x4b, 0x42, 0x63, 0x56, 0x71, 0x5d, 0xd7, 0xc8,
-	0x69, 0x75, 0x4a, 0x44, 0x5d, 0x35, 0xe1, 0x50, 0x4c, 0x0f, 0x7e, 0xd1, 0xa0, 0xed, 0x84, 0x1b,
-	0x3a, 0x8f, 0x33, 0xca, 0x77, 0x5e, 0x84, 0x27, 0x70, 0x44, 0x63, 0xdf, 0xcd, 0x8b, 0x11, 0xeb,
-	0xe8, 0x17, 0x67, 0x45, 0x74, 0xd1, 0x9a, 0xe1, 0x14, 0xad, 0x91, 0x26, 0x8d, 0xfd, 0x1c, 0xe1,
-	0x4b, 0x80, 0x34, 0xf3, 0x78, 0x26, 0x07, 0xb5, 0xff, 0x1c, 0x6c, 0x09, 0x77, 0x8e, 0x07, 0x1f,
-	0x9b, 0xa0, 0x9b, 0x41, 0xc0, 0x69, 0x20, 0xae, 0x0a, 0xcf, 0x00, 0x79, 0x51, 0x18, 0xc4, 0x1b,
-	0x1a, 0x67, 0x6e, 0x42, 0x79, 0xc8, 0x7c, 0x15, 0xf8, 0xf9, 0x3f, 0x02, 0x67, 0xea, 0x7e, 0x49,
-	0xe7, 0xd3, 0xc8, 0x4a, 0x4c, 0xe0, 0x1f, 0x01, 0x27, 0x94, 0xbb, 0x29, 0xe5, 0x21, 0x4d, 0x5d,
-	0xa1, 0x52, 0x2e, 0x36, 0x3a, 0xb9, 0xf8, 0xc6, 0xd8, 0xf7, 0x72, 0x19, 0x95, 0x87, 0x30, 0x4c,
-	0x39, 0x40, 0x50, 0x42, 0xf9, 0x7b, 0x91, 0xa1, 0x18, 0xfc, 0x33, 0x74, 0x1f, 0x39, 0x4b, 0xd3,
-	0x22, 0x9a, 0x53, 0x7f, 0xfb, 0x48, 0xb9, 0xb8, 0xb2, 0xff, 0x15, 0x4d, 0xe4, 0x00, 0xc1, 0x22,
-	0x46, 0x86, 0x2b, 0x0e, 0x7f, 0x0d, 0x9d, 0x80, 0xb3, 0x6d, 0xe2, 0xae, 0x9f, 0xdc, 0x0f, 0x21,
-	0x8d, 0xfc, 0xb4, 0x77, 0xd8, 0x6f, 0x0c, 0x5b, 0xe4, 0x58, 0xd0, 0x57, 0x4f, 0x6f, 0x05, 0x39,
-	0xf8, 0xa3, 0x0e, 0xcd, 0xe2, 0x81, 0x4e, 0x00, 0xcc, 0xc5, 0xfc, 0x9d, 0xed, 0xda, 0x4b, 0xdb,
-	0x42, 0x35, 0xdc, 0x01, 0x5d, 0xe2, 0x99, 0xb5, 0x70, 0x4c, 0xa4, 0x95, 0x06, 0x62, 0x3a, 0x16,
-	0xaa, 0xe3, 0x57, 0x70, 0x2a, 0xf1, 0xdc, 0x76, 0x2c, 0xb2, 0x5a, 0x2e, 0x72, 0xba, 0x81, 0xbb,
-	0x80, 0x54, 0x8e, 0x75, 0xef, 0xb8, 0xcb, 0xc5, 0xcc, 0x22, 0xe8, 0x00, 0x1f, 0x43, 0x4b, 0xb2,
-	0x37, 0x73, 0x1b, 0x41, 0x05, 0x9a, 0xf7, 0x48, 0x2f, 0xa3, 0x6f, 0x2c, 0xd3, 0x46, 0xed, 0xf2,
-	0xec, 0xe9, 0xf2, 0xd6, 0x76, 0xd0, 0x71, 0xe9, 0x7f, 0x7f, 0x7b, 0x83, 0x4e, 0x30, 0x82, 0xb6,
-	0x82, 0xce, 0x6c, 0x66, 0xdd, 0xa1, 0x4e, 0x79, 0xaa, 0x98, 0x70, 0x1d, 0x72, 0x6b, 0x21, 0x84,
-	0x3f, 0x83, 0x97, 0x92, 0x7d, 0x4b, 0xcc, 0xa9, 0x33, 0x5f, 0xda, 0x52, 0x38, 0x2d, 0x85, 0x95,
-	0x45, 0xa6, 0x96, 0xed, 0xcc, 0x17, 0x96, 0x7b, 0x79, 0x89, 0xf0, 0x7e, 0x61, 0x82, 0x5e, 0xee,
-	0x15, 0x26, 0xe7, 0xa8, 0xbb, 0x57, 0x38, 0x9f, 0xa0, 0x57, 0x83, 0x5f, 0xeb, 0xd0, 0x2c, 0x2e,
-	0xa4, 0x03, 0x3a, 0xb1, 0x66, 0xb7, 0x53, 0xab, 0xd2, 0xae, 0x22, 0xc4, 0xca, 0xa2, 0xdd, 0x82,
-	0x98, 0xdb, 0xa8, 0x5e, 0xc5, 0xe6, 0x3d, 0x6a, 0x54, 0x70, 0x5e, 0xc1, 0x01, 0x3e, 0x85, 0xe3,
-	0x02, 0xcb, 0x0e, 0x0e, 0xf3, 0x56, 0x14, 0x25, 0x6b, 0x7b, 0x91, 0x5f, 0x51, 0x95, 0x91, 0xdb,
-	0x37, 0x71, 0x0f, 0xba, 0x8a, 0x7e, 0xde, 0xcb, 0x51, 0x45, 0x79, 0x5e, 0x4c, 0xeb, 0x5f, 0x94,
-	0x09, 0x82, 0xfd, 0xca, 0xe4, 0x1c, 0xe9, 0xfb, 0x95, 0xf3, 0x09, 0x6a, 0x5f, 0xfd, 0xa6, 0x41,
-	0xef, 0x91, 0x6d, 0xf6, 0xbe, 0xe5, 0x57, 0xfa, 0x54, 0xfc, 0x82, 0xaf, 0xf2, 0xaf, 0x73, 0xa5,
-	0xfd, 0xf4, 0x83, 0x32, 0x05, 0x2c, 0xf2, 0xe2, 0xc0, 0x60, 0x3c, 0x18, 0x05, 0x34, 0x16, 0xdf,
-	0xee, 0x48, 0x4a, 0x5e, 0x12, 0xa6, 0xcf, 0xff, 0x04, 0xbe, 0x2f, 0xd1, 0xc7, 0xfa, 0xd9, 0x3b,
-	0x19, 0x30, 0x8d, 0xd8, 0xd6, 0x37, 0x6e, 0xca, 0xb3, 0xee, 0xc6, 0xbf, 0x17, 0xe2, 0x83, 0x10,
-	0x1f, 0x4a, 0xf1, 0xe1, 0x6e, 0xbc, 0x7e, 0x21, 0x0e, 0x19, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff,
-	0x57, 0xa4, 0xb9, 0xce, 0x68, 0x06, 0x00, 0x00,
+func init() { proto.RegisterFile("google/monitoring/v3/common.proto", fileDescriptor2) }
+
+var fileDescriptor2 = []byte{
+	// 954 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xc1, 0x6e, 0xe3, 0x44,
+	0x18, 0xc7, 0xe3, 0xa4, 0x6d, 0x9a, 0xcf, 0x6d, 0x33, 0x9d, 0xed, 0x76, 0x43, 0xb5, 0xb0, 0xd9,
+	0x22, 0xa1, 0xb0, 0x07, 0xa7, 0x6a, 0x09, 0x52, 0x85, 0x84, 0xe4, 0x3a, 0xd3, 0xd6, 0x52, 0xe2,
+	0x84, 0x89, 0x53, 0x2a, 0x28, 0xb2, 0x9c, 0x66, 0xd6, 0xb2, 0x94, 0x78, 0x2c, 0xdb, 0xa9, 0xd4,
+	0x1b, 0x77, 0xde, 0x81, 0x0b, 0x37, 0x6e, 0xbc, 0x06, 0x0f, 0xc3, 0x85, 0x17, 0x40, 0x9e, 0x71,
+	0xd6, 0x4e, 0x08, 0x62, 0x8f, 0xdf, 0xef, 0xff, 0xff, 0xbe, 0x99, 0xf9, 0x8f, 0x35, 0x86, 0xb7,
+	0x1e, 0xe7, 0xde, 0x8c, 0xb5, 0xe7, 0x3c, 0xf0, 0x13, 0x1e, 0xf9, 0x81, 0xd7, 0x7e, 0xba, 0x68,
+	0x3f, 0xf2, 0xf9, 0x9c, 0x07, 0x5a, 0x18, 0xf1, 0x84, 0xe3, 0x23, 0x69, 0xd1, 0x72, 0x8b, 0xf6,
+	0x74, 0x71, 0xf2, 0x3a, 0x6b, 0x74, 0x43, 0xbf, 0xed, 0x06, 0x01, 0x4f, 0xdc, 0xc4, 0xe7, 0x41,
+	0x2c, 0x7b, 0x4e, 0x3e, 0x2d, 0xa8, 0x53, 0x3f, 0x4e, 0x22, 0x7f, 0xb2, 0x48, 0xf5, 0x4c, 0xfe,
+	0x2c, 0x93, 0x45, 0x35, 0x59, 0xbc, 0x6f, 0x4f, 0x17, 0x91, 0x5b, 0xd0, 0xdf, 0xac, 0xeb, 0x89,
+	0x3f, 0x67, 0x71, 0xe2, 0xce, 0x43, 0x69, 0x38, 0xfd, 0x4b, 0x01, 0xb0, 0x9f, 0x43, 0x36, 0xbd,
+	0x73, 0x67, 0x0b, 0x86, 0xdf, 0x00, 0x4c, 0x38, 0x9f, 0x39, 0x4f, 0x69, 0xd5, 0x50, 0x9a, 0x4a,
+	0x6b, 0xf7, 0xb6, 0x44, 0x6b, 0x29, 0x93, 0x86, 0xb7, 0xa0, 0xfa, 0x41, 0xf2, 0xf5, 0x57, 0x99,
+	0xa3, 0xdc, 0x54, 0x5a, 0x95, 0xdb, 0x12, 0x05, 0x01, 0xa5, 0xe5, 0x73, 0xd8, 0x9b, 0xf2, 0xc5,
+	0x64, 0xc6, 0x32, 0x4f, 0xa5, 0xa9, 0xb4, 0x94, 0xdb, 0x12, 0x55, 0x25, 0xfd, 0x60, 0x4a, 0x0f,
+	0x13, 0x78, 0x99, 0x69, 0xab, 0xa9, 0xb4, 0x6a, 0xa9, 0x49, 0x52, 0x69, 0x32, 0x01, 0x17, 0xcf,
+	0x9c, 0x59, 0xb7, 0x9b, 0x4a, 0x4b, 0x3d, 0x6f, 0x68, 0x59, 0x9a, 0x6e, 0xe8, 0x6b, 0xdd, 0x82,
+	0xeb, 0xb6, 0x44, 0x0f, 0x8b, 0x5d, 0x62, 0xd4, 0x55, 0x15, 0xb6, 0x45, 0xf7, 0xe9, 0xcf, 0x0a,
+	0xec, 0xd9, 0xfe, 0x9c, 0x99, 0x41, 0xc2, 0xa2, 0x27, 0x77, 0x86, 0x3b, 0xb0, 0xcb, 0x82, 0xa9,
+	0x93, 0x06, 0x23, 0x8e, 0xa3, 0x9e, 0x9f, 0x2c, 0x47, 0x2f, 0x53, 0xd3, 0xec, 0x65, 0x6a, 0xb4,
+	0xca, 0x82, 0x69, 0x5a, 0xe1, 0x4b, 0x80, 0x38, 0x71, 0xa3, 0x44, 0x36, 0x2a, 0xff, 0xdb, 0x58,
+	0x13, 0xee, 0xb4, 0x3e, 0xfd, 0xbb, 0x0a, 0xaa, 0xee, 0x79, 0x11, 0xf3, 0xc4, 0x55, 0xe1, 0x2e,
+	0x20, 0x77, 0xe6, 0x7b, 0xc1, 0x9c, 0x05, 0x89, 0x13, 0xb2, 0xc8, 0xe7, 0xd3, 0x6c, 0xe0, 0x27,
+	0xff, 0x1a, 0xd8, 0xcd, 0xee, 0x97, 0xd6, 0x3f, 0xb4, 0x0c, 0x45, 0x07, 0xfe, 0x1e, 0x70, 0xc8,
+	0x22, 0x27, 0x66, 0x91, 0xcf, 0x62, 0x47, 0xa8, 0x2c, 0x12, 0x27, 0x3a, 0x38, 0xff, 0x52, 0xdb,
+	0xf4, 0xe9, 0x69, 0x85, 0x4d, 0x68, 0xba, 0x6c, 0xa0, 0x28, 0x64, 0xd1, 0x48, 0xcc, 0xc8, 0x08,
+	0xfe, 0x11, 0x8e, 0x1e, 0x23, 0x1e, 0xc7, 0xcb, 0xd1, 0x11, 0x9b, 0x2e, 0x1e, 0x59, 0x24, 0xae,
+	0xec, 0xa3, 0x46, 0x53, 0xd9, 0x40, 0xb1, 0x18, 0x23, 0x87, 0x67, 0x0c, 0x7f, 0x01, 0x75, 0x2f,
+	0xe2, 0x8b, 0xd0, 0x99, 0x3c, 0x3b, 0xef, 0x7d, 0x36, 0x9b, 0xc6, 0x8d, 0xed, 0x66, 0xa5, 0x55,
+	0xa3, 0xfb, 0x02, 0x5f, 0x3d, 0x5f, 0x0b, 0x78, 0xfa, 0x4b, 0x05, 0xaa, 0xcb, 0x0d, 0x1d, 0x00,
+	0xe8, 0x3d, 0xf3, 0xc6, 0x72, 0xac, 0x81, 0x45, 0x50, 0x09, 0xd7, 0x41, 0x95, 0x75, 0x97, 0xf4,
+	0x6c, 0x1d, 0x29, 0xb9, 0x81, 0xea, 0x36, 0x41, 0x65, 0xfc, 0x12, 0x0e, 0x65, 0x6d, 0x5a, 0x36,
+	0xa1, 0xc3, 0x41, 0x2f, 0xc5, 0x15, 0x7c, 0x04, 0x28, 0x9b, 0x43, 0xee, 0x6d, 0x67, 0xd0, 0xeb,
+	0x12, 0x8a, 0xb6, 0xf0, 0x3e, 0xd4, 0x24, 0xed, 0x9b, 0x16, 0x82, 0x42, 0xa9, 0xdf, 0x23, 0x35,
+	0x1f, 0xdd, 0x27, 0xba, 0x85, 0xf6, 0xf2, 0xb5, 0x8d, 0xc1, 0xd8, 0xb2, 0xd1, 0x7e, 0xee, 0x1f,
+	0x8d, 0xfb, 0xe8, 0x00, 0x23, 0xd8, 0xcb, 0x4a, 0xbb, 0xdb, 0x25, 0x77, 0xa8, 0x9e, 0xaf, 0x2a,
+	0x3a, 0x1c, 0x9b, 0x8e, 0x09, 0x42, 0xf9, 0x16, 0x25, 0xbd, 0xd6, 0x7b, 0x23, 0x82, 0x1a, 0xf8,
+	0x15, 0xbc, 0x90, 0xf8, 0x9a, 0xea, 0x86, 0x6d, 0x0e, 0x2c, 0xe9, 0x3f, 0xcc, 0x85, 0x21, 0xa1,
+	0x06, 0xb1, 0x6c, 0xb3, 0x47, 0x9c, 0xcb, 0x4b, 0x84, 0x37, 0x0b, 0x1d, 0xf4, 0x62, 0xa3, 0xd0,
+	0x39, 0x43, 0x47, 0x1b, 0x85, 0xb3, 0x0e, 0x7a, 0x89, 0x1b, 0x70, 0xb4, 0x22, 0x38, 0xc6, 0xad,
+	0x6e, 0xdd, 0x10, 0xf4, 0xea, 0xf4, 0x8f, 0x32, 0x54, 0x97, 0x37, 0x58, 0x07, 0x95, 0x92, 0xee,
+	0xd8, 0x20, 0x85, 0xeb, 0xc8, 0x80, 0xc8, 0x48, 0x5c, 0xc7, 0x12, 0x98, 0x16, 0x2a, 0x17, 0x6b,
+	0xfd, 0x1e, 0x55, 0x0a, 0x75, 0x9a, 0xd9, 0x16, 0x3e, 0x84, 0xfd, 0x65, 0x2d, 0x43, 0xdb, 0x4e,
+	0x63, 0xcc, 0x90, 0xcc, 0x79, 0x27, 0x0d, 0xac, 0x48, 0x64, 0x2e, 0x55, 0x7c, 0x0c, 0x78, 0x05,
+	0xcb, 0x20, 0xeb, 0xe9, 0x59, 0x32, 0xbe, 0x9a, 0xe4, 0x6e, 0x41, 0x59, 0x8d, 0xb2, 0xf6, 0x1f,
+	0x4a, 0x07, 0xc1, 0x66, 0xa5, 0x73, 0x86, 0xd4, 0xcd, 0xca, 0x59, 0x07, 0xed, 0xbd, 0xfb, 0x55,
+	0x81, 0x03, 0x83, 0xcf, 0x43, 0x37, 0xf2, 0x63, 0x1e, 0xa4, 0x6f, 0x2e, 0x3e, 0x81, 0x63, 0x63,
+	0xd0, 0x1f, 0xea, 0xd4, 0x1c, 0x0d, 0x2c, 0x67, 0x6c, 0x8d, 0x86, 0xc4, 0x30, 0xaf, 0x4d, 0xd2,
+	0x45, 0xa5, 0x34, 0x84, 0x82, 0x76, 0x63, 0x23, 0x65, 0x1d, 0xa5, 0x5f, 0xf6, 0x2a, 0xea, 0xd9,
+	0xa8, 0xb2, 0x8e, 0x88, 0x0c, 0xb4, 0x80, 0xc8, 0x77, 0x68, 0x7b, 0x0d, 0x59, 0x04, 0xed, 0xbc,
+	0xfb, 0x09, 0xd4, 0x11, 0x8b, 0x9e, 0xfc, 0x47, 0x66, 0xfb, 0x2c, 0xc2, 0xaf, 0xa1, 0x31, 0x22,
+	0xf4, 0xce, 0x34, 0x88, 0x63, 0x9b, 0x84, 0xae, 0x6d, 0xef, 0x18, 0xf0, 0x8a, 0x7a, 0xa5, 0x8f,
+	0x4c, 0x03, 0x29, 0xe9, 0xf9, 0x57, 0xf8, 0x90, 0x92, 0xbe, 0x39, 0xee, 0xa3, 0xf2, 0xd5, 0x6f,
+	0x0a, 0x34, 0x1e, 0xf9, 0x7c, 0xe3, 0x73, 0x71, 0xa5, 0x1a, 0xe2, 0x47, 0x39, 0x4c, 0x9f, 0xb9,
+	0xa1, 0xf2, 0xc3, 0xb7, 0x99, 0xc9, 0xe3, 0x33, 0x37, 0xf0, 0x34, 0x1e, 0x79, 0x6d, 0x8f, 0x05,
+	0xe2, 0x11, 0x6c, 0x4b, 0xc9, 0x0d, 0xfd, 0x78, 0xf5, 0x5f, 0xfb, 0x4d, 0x5e, 0xfd, 0x5e, 0x3e,
+	0xb9, 0x91, 0x03, 0x8c, 0x19, 0x5f, 0x4c, 0xb5, 0x7e, 0xbe, 0xd6, 0xdd, 0xc5, 0x9f, 0x4b, 0xf1,
+	0x41, 0x88, 0x0f, 0xb9, 0xf8, 0x70, 0x77, 0x31, 0xd9, 0x11, 0x8b, 0x5c, 0xfc, 0x13, 0x00, 0x00,
+	0xff, 0xff, 0xe2, 0x9f, 0x67, 0xb2, 0xcf, 0x07, 0x00, 0x00,
 }
diff --git a/googleapis/monitoring/v3/group.pb.go b/googleapis/monitoring/v3/group.pb.go
index a9c0dd81..0afad7a6 100644
--- a/googleapis/monitoring/v3/group.pb.go
+++ b/googleapis/monitoring/v3/group.pb.go
@@ -61,7 +61,7 @@ type Group struct {
 func (m *Group) Reset()                    { *m = Group{} }
 func (m *Group) String() string            { return proto.CompactTextString(m) }
 func (*Group) ProtoMessage()               {}
-func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
+func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
 
 func (m *Group) GetName() string {
 	if m != nil {
@@ -102,9 +102,9 @@ func init() {
 	proto.RegisterType((*Group)(nil), "google.monitoring.v3.Group")
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/group.proto", fileDescriptor1) }
+func init() { proto.RegisterFile("google/monitoring/v3/group.proto", fileDescriptor3) }
 
-var fileDescriptor1 = []byte{
+var fileDescriptor3 = []byte{
 	// 261 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xcf, 0x4a, 0x2b, 0x31,
 	0x14, 0x87, 0x49, 0xef, 0xed, 0x60, 0x4f, 0x5d, 0x0d, 0x22, 0x83, 0x20, 0x8e, 0xae, 0xba, 0xca,
diff --git a/googleapis/monitoring/v3/group_service.pb.go b/googleapis/monitoring/v3/group_service.pb.go
index 14750fa9..de212a50 100644
--- a/googleapis/monitoring/v3/group_service.pb.go
+++ b/googleapis/monitoring/v3/group_service.pb.go
@@ -8,7 +8,7 @@ import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres"
-import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
 
 import (
 	context "golang.org/x/net/context"
@@ -45,7 +45,7 @@ type ListGroupsRequest struct {
 func (m *ListGroupsRequest) Reset()                    { *m = ListGroupsRequest{} }
 func (m *ListGroupsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListGroupsRequest) ProtoMessage()               {}
-func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
+func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
 
 type isListGroupsRequest_Filter interface {
 	isListGroupsRequest_Filter()
@@ -208,7 +208,7 @@ type ListGroupsResponse struct {
 func (m *ListGroupsResponse) Reset()                    { *m = ListGroupsResponse{} }
 func (m *ListGroupsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListGroupsResponse) ProtoMessage()               {}
-func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
+func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
 
 func (m *ListGroupsResponse) GetGroup() []*Group {
 	if m != nil {
@@ -234,7 +234,7 @@ type GetGroupRequest struct {
 func (m *GetGroupRequest) Reset()                    { *m = GetGroupRequest{} }
 func (m *GetGroupRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetGroupRequest) ProtoMessage()               {}
-func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
+func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} }
 
 func (m *GetGroupRequest) GetName() string {
 	if m != nil {
@@ -258,7 +258,7 @@ type CreateGroupRequest struct {
 func (m *CreateGroupRequest) Reset()                    { *m = CreateGroupRequest{} }
 func (m *CreateGroupRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateGroupRequest) ProtoMessage()               {}
-func (*CreateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
+func (*CreateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} }
 
 func (m *CreateGroupRequest) GetName() string {
 	if m != nil {
@@ -293,7 +293,7 @@ type UpdateGroupRequest struct {
 func (m *UpdateGroupRequest) Reset()                    { *m = UpdateGroupRequest{} }
 func (m *UpdateGroupRequest) String() string            { return proto.CompactTextString(m) }
 func (*UpdateGroupRequest) ProtoMessage()               {}
-func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} }
+func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} }
 
 func (m *UpdateGroupRequest) GetGroup() *Group {
 	if m != nil {
@@ -319,7 +319,7 @@ type DeleteGroupRequest struct {
 func (m *DeleteGroupRequest) Reset()                    { *m = DeleteGroupRequest{} }
 func (m *DeleteGroupRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteGroupRequest) ProtoMessage()               {}
-func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} }
+func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} }
 
 func (m *DeleteGroupRequest) GetName() string {
 	if m != nil {
@@ -357,7 +357,7 @@ type ListGroupMembersRequest struct {
 func (m *ListGroupMembersRequest) Reset()                    { *m = ListGroupMembersRequest{} }
 func (m *ListGroupMembersRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListGroupMembersRequest) ProtoMessage()               {}
-func (*ListGroupMembersRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} }
+func (*ListGroupMembersRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} }
 
 func (m *ListGroupMembersRequest) GetName() string {
 	if m != nil {
@@ -409,7 +409,7 @@ type ListGroupMembersResponse struct {
 func (m *ListGroupMembersResponse) Reset()                    { *m = ListGroupMembersResponse{} }
 func (m *ListGroupMembersResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListGroupMembersResponse) ProtoMessage()               {}
-func (*ListGroupMembersResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} }
+func (*ListGroupMembersResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
 
 func (m *ListGroupMembersResponse) GetMembers() []*google_api4.MonitoredResource {
 	if m != nil {
@@ -464,7 +464,7 @@ type GroupServiceClient interface {
 	// You can change any group attributes except `name`.
 	UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*Group, error)
 	// Deletes an existing group.
-	DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+	DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
 	// Lists the monitored resources that are members of a group.
 	ListGroupMembers(ctx context.Context, in *ListGroupMembersRequest, opts ...grpc.CallOption) (*ListGroupMembersResponse, error)
 }
@@ -513,8 +513,8 @@ func (c *groupServiceClient) UpdateGroup(ctx context.Context, in *UpdateGroupReq
 	return out, nil
 }
 
-func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
-	out := new(google_protobuf4.Empty)
+func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
 	err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/DeleteGroup", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -544,7 +544,7 @@ type GroupServiceServer interface {
 	// You can change any group attributes except `name`.
 	UpdateGroup(context.Context, *UpdateGroupRequest) (*Group, error)
 	// Deletes an existing group.
-	DeleteGroup(context.Context, *DeleteGroupRequest) (*google_protobuf4.Empty, error)
+	DeleteGroup(context.Context, *DeleteGroupRequest) (*google_protobuf5.Empty, error)
 	// Lists the monitored resources that are members of a group.
 	ListGroupMembers(context.Context, *ListGroupMembersRequest) (*ListGroupMembersResponse, error)
 }
@@ -694,9 +694,9 @@ var _GroupService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "google/monitoring/v3/group_service.proto",
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/group_service.proto", fileDescriptor2) }
+func init() { proto.RegisterFile("google/monitoring/v3/group_service.proto", fileDescriptor4) }
 
-var fileDescriptor2 = []byte{
+var fileDescriptor4 = []byte{
 	// 826 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0xd3, 0x4c,
 	0x10, 0x7e, 0xdd, 0xa4, 0x69, 0xb2, 0x69, 0xd5, 0x76, 0x55, 0xf5, 0x8d, 0xdc, 0x0f, 0x05, 0xf7,
diff --git a/googleapis/monitoring/v3/metric.pb.go b/googleapis/monitoring/v3/metric.pb.go
index 533b5373..99e74513 100644
--- a/googleapis/monitoring/v3/metric.pb.go
+++ b/googleapis/monitoring/v3/metric.pb.go
@@ -32,7 +32,7 @@ type Point struct {
 func (m *Point) Reset()                    { *m = Point{} }
 func (m *Point) String() string            { return proto.CompactTextString(m) }
 func (*Point) ProtoMessage()               {}
-func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
+func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
 
 func (m *Point) GetInterval() *TimeInterval {
 	if m != nil {
@@ -90,7 +90,7 @@ type TimeSeries struct {
 func (m *TimeSeries) Reset()                    { *m = TimeSeries{} }
 func (m *TimeSeries) String() string            { return proto.CompactTextString(m) }
 func (*TimeSeries) ProtoMessage()               {}
-func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} }
+func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
 
 func (m *TimeSeries) GetMetric() *google_api5.Metric {
 	if m != nil {
@@ -132,9 +132,9 @@ func init() {
 	proto.RegisterType((*TimeSeries)(nil), "google.monitoring.v3.TimeSeries")
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/metric.proto", fileDescriptor3) }
+func init() { proto.RegisterFile("google/monitoring/v3/metric.proto", fileDescriptor5) }
 
-var fileDescriptor3 = []byte{
+var fileDescriptor5 = []byte{
 	// 396 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x4a, 0xeb, 0x40,
 	0x14, 0x86, 0x49, 0x7b, 0x5b, 0x7a, 0x27, 0x70, 0x17, 0xc3, 0x05, 0x43, 0x45, 0x88, 0x15, 0xb4,
diff --git a/googleapis/monitoring/v3/metric_service.pb.go b/googleapis/monitoring/v3/metric_service.pb.go
index 77840f1c..1673fecb 100644
--- a/googleapis/monitoring/v3/metric_service.pb.go
+++ b/googleapis/monitoring/v3/metric_service.pb.go
@@ -9,7 +9,7 @@ import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 import google_api5 "google.golang.org/genproto/googleapis/api/metric"
 import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres"
-import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
 import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
 
 import (
@@ -47,7 +47,7 @@ func (x ListTimeSeriesRequest_TimeSeriesView) String() string {
 	return proto.EnumName(ListTimeSeriesRequest_TimeSeriesView_name, int32(x))
 }
 func (ListTimeSeriesRequest_TimeSeriesView) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor4, []int{8, 0}
+	return fileDescriptor6, []int{8, 0}
 }
 
 // The `ListMonitoredResourceDescriptors` request.
@@ -77,7 +77,7 @@ func (m *ListMonitoredResourceDescriptorsRequest) Reset() {
 func (m *ListMonitoredResourceDescriptorsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListMonitoredResourceDescriptorsRequest) ProtoMessage()    {}
 func (*ListMonitoredResourceDescriptorsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor4, []int{0}
+	return fileDescriptor6, []int{0}
 }
 
 func (m *ListMonitoredResourceDescriptorsRequest) GetName() string {
@@ -125,7 +125,7 @@ func (m *ListMonitoredResourceDescriptorsResponse) Reset() {
 func (m *ListMonitoredResourceDescriptorsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListMonitoredResourceDescriptorsResponse) ProtoMessage()    {}
 func (*ListMonitoredResourceDescriptorsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor4, []int{1}
+	return fileDescriptor6, []int{1}
 }
 
 func (m *ListMonitoredResourceDescriptorsResponse) GetResourceDescriptors() []*google_api4.MonitoredResourceDescriptor {
@@ -155,7 +155,7 @@ func (m *GetMonitoredResourceDescriptorRequest) Reset()         { *m = GetMonito
 func (m *GetMonitoredResourceDescriptorRequest) String() string { return proto.CompactTextString(m) }
 func (*GetMonitoredResourceDescriptorRequest) ProtoMessage()    {}
 func (*GetMonitoredResourceDescriptorRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor4, []int{2}
+	return fileDescriptor6, []int{2}
 }
 
 func (m *GetMonitoredResourceDescriptorRequest) GetName() string {
@@ -190,7 +190,7 @@ type ListMetricDescriptorsRequest struct {
 func (m *ListMetricDescriptorsRequest) Reset()                    { *m = ListMetricDescriptorsRequest{} }
 func (m *ListMetricDescriptorsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListMetricDescriptorsRequest) ProtoMessage()               {}
-func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} }
+func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
 
 func (m *ListMetricDescriptorsRequest) GetName() string {
 	if m != nil {
@@ -234,7 +234,7 @@ type ListMetricDescriptorsResponse struct {
 func (m *ListMetricDescriptorsResponse) Reset()                    { *m = ListMetricDescriptorsResponse{} }
 func (m *ListMetricDescriptorsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListMetricDescriptorsResponse) ProtoMessage()               {}
-func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} }
+func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} }
 
 func (m *ListMetricDescriptorsResponse) GetMetricDescriptors() []*google_api5.MetricDescriptor {
 	if m != nil {
@@ -262,7 +262,7 @@ type GetMetricDescriptorRequest struct {
 func (m *GetMetricDescriptorRequest) Reset()                    { *m = GetMetricDescriptorRequest{} }
 func (m *GetMetricDescriptorRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetMetricDescriptorRequest) ProtoMessage()               {}
-func (*GetMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} }
+func (*GetMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} }
 
 func (m *GetMetricDescriptorRequest) GetName() string {
 	if m != nil {
@@ -284,7 +284,7 @@ type CreateMetricDescriptorRequest struct {
 func (m *CreateMetricDescriptorRequest) Reset()                    { *m = CreateMetricDescriptorRequest{} }
 func (m *CreateMetricDescriptorRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateMetricDescriptorRequest) ProtoMessage()               {}
-func (*CreateMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} }
+func (*CreateMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{6} }
 
 func (m *CreateMetricDescriptorRequest) GetName() string {
 	if m != nil {
@@ -312,7 +312,7 @@ type DeleteMetricDescriptorRequest struct {
 func (m *DeleteMetricDescriptorRequest) Reset()                    { *m = DeleteMetricDescriptorRequest{} }
 func (m *DeleteMetricDescriptorRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteMetricDescriptorRequest) ProtoMessage()               {}
-func (*DeleteMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
+func (*DeleteMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{7} }
 
 func (m *DeleteMetricDescriptorRequest) GetName() string {
 	if m != nil {
@@ -362,7 +362,7 @@ type ListTimeSeriesRequest struct {
 func (m *ListTimeSeriesRequest) Reset()                    { *m = ListTimeSeriesRequest{} }
 func (m *ListTimeSeriesRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListTimeSeriesRequest) ProtoMessage()               {}
-func (*ListTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} }
+func (*ListTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{8} }
 
 func (m *ListTimeSeriesRequest) GetName() string {
 	if m != nil {
@@ -433,7 +433,7 @@ type ListTimeSeriesResponse struct {
 func (m *ListTimeSeriesResponse) Reset()                    { *m = ListTimeSeriesResponse{} }
 func (m *ListTimeSeriesResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListTimeSeriesResponse) ProtoMessage()               {}
-func (*ListTimeSeriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} }
+func (*ListTimeSeriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{9} }
 
 func (m *ListTimeSeriesResponse) GetTimeSeries() []*TimeSeries {
 	if m != nil {
@@ -465,7 +465,7 @@ type CreateTimeSeriesRequest struct {
 func (m *CreateTimeSeriesRequest) Reset()                    { *m = CreateTimeSeriesRequest{} }
 func (m *CreateTimeSeriesRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateTimeSeriesRequest) ProtoMessage()               {}
-func (*CreateTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} }
+func (*CreateTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{10} }
 
 func (m *CreateTimeSeriesRequest) GetName() string {
 	if m != nil {
@@ -495,7 +495,7 @@ type CreateTimeSeriesError struct {
 func (m *CreateTimeSeriesError) Reset()                    { *m = CreateTimeSeriesError{} }
 func (m *CreateTimeSeriesError) String() string            { return proto.CompactTextString(m) }
 func (*CreateTimeSeriesError) ProtoMessage()               {}
-func (*CreateTimeSeriesError) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} }
+func (*CreateTimeSeriesError) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{11} }
 
 func (m *CreateTimeSeriesError) GetTimeSeries() *TimeSeries {
 	if m != nil {
@@ -552,14 +552,14 @@ type MetricServiceClient interface {
 	CreateMetricDescriptor(ctx context.Context, in *CreateMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error)
 	// Deletes a metric descriptor. Only user-created
 	// [custom metrics](/monitoring/custom-metrics) can be deleted.
-	DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+	DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
 	// Lists time series that match a filter. This method does not require a Stackdriver account.
 	ListTimeSeries(ctx context.Context, in *ListTimeSeriesRequest, opts ...grpc.CallOption) (*ListTimeSeriesResponse, error)
 	// Creates or adds data to one or more time series.
 	// The response is empty if all time series in the request were written.
 	// If any time series could not be written, a corresponding failure message is
 	// included in the error response.
-	CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+	CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
 }
 
 type metricServiceClient struct {
@@ -615,8 +615,8 @@ func (c *metricServiceClient) CreateMetricDescriptor(ctx context.Context, in *Cr
 	return out, nil
 }
 
-func (c *metricServiceClient) DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
-	out := new(google_protobuf4.Empty)
+func (c *metricServiceClient) DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
 	err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/DeleteMetricDescriptor", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -633,8 +633,8 @@ func (c *metricServiceClient) ListTimeSeries(ctx context.Context, in *ListTimeSe
 	return out, nil
 }
 
-func (c *metricServiceClient) CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
-	out := new(google_protobuf4.Empty)
+func (c *metricServiceClient) CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
 	err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/CreateTimeSeries", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -659,14 +659,14 @@ type MetricServiceServer interface {
 	CreateMetricDescriptor(context.Context, *CreateMetricDescriptorRequest) (*google_api5.MetricDescriptor, error)
 	// Deletes a metric descriptor. Only user-created
 	// [custom metrics](/monitoring/custom-metrics) can be deleted.
-	DeleteMetricDescriptor(context.Context, *DeleteMetricDescriptorRequest) (*google_protobuf4.Empty, error)
+	DeleteMetricDescriptor(context.Context, *DeleteMetricDescriptorRequest) (*google_protobuf5.Empty, error)
 	// Lists time series that match a filter. This method does not require a Stackdriver account.
 	ListTimeSeries(context.Context, *ListTimeSeriesRequest) (*ListTimeSeriesResponse, error)
 	// Creates or adds data to one or more time series.
 	// The response is empty if all time series in the request were written.
 	// If any time series could not be written, a corresponding failure message is
 	// included in the error response.
-	CreateTimeSeries(context.Context, *CreateTimeSeriesRequest) (*google_protobuf4.Empty, error)
+	CreateTimeSeries(context.Context, *CreateTimeSeriesRequest) (*google_protobuf5.Empty, error)
 }
 
 func RegisterMetricServiceServer(s *grpc.Server, srv MetricServiceServer) {
@@ -858,9 +858,9 @@ var _MetricService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "google/monitoring/v3/metric_service.proto",
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/metric_service.proto", fileDescriptor4) }
+func init() { proto.RegisterFile("google/monitoring/v3/metric_service.proto", fileDescriptor6) }
 
-var fileDescriptor4 = []byte{
+var fileDescriptor6 = []byte{
 	// 1011 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4d, 0x6f, 0x1b, 0x45,
 	0x18, 0x66, 0x92, 0x34, 0x1f, 0xaf, 0xd5, 0x90, 0x4e, 0x5b, 0xd7, 0x6c, 0x13, 0xe4, 0x2e, 0x2a,
diff --git a/googleapis/monitoring/v3/mutation_record.pb.go b/googleapis/monitoring/v3/mutation_record.pb.go
new file mode 100644
index 00000000..32f983d0
--- /dev/null
+++ b/googleapis/monitoring/v3/mutation_record.pb.go
@@ -0,0 +1,67 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/monitoring/v3/mutation_record.proto
+
+package monitoring
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import google_protobuf2 "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
+
+// Describes a change made to a configuration.
+type MutationRecord struct {
+	// When the change occurred.
+	MutateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=mutate_time,json=mutateTime" json:"mutate_time,omitempty"`
+	// The email address of the user making the change.
+	MutatedBy string `protobuf:"bytes,2,opt,name=mutated_by,json=mutatedBy" json:"mutated_by,omitempty"`
+}
+
+func (m *MutationRecord) Reset()                    { *m = MutationRecord{} }
+func (m *MutationRecord) String() string            { return proto.CompactTextString(m) }
+func (*MutationRecord) ProtoMessage()               {}
+func (*MutationRecord) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} }
+
+func (m *MutationRecord) GetMutateTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.MutateTime
+	}
+	return nil
+}
+
+func (m *MutationRecord) GetMutatedBy() string {
+	if m != nil {
+		return m.MutatedBy
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*MutationRecord)(nil), "google.monitoring.v3.MutationRecord")
+}
+
+func init() { proto.RegisterFile("google/monitoring/v3/mutation_record.proto", fileDescriptor7) }
+
+var fileDescriptor7 = []byte{
+	// 251 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4a, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0xcf, 0xcd, 0xcf, 0xcb, 0x2c, 0xc9, 0x2f, 0xca, 0xcc, 0x4b, 0xd7, 0x2f, 0x33,
+	0xd6, 0xcf, 0x2d, 0x2d, 0x49, 0x2c, 0xc9, 0xcc, 0xcf, 0x8b, 0x2f, 0x4a, 0x4d, 0xce, 0x2f, 0x4a,
+	0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81, 0xa8, 0xd5, 0x43, 0xa8, 0xd5, 0x2b, 0x33,
+	0x96, 0x92, 0x87, 0x9a, 0x00, 0x56, 0x93, 0x54, 0x9a, 0xa6, 0x5f, 0x92, 0x99, 0x9b, 0x5a, 0x5c,
+	0x92, 0x98, 0x5b, 0x00, 0xd1, 0xa6, 0x94, 0xc3, 0xc5, 0xe7, 0x0b, 0x35, 0x2f, 0x08, 0x6c, 0x9c,
+	0x90, 0x35, 0x17, 0x37, 0xd8, 0x86, 0xd4, 0x78, 0x90, 0x5a, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e,
+	0x23, 0x29, 0x3d, 0xa8, 0xf1, 0x30, 0x83, 0xf4, 0x42, 0x60, 0x06, 0x05, 0x71, 0x41, 0x94, 0x83,
+	0x04, 0x84, 0x64, 0xb9, 0xa0, 0xbc, 0x94, 0xf8, 0xa4, 0x4a, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce,
+	0x20, 0x4e, 0xa8, 0x88, 0x53, 0xa5, 0xd3, 0x6a, 0x46, 0x2e, 0x89, 0xe4, 0xfc, 0x5c, 0x3d, 0x6c,
+	0x6e, 0x75, 0x12, 0x46, 0x75, 0x48, 0x00, 0xc8, 0xa6, 0x00, 0xc6, 0x28, 0x3b, 0xa8, 0xe2, 0xf4,
+	0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x3b, 0xf4,
+	0x21, 0x52, 0x89, 0x05, 0x99, 0xc5, 0xa8, 0x61, 0x64, 0x8d, 0xe0, 0xad, 0x62, 0x92, 0x72, 0x87,
+	0x18, 0xe0, 0x9c, 0x93, 0x5f, 0x9a, 0xa2, 0xe7, 0x8b, 0xb0, 0x33, 0xcc, 0xf8, 0x14, 0x4c, 0x32,
+	0x06, 0x2c, 0x19, 0x83, 0x90, 0x8c, 0x09, 0x33, 0x4e, 0x62, 0x03, 0x5b, 0x62, 0x0c, 0x08, 0x00,
+	0x00, 0xff, 0xff, 0x95, 0xa7, 0xf3, 0xbd, 0x87, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/notification.pb.go b/googleapis/monitoring/v3/notification.pb.go
new file mode 100644
index 00000000..6d0534ef
--- /dev/null
+++ b/googleapis/monitoring/v3/notification.pb.go
@@ -0,0 +1,313 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/monitoring/v3/notification.proto
+
+package monitoring
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_api3 "google.golang.org/genproto/googleapis/api/label"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Indicates whether the channel has been verified or not. It is illegal
+// to specify this field in a
+// [`CreateNotificationChannel`][google.monitoring.v3.NotificationChannelService.CreateNotificationChannel]
+// or an
+// [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
+// operation.
+type NotificationChannel_VerificationStatus int32
+
+const (
+	// Sentinel value used to indicate that the state is unknown, omitted, or
+	// is not applicable (as in the case of channels that neither support
+	// nor require verification in order to function).
+	NotificationChannel_VERIFICATION_STATUS_UNSPECIFIED NotificationChannel_VerificationStatus = 0
+	// The channel has yet to be verified and requires verification to function.
+	// Note that this state also applies to the case where the verification
+	// process has been initiated by sending a verification code but where
+	// the verification code has not been submitted to complete the process.
+	NotificationChannel_UNVERIFIED NotificationChannel_VerificationStatus = 1
+	// It has been proven that notifications can be received on this
+	// notification channel and that someone on the project has access
+	// to messages that are delivered to that channel.
+	NotificationChannel_VERIFIED NotificationChannel_VerificationStatus = 2
+)
+
+var NotificationChannel_VerificationStatus_name = map[int32]string{
+	0: "VERIFICATION_STATUS_UNSPECIFIED",
+	1: "UNVERIFIED",
+	2: "VERIFIED",
+}
+var NotificationChannel_VerificationStatus_value = map[string]int32{
+	"VERIFICATION_STATUS_UNSPECIFIED": 0,
+	"UNVERIFIED":                      1,
+	"VERIFIED":                        2,
+}
+
+func (x NotificationChannel_VerificationStatus) String() string {
+	return proto.EnumName(NotificationChannel_VerificationStatus_name, int32(x))
+}
+func (NotificationChannel_VerificationStatus) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor8, []int{1, 0}
+}
+
+// A description of a notification channel. The descriptor includes
+// the properties of the channel and the set of labels or fields that
+// must be specified to configure channels of a given type.
+type NotificationChannelDescriptor struct {
+	// The full REST resource name for this descriptor. The syntax is:
+	//
+	//     projects/[PROJECT_ID]/notificationChannelDescriptors/[TYPE]
+	//
+	// In the above, `[TYPE]` is the value of the `type` field.
+	Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
+	// The type of notification channel, such as "email", "sms", etc.
+	// Notification channel types are globally unique.
+	Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
+	// A human-readable name for the notification channel type.  This
+	// form of the name is suitable for a user interface.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// A human-readable description of the notification channel
+	// type. The description may include a description of the properties
+	// of the channel and pointers to external documentation.
+	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
+	// The set of labels that must be defined to identify a particular
+	// channel of the corresponding type. Each label includes a
+	// description for how that field should be populated.
+	Labels []*google_api3.LabelDescriptor `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty"`
+	// The tiers that support this notification channel; the project service tier
+	// must be one of the supported_tiers.
+	SupportedTiers []ServiceTier `protobuf:"varint,5,rep,packed,name=supported_tiers,json=supportedTiers,enum=google.monitoring.v3.ServiceTier" json:"supported_tiers,omitempty"`
+}
+
+func (m *NotificationChannelDescriptor) Reset()                    { *m = NotificationChannelDescriptor{} }
+func (m *NotificationChannelDescriptor) String() string            { return proto.CompactTextString(m) }
+func (*NotificationChannelDescriptor) ProtoMessage()               {}
+func (*NotificationChannelDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{0} }
+
+func (m *NotificationChannelDescriptor) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *NotificationChannelDescriptor) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *NotificationChannelDescriptor) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *NotificationChannelDescriptor) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *NotificationChannelDescriptor) GetLabels() []*google_api3.LabelDescriptor {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *NotificationChannelDescriptor) GetSupportedTiers() []ServiceTier {
+	if m != nil {
+		return m.SupportedTiers
+	}
+	return nil
+}
+
+// A `NotificationChannel` is a medium through which an alert is
+// delivered when a policy violation is detected. Examples of channels
+// include email, SMS, and third-party messaging applications. Fields
+// containing sensitive information like authentication tokens or
+// contact info are only partially populated on retrieval.
+type NotificationChannel struct {
+	// The type of the notification channel. This field matches the
+	// value of the [NotificationChannelDescriptor.type][google.monitoring.v3.NotificationChannelDescriptor.type] field.
+	Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
+	// The full REST resource name for this channel. The syntax is:
+	//
+	//     projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
+	//
+	// The `[CHANNEL_ID]` is automatically assigned by the server on creation.
+	Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
+	// An optional human-readable name for this notification channel. It is
+	// recommended that you specify a non-empty and unique name in order to
+	// make it easier to identify the channels in your project, though this is
+	// not enforced. The display name is limited to 512 Unicode characters.
+	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// An optional human-readable description of this notification channel. This
+	// description may provide additional details, beyond the display
+	// name, for the channel. This may not exceeed 1024 Unicode characters.
+	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
+	// Configuration fields that define the channel and its behavior. The
+	// permissible and required labels are specified in the
+	// [NotificationChannelDescriptor.labels][google.monitoring.v3.NotificationChannelDescriptor.labels] of the
+	// `NotificationChannelDescriptor` corresponding to the `type` field.
+	Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// User-supplied key/value data that does not need to conform to
+	// the corresponding `NotificationChannelDescriptor`'s schema, unlike
+	// the `labels` field. This field is intended to be used for organizing
+	// and identifying the `NotificationChannel` objects.
+	//
+	// The field can contain up to 64 entries. Each key and value is limited to
+	// 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
+	// values can contain only lowercase letters, numerals, underscores, and
+	// dashes. Keys must begin with a letter.
+	UserLabels map[string]string `protobuf:"bytes,8,rep,name=user_labels,json=userLabels" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// Indicates whether this channel has been verified or not. On a
+	// [`ListNotificationChannels`][google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
+	// or
+	// [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel]
+	// operation, this field is expected to be populated.
+	//
+	// If the value is `UNVERIFIED`, then it indicates that the channel is
+	// non-functioning (it both requires verification and lacks verification);
+	// otherwise, it is assumed that the channel works.
+	//
+	// If the channel is neither `VERIFIED` nor `UNVERIFIED`, it implies that
+	// the channel is of a type that does not require verification or that
+	// this specific channel has been exempted from verification because it was
+	// created prior to verification being required for channels of this type.
+	//
+	// This field cannot be modified using a standard
+	// [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
+	// operation. To change the value of this field, you must call
+	// [`VerifyNotificationChannel`][google.monitoring.v3.NotificationChannelService.VerifyNotificationChannel].
+	VerificationStatus NotificationChannel_VerificationStatus `protobuf:"varint,9,opt,name=verification_status,json=verificationStatus,enum=google.monitoring.v3.NotificationChannel_VerificationStatus" json:"verification_status,omitempty"`
+	// Whether notifications are forwarded to the described channel. This makes
+	// it possible to disable delivery of notifications to a particular channel
+	// without removing the channel from all alerting policies that reference
+	// the channel. This is a more convenient approach when the change is
+	// temporary and you want to receive notifications from the same set
+	// of alerting policies on the channel at some point in the future.
+	Enabled *google_protobuf4.BoolValue `protobuf:"bytes,11,opt,name=enabled" json:"enabled,omitempty"`
+}
+
+func (m *NotificationChannel) Reset()                    { *m = NotificationChannel{} }
+func (m *NotificationChannel) String() string            { return proto.CompactTextString(m) }
+func (*NotificationChannel) ProtoMessage()               {}
+func (*NotificationChannel) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{1} }
+
+func (m *NotificationChannel) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
+func (m *NotificationChannel) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *NotificationChannel) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *NotificationChannel) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *NotificationChannel) GetLabels() map[string]string {
+	if m != nil {
+		return m.Labels
+	}
+	return nil
+}
+
+func (m *NotificationChannel) GetUserLabels() map[string]string {
+	if m != nil {
+		return m.UserLabels
+	}
+	return nil
+}
+
+func (m *NotificationChannel) GetVerificationStatus() NotificationChannel_VerificationStatus {
+	if m != nil {
+		return m.VerificationStatus
+	}
+	return NotificationChannel_VERIFICATION_STATUS_UNSPECIFIED
+}
+
+func (m *NotificationChannel) GetEnabled() *google_protobuf4.BoolValue {
+	if m != nil {
+		return m.Enabled
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*NotificationChannelDescriptor)(nil), "google.monitoring.v3.NotificationChannelDescriptor")
+	proto.RegisterType((*NotificationChannel)(nil), "google.monitoring.v3.NotificationChannel")
+	proto.RegisterEnum("google.monitoring.v3.NotificationChannel_VerificationStatus", NotificationChannel_VerificationStatus_name, NotificationChannel_VerificationStatus_value)
+}
+
+func init() { proto.RegisterFile("google/monitoring/v3/notification.proto", fileDescriptor8) }
+
+var fileDescriptor8 = []byte{
+	// 599 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6e, 0xd3, 0x30,
+	0x14, 0xc7, 0x49, 0xbb, 0x8e, 0xcd, 0x99, 0xba, 0xe1, 0x4d, 0x28, 0x0a, 0x5f, 0xdd, 0xb8, 0xa0,
+	0x57, 0x89, 0xd4, 0x82, 0xc4, 0xf8, 0x92, 0xb6, 0xae, 0x43, 0x45, 0xac, 0x4c, 0xfd, 0x42, 0x9a,
+	0x26, 0x55, 0x6e, 0xeb, 0x05, 0x8b, 0xc4, 0x8e, 0x6c, 0x27, 0xa8, 0x0f, 0xc1, 0x63, 0x70, 0x01,
+	0x8f, 0xc2, 0x53, 0xa1, 0x38, 0x6e, 0x12, 0xb6, 0x48, 0x8c, 0x3b, 0x9f, 0x73, 0xfe, 0xe7, 0x7f,
+	0xce, 0xf9, 0x35, 0x2a, 0x78, 0xe6, 0x31, 0xe6, 0xf9, 0xd8, 0x0d, 0x18, 0x25, 0x92, 0x71, 0x42,
+	0x3d, 0x37, 0x6e, 0xbb, 0x94, 0x49, 0x72, 0x45, 0xe6, 0x48, 0x12, 0x46, 0x9d, 0x90, 0x33, 0xc9,
+	0xe0, 0x5e, 0x2a, 0x74, 0x72, 0xa1, 0x13, 0xb7, 0xed, 0x87, 0xba, 0x1d, 0x85, 0xc4, 0x45, 0x94,
+	0x32, 0xa9, 0x5a, 0x44, 0xda, 0x63, 0xdf, 0x2f, 0x54, 0x7d, 0x34, 0xc3, 0xbe, 0xce, 0xef, 0x97,
+	0x0e, 0x9d, 0xb3, 0x20, 0x58, 0x8d, 0xb3, 0x1f, 0x6b, 0x89, 0x8a, 0x66, 0xd1, 0x95, 0xfb, 0x8d,
+	0xa3, 0x30, 0xc4, 0x5c, 0x5b, 0x1f, 0x7c, 0xaf, 0x80, 0x47, 0xfd, 0xc2, 0x96, 0x9d, 0x2f, 0x88,
+	0x52, 0xec, 0x9f, 0x60, 0x31, 0xe7, 0x24, 0x94, 0x8c, 0x43, 0x08, 0xd6, 0x28, 0x0a, 0xb0, 0xb5,
+	0xde, 0x30, 0x9a, 0x9b, 0x03, 0xf5, 0x4e, 0x72, 0x72, 0x19, 0x62, 0xcb, 0x48, 0x73, 0xc9, 0x1b,
+	0xee, 0x83, 0xad, 0x05, 0x11, 0xa1, 0x8f, 0x96, 0x53, 0xa5, 0xaf, 0xa8, 0x9a, 0xa9, 0x73, 0xfd,
+	0xa4, 0xad, 0x01, 0xcc, 0x85, 0x36, 0x26, 0x8c, 0x5a, 0x55, 0xad, 0xc8, 0x53, 0xb0, 0x0d, 0xd6,
+	0xd5, 0x81, 0xc2, 0x5a, 0x6b, 0x54, 0x9b, 0x66, 0xeb, 0x81, 0xa3, 0x71, 0xa1, 0x90, 0x38, 0x1f,
+	0x93, 0x4a, 0xbe, 0xd9, 0x40, 0x4b, 0xe1, 0x07, 0xb0, 0x2d, 0xa2, 0x30, 0x64, 0x5c, 0xe2, 0xc5,
+	0x54, 0x12, 0xcc, 0x85, 0x55, 0x6b, 0x54, 0x9b, 0xf5, 0xd6, 0xbe, 0x53, 0x06, 0xdb, 0x19, 0x62,
+	0x1e, 0x93, 0x39, 0x1e, 0x11, 0xcc, 0x07, 0xf5, 0xac, 0x33, 0x09, 0xc5, 0xc1, 0x8f, 0x1a, 0xd8,
+	0x2d, 0xe1, 0x51, 0x7a, 0x71, 0x19, 0x99, 0xeb, 0x14, 0xaa, 0xff, 0xa4, 0xb0, 0x76, 0x93, 0xc2,
+	0x59, 0x46, 0xa1, 0xa6, 0x28, 0xbc, 0x28, 0xbf, 0xa3, 0x64, 0xcf, 0x94, 0x91, 0xe8, 0x52, 0xc9,
+	0x97, 0x19, 0x9f, 0x0b, 0x60, 0x46, 0x02, 0xf3, 0xa9, 0xf6, 0xdc, 0x50, 0x9e, 0x87, 0xb7, 0xf7,
+	0x1c, 0x0b, 0xcc, 0x8b, 0xbe, 0x20, 0xca, 0x12, 0x30, 0x00, 0xbb, 0x31, 0xe6, 0x59, 0xcb, 0x54,
+	0x48, 0x24, 0x23, 0x61, 0x6d, 0x36, 0x8c, 0x66, 0xbd, 0xf5, 0xe6, 0xf6, 0x33, 0x26, 0x05, 0x93,
+	0xa1, 0xf2, 0x18, 0xc0, 0xf8, 0x46, 0x0e, 0x3e, 0x07, 0x77, 0x31, 0x45, 0x33, 0x1f, 0x2f, 0x2c,
+	0xb3, 0x61, 0x34, 0xcd, 0x96, 0xbd, 0x1a, 0xb1, 0xfa, 0xc0, 0x9d, 0x63, 0xc6, 0xfc, 0x09, 0xf2,
+	0x23, 0x3c, 0x58, 0x49, 0xed, 0x43, 0x60, 0x16, 0xf6, 0x87, 0x3b, 0xa0, 0xfa, 0x15, 0x2f, 0xf5,
+	0x4f, 0x99, 0x3c, 0xe1, 0x1e, 0xa8, 0xc5, 0x49, 0x8b, 0xfe, 0x68, 0xd3, 0xe0, 0x55, 0xe5, 0xa5,
+	0x61, 0xbf, 0x05, 0xdb, 0xd7, 0xce, 0xff, 0x9f, 0xf6, 0x83, 0xcf, 0x00, 0xde, 0xbc, 0x0c, 0x3e,
+	0x05, 0x4f, 0x26, 0xdd, 0x41, 0xef, 0xb4, 0xd7, 0x39, 0x1a, 0xf5, 0x3e, 0xf5, 0xa7, 0xc3, 0xd1,
+	0xd1, 0x68, 0x3c, 0x9c, 0x8e, 0xfb, 0xc3, 0xf3, 0x6e, 0xa7, 0x77, 0xda, 0xeb, 0x9e, 0xec, 0xdc,
+	0x81, 0x75, 0x00, 0xc6, 0xfd, 0x54, 0xd6, 0x3d, 0xd9, 0x31, 0xe0, 0x16, 0xd8, 0xc8, 0xa2, 0xca,
+	0xf1, 0x4f, 0x03, 0x58, 0x73, 0x16, 0x94, 0x02, 0x3e, 0xbe, 0x57, 0x24, 0x7c, 0x9e, 0x80, 0x39,
+	0x37, 0x2e, 0xde, 0x69, 0xa9, 0xc7, 0x7c, 0x44, 0x3d, 0x87, 0x71, 0xcf, 0xf5, 0x30, 0x55, 0xd8,
+	0xdc, 0xb4, 0x84, 0x42, 0x22, 0xfe, 0xfe, 0x2f, 0x79, 0x9d, 0x47, 0xbf, 0x2a, 0xf6, 0xfb, 0xd4,
+	0xa0, 0xe3, 0xb3, 0x68, 0xe1, 0x9c, 0xe5, 0x13, 0x27, 0xed, 0xdf, 0xab, 0xe2, 0xa5, 0x2a, 0x5e,
+	0xe6, 0xc5, 0xcb, 0x49, 0x7b, 0xb6, 0xae, 0x86, 0xb4, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xdf,
+	0xb9, 0x3f, 0x8b, 0x24, 0x05, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/notification_service.pb.go b/googleapis/monitoring/v3/notification_service.pb.go
new file mode 100644
index 00000000..ea5cf925
--- /dev/null
+++ b/googleapis/monitoring/v3/notification_service.pb.go
@@ -0,0 +1,1035 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/monitoring/v3/notification_service.proto
+
+package monitoring
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask"
+import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// The `ListNotificationChannelDescriptors` request.
+type ListNotificationChannelDescriptorsRequest struct {
+	// The REST resource name of the parent from which to retrieve
+	// the notification channel descriptors. The expected syntax is:
+	//
+	//     projects/[PROJECT_ID]
+	//
+	// Note that this names the parent container in which to look for the
+	// descriptors; to retrieve a single descriptor by name, use the
+	// [GetNotificationChannelDescriptor][google.monitoring.v3.NotificationChannelService.GetNotificationChannelDescriptor]
+	// operation, instead.
+	Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
+	// The maximum number of results to return in a single response. If
+	// not set to a positive number, a reasonable value will be chosen by the
+	// service.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// If non-empty, `page_token` must contain a value returned as the
+	// `next_page_token` in a previous response to request the next set
+	// of results.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListNotificationChannelDescriptorsRequest) Reset() {
+	*m = ListNotificationChannelDescriptorsRequest{}
+}
+func (m *ListNotificationChannelDescriptorsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListNotificationChannelDescriptorsRequest) ProtoMessage()    {}
+func (*ListNotificationChannelDescriptorsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{0}
+}
+
+func (m *ListNotificationChannelDescriptorsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ListNotificationChannelDescriptorsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListNotificationChannelDescriptorsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// The `ListNotificationChannelDescriptors` response.
+type ListNotificationChannelDescriptorsResponse struct {
+	// The monitored resource descriptors supported for the specified
+	// project, optionally filtered.
+	ChannelDescriptors []*NotificationChannelDescriptor `protobuf:"bytes,1,rep,name=channel_descriptors,json=channelDescriptors" json:"channel_descriptors,omitempty"`
+	// If not empty, indicates that there may be more results that match
+	// the request. Use the value in the `page_token` field in a
+	// subsequent request to fetch the next set of results. If empty,
+	// all results have been returned.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListNotificationChannelDescriptorsResponse) Reset() {
+	*m = ListNotificationChannelDescriptorsResponse{}
+}
+func (m *ListNotificationChannelDescriptorsResponse) String() string {
+	return proto.CompactTextString(m)
+}
+func (*ListNotificationChannelDescriptorsResponse) ProtoMessage() {}
+func (*ListNotificationChannelDescriptorsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{1}
+}
+
+func (m *ListNotificationChannelDescriptorsResponse) GetChannelDescriptors() []*NotificationChannelDescriptor {
+	if m != nil {
+		return m.ChannelDescriptors
+	}
+	return nil
+}
+
+func (m *ListNotificationChannelDescriptorsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// The `GetNotificationChannelDescriptor` response.
+type GetNotificationChannelDescriptorRequest struct {
+	// The channel type for which to execute the request. The format is
+	// `projects/[PROJECT_ID]/notificationChannelDescriptors/{channel_type}`.
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetNotificationChannelDescriptorRequest) Reset() {
+	*m = GetNotificationChannelDescriptorRequest{}
+}
+func (m *GetNotificationChannelDescriptorRequest) String() string { return proto.CompactTextString(m) }
+func (*GetNotificationChannelDescriptorRequest) ProtoMessage()    {}
+func (*GetNotificationChannelDescriptorRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{2}
+}
+
+func (m *GetNotificationChannelDescriptorRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The `CreateNotificationChannel` request.
+type CreateNotificationChannelRequest struct {
+	// The project on which to execute the request. The format is:
+	//
+	//     projects/[PROJECT_ID]
+	//
+	// Note that this names the container into which the channel will be
+	// written. This does not name the newly created channel. The resulting
+	// channel's name will have a normalized version of this field as a prefix,
+	// but will add `/notificationChannels/[CHANNEL_ID]` to identify the channel.
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	// The definition of the `NotificationChannel` to create.
+	NotificationChannel *NotificationChannel `protobuf:"bytes,2,opt,name=notification_channel,json=notificationChannel" json:"notification_channel,omitempty"`
+}
+
+func (m *CreateNotificationChannelRequest) Reset()         { *m = CreateNotificationChannelRequest{} }
+func (m *CreateNotificationChannelRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateNotificationChannelRequest) ProtoMessage()    {}
+func (*CreateNotificationChannelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{3}
+}
+
+func (m *CreateNotificationChannelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CreateNotificationChannelRequest) GetNotificationChannel() *NotificationChannel {
+	if m != nil {
+		return m.NotificationChannel
+	}
+	return nil
+}
+
+// The `ListNotificationChannels` request.
+type ListNotificationChannelsRequest struct {
+	// The project on which to execute the request. The format is
+	// `projects/[PROJECT_ID]`. That is, this names the container
+	// in which to look for the notification channels; it does not name a
+	// specific channel. To query a specific channel by REST resource name, use
+	// the
+	// [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel] operation.
+	Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"`
+	// If provided, this field specifies the criteria that must be met by
+	// notification channels to be included in the response.
+	//
+	// For more details, see [sorting and
+	// filtering](/monitoring/api/v3/sorting-and-filtering).
+	Filter string `protobuf:"bytes,6,opt,name=filter" json:"filter,omitempty"`
+	// A comma-separated list of fields by which to sort the result. Supports
+	// the same set of fields as in `filter`. Entries can be prefixed with
+	// a minus sign to sort in descending rather than ascending order.
+	//
+	// For more details, see [sorting and
+	// filtering](/monitoring/api/v3/sorting-and-filtering).
+	OrderBy string `protobuf:"bytes,7,opt,name=order_by,json=orderBy" json:"order_by,omitempty"`
+	// The maximum number of results to return in a single response. If
+	// not set to a positive number, a reasonable value will be chosen by the
+	// service.
+	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// If non-empty, `page_token` must contain a value returned as the
+	// `next_page_token` in a previous response to request the next set
+	// of results.
+	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListNotificationChannelsRequest) Reset()                    { *m = ListNotificationChannelsRequest{} }
+func (m *ListNotificationChannelsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListNotificationChannelsRequest) ProtoMessage()               {}
+func (*ListNotificationChannelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{4} }
+
+func (m *ListNotificationChannelsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ListNotificationChannelsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListNotificationChannelsRequest) GetOrderBy() string {
+	if m != nil {
+		return m.OrderBy
+	}
+	return ""
+}
+
+func (m *ListNotificationChannelsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListNotificationChannelsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// The `ListNotificationChannels` response.
+type ListNotificationChannelsResponse struct {
+	// The notification channels defined for the specified project.
+	NotificationChannels []*NotificationChannel `protobuf:"bytes,3,rep,name=notification_channels,json=notificationChannels" json:"notification_channels,omitempty"`
+	// If not empty, indicates that there may be more results that match
+	// the request. Use the value in the `page_token` field in a
+	// subsequent request to fetch the next set of results. If empty,
+	// all results have been returned.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListNotificationChannelsResponse) Reset()         { *m = ListNotificationChannelsResponse{} }
+func (m *ListNotificationChannelsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListNotificationChannelsResponse) ProtoMessage()    {}
+func (*ListNotificationChannelsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{5}
+}
+
+func (m *ListNotificationChannelsResponse) GetNotificationChannels() []*NotificationChannel {
+	if m != nil {
+		return m.NotificationChannels
+	}
+	return nil
+}
+
+func (m *ListNotificationChannelsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// The `GetNotificationChannel` request.
+type GetNotificationChannelRequest struct {
+	// The channel for which to execute the request. The format is
+	// `projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]`.
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetNotificationChannelRequest) Reset()                    { *m = GetNotificationChannelRequest{} }
+func (m *GetNotificationChannelRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetNotificationChannelRequest) ProtoMessage()               {}
+func (*GetNotificationChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{6} }
+
+func (m *GetNotificationChannelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The `UpdateNotificationChannel` request.
+type UpdateNotificationChannelRequest struct {
+	// The fields to update.
+	UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
+	// A description of the changes to be applied to the specified
+	// notification channel. The description must provide a definition for
+	// fields to be updated; the names of these fields should also be
+	// included in the `update_mask`.
+	NotificationChannel *NotificationChannel `protobuf:"bytes,3,opt,name=notification_channel,json=notificationChannel" json:"notification_channel,omitempty"`
+}
+
+func (m *UpdateNotificationChannelRequest) Reset()         { *m = UpdateNotificationChannelRequest{} }
+func (m *UpdateNotificationChannelRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateNotificationChannelRequest) ProtoMessage()    {}
+func (*UpdateNotificationChannelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{7}
+}
+
+func (m *UpdateNotificationChannelRequest) GetUpdateMask() *google_protobuf6.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *UpdateNotificationChannelRequest) GetNotificationChannel() *NotificationChannel {
+	if m != nil {
+		return m.NotificationChannel
+	}
+	return nil
+}
+
+// The `DeleteNotificationChannel` request.
+type DeleteNotificationChannelRequest struct {
+	// The channel for which to execute the request. The format is
+	// `projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]`.
+	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	// If true, the notification channel will be deleted regardless of its
+	// use in alert policies (the policies will be updated to remove the
+	// channel). If false, channels that are still referenced by an existing
+	// alerting policy will fail to be deleted in a delete operation.
+	Force bool `protobuf:"varint,5,opt,name=force" json:"force,omitempty"`
+}
+
+func (m *DeleteNotificationChannelRequest) Reset()         { *m = DeleteNotificationChannelRequest{} }
+func (m *DeleteNotificationChannelRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteNotificationChannelRequest) ProtoMessage()    {}
+func (*DeleteNotificationChannelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{8}
+}
+
+func (m *DeleteNotificationChannelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *DeleteNotificationChannelRequest) GetForce() bool {
+	if m != nil {
+		return m.Force
+	}
+	return false
+}
+
+// The `SendNotificationChannelVerificationCode` request.
+type SendNotificationChannelVerificationCodeRequest struct {
+	// The notification channel to which to send a verification code.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *SendNotificationChannelVerificationCodeRequest) Reset() {
+	*m = SendNotificationChannelVerificationCodeRequest{}
+}
+func (m *SendNotificationChannelVerificationCodeRequest) String() string {
+	return proto.CompactTextString(m)
+}
+func (*SendNotificationChannelVerificationCodeRequest) ProtoMessage() {}
+func (*SendNotificationChannelVerificationCodeRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{9}
+}
+
+func (m *SendNotificationChannelVerificationCodeRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The `GetNotificationChannelVerificationCode` request.
+type GetNotificationChannelVerificationCodeRequest struct {
+	// The notification channel for which a verification code is to be generated
+	// and retrieved. This must name a channel that is already verified; if
+	// the specified channel is not verified, the request will fail.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The desired expiration time. If specified, the API will guarantee that
+	// the returned code will not be valid after the specified timestamp;
+	// however, the API cannot guarantee that the returned code will be
+	// valid for at least as long as the requested time (the API puts an upper
+	// bound on the amount of time for which a code may be valid). If omitted,
+	// a default expiration will be used, which may be less than the max
+	// permissible expiration (so specifying an expiration may extend the
+	// code's lifetime over omitting an expiration, even though the API does
+	// impose an upper limit on the maximum expiration that is permitted).
+	ExpireTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"`
+}
+
+func (m *GetNotificationChannelVerificationCodeRequest) Reset() {
+	*m = GetNotificationChannelVerificationCodeRequest{}
+}
+func (m *GetNotificationChannelVerificationCodeRequest) String() string {
+	return proto.CompactTextString(m)
+}
+func (*GetNotificationChannelVerificationCodeRequest) ProtoMessage() {}
+func (*GetNotificationChannelVerificationCodeRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{10}
+}
+
+func (m *GetNotificationChannelVerificationCodeRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *GetNotificationChannelVerificationCodeRequest) GetExpireTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.ExpireTime
+	}
+	return nil
+}
+
+// The `GetNotificationChannelVerificationCode` request.
+type GetNotificationChannelVerificationCodeResponse struct {
+	// The verification code, which may be used to verify other channels
+	// that have an equivalent identity (i.e. other channels of the same
+	// type with the same fingerprint such as other email channels with
+	// the same email address or other sms channels with the same number).
+	Code string `protobuf:"bytes,1,opt,name=code" json:"code,omitempty"`
+	// The expiration time associated with the code that was returned. If
+	// an expiration was provided in the request, this is the minimum of the
+	// requested expiration in the request and the max permitted expiration.
+	ExpireTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"`
+}
+
+func (m *GetNotificationChannelVerificationCodeResponse) Reset() {
+	*m = GetNotificationChannelVerificationCodeResponse{}
+}
+func (m *GetNotificationChannelVerificationCodeResponse) String() string {
+	return proto.CompactTextString(m)
+}
+func (*GetNotificationChannelVerificationCodeResponse) ProtoMessage() {}
+func (*GetNotificationChannelVerificationCodeResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{11}
+}
+
+func (m *GetNotificationChannelVerificationCodeResponse) GetCode() string {
+	if m != nil {
+		return m.Code
+	}
+	return ""
+}
+
+func (m *GetNotificationChannelVerificationCodeResponse) GetExpireTime() *google_protobuf2.Timestamp {
+	if m != nil {
+		return m.ExpireTime
+	}
+	return nil
+}
+
+// The `VerifyNotificationChannel` request.
+type VerifyNotificationChannelRequest struct {
+	// The notification channel to verify.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The verification code that was delivered to the channel as
+	// a result of invoking the `SendNotificationChannelVerificationCode` API
+	// method or that was retrieved from a verified channel via
+	// `GetNotificationChannelVerificationCode`. For example, one might have
+	// "G-123456" or "TKNZGhhd2EyN3I1MnRnMjRv" (in general, one is only
+	// guaranteed that the code is valid UTF-8; one should not
+	// make any assumptions regarding the structure or format of the code).
+	Code string `protobuf:"bytes,2,opt,name=code" json:"code,omitempty"`
+}
+
+func (m *VerifyNotificationChannelRequest) Reset()         { *m = VerifyNotificationChannelRequest{} }
+func (m *VerifyNotificationChannelRequest) String() string { return proto.CompactTextString(m) }
+func (*VerifyNotificationChannelRequest) ProtoMessage()    {}
+func (*VerifyNotificationChannelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor9, []int{12}
+}
+
+func (m *VerifyNotificationChannelRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *VerifyNotificationChannelRequest) GetCode() string {
+	if m != nil {
+		return m.Code
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*ListNotificationChannelDescriptorsRequest)(nil), "google.monitoring.v3.ListNotificationChannelDescriptorsRequest")
+	proto.RegisterType((*ListNotificationChannelDescriptorsResponse)(nil), "google.monitoring.v3.ListNotificationChannelDescriptorsResponse")
+	proto.RegisterType((*GetNotificationChannelDescriptorRequest)(nil), "google.monitoring.v3.GetNotificationChannelDescriptorRequest")
+	proto.RegisterType((*CreateNotificationChannelRequest)(nil), "google.monitoring.v3.CreateNotificationChannelRequest")
+	proto.RegisterType((*ListNotificationChannelsRequest)(nil), "google.monitoring.v3.ListNotificationChannelsRequest")
+	proto.RegisterType((*ListNotificationChannelsResponse)(nil), "google.monitoring.v3.ListNotificationChannelsResponse")
+	proto.RegisterType((*GetNotificationChannelRequest)(nil), "google.monitoring.v3.GetNotificationChannelRequest")
+	proto.RegisterType((*UpdateNotificationChannelRequest)(nil), "google.monitoring.v3.UpdateNotificationChannelRequest")
+	proto.RegisterType((*DeleteNotificationChannelRequest)(nil), "google.monitoring.v3.DeleteNotificationChannelRequest")
+	proto.RegisterType((*SendNotificationChannelVerificationCodeRequest)(nil), "google.monitoring.v3.SendNotificationChannelVerificationCodeRequest")
+	proto.RegisterType((*GetNotificationChannelVerificationCodeRequest)(nil), "google.monitoring.v3.GetNotificationChannelVerificationCodeRequest")
+	proto.RegisterType((*GetNotificationChannelVerificationCodeResponse)(nil), "google.monitoring.v3.GetNotificationChannelVerificationCodeResponse")
+	proto.RegisterType((*VerifyNotificationChannelRequest)(nil), "google.monitoring.v3.VerifyNotificationChannelRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for NotificationChannelService service
+
+type NotificationChannelServiceClient interface {
+	// Lists the descriptors for supported channel types. The use of descriptors
+	// makes it possible for new channel types to be dynamically added.
+	ListNotificationChannelDescriptors(ctx context.Context, in *ListNotificationChannelDescriptorsRequest, opts ...grpc.CallOption) (*ListNotificationChannelDescriptorsResponse, error)
+	// Gets a single channel descriptor. The descriptor indicates which fields
+	// are expected / permitted for a notification channel of the given type.
+	GetNotificationChannelDescriptor(ctx context.Context, in *GetNotificationChannelDescriptorRequest, opts ...grpc.CallOption) (*NotificationChannelDescriptor, error)
+	// Lists the notification channels that have been created for the project.
+	ListNotificationChannels(ctx context.Context, in *ListNotificationChannelsRequest, opts ...grpc.CallOption) (*ListNotificationChannelsResponse, error)
+	// Gets a single notification channel. The channel includes the relevant
+	// configuration details with which the channel was created. However, the
+	// response may truncate or omit passwords, API keys, or other private key
+	// matter and thus the response may not be 100% identical to the information
+	// that was supplied in the call to the create method.
+	GetNotificationChannel(ctx context.Context, in *GetNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error)
+	// Creates a new notification channel, representing a single notification
+	// endpoint such as an email address, SMS number, or pagerduty service.
+	CreateNotificationChannel(ctx context.Context, in *CreateNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error)
+	// Updates a notification channel. Fields not specified in the field mask
+	// remain unchanged.
+	UpdateNotificationChannel(ctx context.Context, in *UpdateNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error)
+	// Deletes a notification channel.
+	DeleteNotificationChannel(ctx context.Context, in *DeleteNotificationChannelRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
+	// Causes a verification code to be delivered to the channel. The code
+	// can then be supplied in `VerifyNotificationChannel` to verify the channel.
+	SendNotificationChannelVerificationCode(ctx context.Context, in *SendNotificationChannelVerificationCodeRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
+	// Requests a verification code for an already verified channel that can then
+	// be used in a call to VerifyNotificationChannel() on a different channel
+	// with an equivalent identity in the same or in a different project. This
+	// makes it possible to copy a channel between projects without requiring
+	// manual reverification of the channel. If the channel is not in the
+	// verified state, this method will fail (in other words, this may only be
+	// used if the SendNotificationChannelVerificationCode and
+	// VerifyNotificationChannel paths have already been used to put the given
+	// channel into the verified state).
+	//
+	// There is no guarantee that the verification codes returned by this method
+	// will be of a similar structure or form as the ones that are delivered
+	// to the channel via SendNotificationChannelVerificationCode; while
+	// VerifyNotificationChannel() will recognize both the codes delivered via
+	// SendNotificationChannelVerificationCode() and returned from
+	// GetNotificationChannelVerificationCode(), it is typically the case that
+	// the verification codes delivered via
+	// SendNotificationChannelVerificationCode() will be shorter and also
+	// have a shorter expiration (e.g. codes such as "G-123456") whereas
+	// GetVerificationCode() will typically return a much longer, websafe base
+	// 64 encoded string that has a longer expiration time.
+	GetNotificationChannelVerificationCode(ctx context.Context, in *GetNotificationChannelVerificationCodeRequest, opts ...grpc.CallOption) (*GetNotificationChannelVerificationCodeResponse, error)
+	// Verifies a `NotificationChannel` by proving receipt of the code
+	// delivered to the channel as a result of calling
+	// `SendNotificationChannelVerificationCode`.
+	VerifyNotificationChannel(ctx context.Context, in *VerifyNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error)
+}
+
+type notificationChannelServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewNotificationChannelServiceClient(cc *grpc.ClientConn) NotificationChannelServiceClient {
+	return &notificationChannelServiceClient{cc}
+}
+
+func (c *notificationChannelServiceClient) ListNotificationChannelDescriptors(ctx context.Context, in *ListNotificationChannelDescriptorsRequest, opts ...grpc.CallOption) (*ListNotificationChannelDescriptorsResponse, error) {
+	out := new(ListNotificationChannelDescriptorsResponse)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/ListNotificationChannelDescriptors", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) GetNotificationChannelDescriptor(ctx context.Context, in *GetNotificationChannelDescriptorRequest, opts ...grpc.CallOption) (*NotificationChannelDescriptor, error) {
+	out := new(NotificationChannelDescriptor)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/GetNotificationChannelDescriptor", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) ListNotificationChannels(ctx context.Context, in *ListNotificationChannelsRequest, opts ...grpc.CallOption) (*ListNotificationChannelsResponse, error) {
+	out := new(ListNotificationChannelsResponse)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/ListNotificationChannels", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) GetNotificationChannel(ctx context.Context, in *GetNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error) {
+	out := new(NotificationChannel)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/GetNotificationChannel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) CreateNotificationChannel(ctx context.Context, in *CreateNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error) {
+	out := new(NotificationChannel)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/CreateNotificationChannel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) UpdateNotificationChannel(ctx context.Context, in *UpdateNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error) {
+	out := new(NotificationChannel)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/UpdateNotificationChannel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) DeleteNotificationChannel(ctx context.Context, in *DeleteNotificationChannelRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/DeleteNotificationChannel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) SendNotificationChannelVerificationCode(ctx context.Context, in *SendNotificationChannelVerificationCodeRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/SendNotificationChannelVerificationCode", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) GetNotificationChannelVerificationCode(ctx context.Context, in *GetNotificationChannelVerificationCodeRequest, opts ...grpc.CallOption) (*GetNotificationChannelVerificationCodeResponse, error) {
+	out := new(GetNotificationChannelVerificationCodeResponse)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/GetNotificationChannelVerificationCode", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *notificationChannelServiceClient) VerifyNotificationChannel(ctx context.Context, in *VerifyNotificationChannelRequest, opts ...grpc.CallOption) (*NotificationChannel, error) {
+	out := new(NotificationChannel)
+	err := grpc.Invoke(ctx, "/google.monitoring.v3.NotificationChannelService/VerifyNotificationChannel", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for NotificationChannelService service
+
+type NotificationChannelServiceServer interface {
+	// Lists the descriptors for supported channel types. The use of descriptors
+	// makes it possible for new channel types to be dynamically added.
+	ListNotificationChannelDescriptors(context.Context, *ListNotificationChannelDescriptorsRequest) (*ListNotificationChannelDescriptorsResponse, error)
+	// Gets a single channel descriptor. The descriptor indicates which fields
+	// are expected / permitted for a notification channel of the given type.
+	GetNotificationChannelDescriptor(context.Context, *GetNotificationChannelDescriptorRequest) (*NotificationChannelDescriptor, error)
+	// Lists the notification channels that have been created for the project.
+	ListNotificationChannels(context.Context, *ListNotificationChannelsRequest) (*ListNotificationChannelsResponse, error)
+	// Gets a single notification channel. The channel includes the relevant
+	// configuration details with which the channel was created. However, the
+	// response may truncate or omit passwords, API keys, or other private key
+	// matter and thus the response may not be 100% identical to the information
+	// that was supplied in the call to the create method.
+	GetNotificationChannel(context.Context, *GetNotificationChannelRequest) (*NotificationChannel, error)
+	// Creates a new notification channel, representing a single notification
+	// endpoint such as an email address, SMS number, or pagerduty service.
+	CreateNotificationChannel(context.Context, *CreateNotificationChannelRequest) (*NotificationChannel, error)
+	// Updates a notification channel. Fields not specified in the field mask
+	// remain unchanged.
+	UpdateNotificationChannel(context.Context, *UpdateNotificationChannelRequest) (*NotificationChannel, error)
+	// Deletes a notification channel.
+	DeleteNotificationChannel(context.Context, *DeleteNotificationChannelRequest) (*google_protobuf5.Empty, error)
+	// Causes a verification code to be delivered to the channel. The code
+	// can then be supplied in `VerifyNotificationChannel` to verify the channel.
+	SendNotificationChannelVerificationCode(context.Context, *SendNotificationChannelVerificationCodeRequest) (*google_protobuf5.Empty, error)
+	// Requests a verification code for an already verified channel that can then
+	// be used in a call to VerifyNotificationChannel() on a different channel
+	// with an equivalent identity in the same or in a different project. This
+	// makes it possible to copy a channel between projects without requiring
+	// manual reverification of the channel. If the channel is not in the
+	// verified state, this method will fail (in other words, this may only be
+	// used if the SendNotificationChannelVerificationCode and
+	// VerifyNotificationChannel paths have already been used to put the given
+	// channel into the verified state).
+	//
+	// There is no guarantee that the verification codes returned by this method
+	// will be of a similar structure or form as the ones that are delivered
+	// to the channel via SendNotificationChannelVerificationCode; while
+	// VerifyNotificationChannel() will recognize both the codes delivered via
+	// SendNotificationChannelVerificationCode() and returned from
+	// GetNotificationChannelVerificationCode(), it is typically the case that
+	// the verification codes delivered via
+	// SendNotificationChannelVerificationCode() will be shorter and also
+	// have a shorter expiration (e.g. codes such as "G-123456") whereas
+	// GetVerificationCode() will typically return a much longer, websafe base
+	// 64 encoded string that has a longer expiration time.
+	GetNotificationChannelVerificationCode(context.Context, *GetNotificationChannelVerificationCodeRequest) (*GetNotificationChannelVerificationCodeResponse, error)
+	// Verifies a `NotificationChannel` by proving receipt of the code
+	// delivered to the channel as a result of calling
+	// `SendNotificationChannelVerificationCode`.
+	VerifyNotificationChannel(context.Context, *VerifyNotificationChannelRequest) (*NotificationChannel, error)
+}
+
+func RegisterNotificationChannelServiceServer(s *grpc.Server, srv NotificationChannelServiceServer) {
+	s.RegisterService(&_NotificationChannelService_serviceDesc, srv)
+}
+
+func _NotificationChannelService_ListNotificationChannelDescriptors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListNotificationChannelDescriptorsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).ListNotificationChannelDescriptors(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/ListNotificationChannelDescriptors",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).ListNotificationChannelDescriptors(ctx, req.(*ListNotificationChannelDescriptorsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_GetNotificationChannelDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetNotificationChannelDescriptorRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannelDescriptor(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/GetNotificationChannelDescriptor",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannelDescriptor(ctx, req.(*GetNotificationChannelDescriptorRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_ListNotificationChannels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListNotificationChannelsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).ListNotificationChannels(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/ListNotificationChannels",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).ListNotificationChannels(ctx, req.(*ListNotificationChannelsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_GetNotificationChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetNotificationChannelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/GetNotificationChannel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannel(ctx, req.(*GetNotificationChannelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_CreateNotificationChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateNotificationChannelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).CreateNotificationChannel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/CreateNotificationChannel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).CreateNotificationChannel(ctx, req.(*CreateNotificationChannelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_UpdateNotificationChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateNotificationChannelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).UpdateNotificationChannel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/UpdateNotificationChannel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).UpdateNotificationChannel(ctx, req.(*UpdateNotificationChannelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_DeleteNotificationChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteNotificationChannelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).DeleteNotificationChannel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/DeleteNotificationChannel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).DeleteNotificationChannel(ctx, req.(*DeleteNotificationChannelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_SendNotificationChannelVerificationCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SendNotificationChannelVerificationCodeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).SendNotificationChannelVerificationCode(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/SendNotificationChannelVerificationCode",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).SendNotificationChannelVerificationCode(ctx, req.(*SendNotificationChannelVerificationCodeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_GetNotificationChannelVerificationCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetNotificationChannelVerificationCodeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannelVerificationCode(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/GetNotificationChannelVerificationCode",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).GetNotificationChannelVerificationCode(ctx, req.(*GetNotificationChannelVerificationCodeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NotificationChannelService_VerifyNotificationChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(VerifyNotificationChannelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NotificationChannelServiceServer).VerifyNotificationChannel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.monitoring.v3.NotificationChannelService/VerifyNotificationChannel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NotificationChannelServiceServer).VerifyNotificationChannel(ctx, req.(*VerifyNotificationChannelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _NotificationChannelService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.monitoring.v3.NotificationChannelService",
+	HandlerType: (*NotificationChannelServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ListNotificationChannelDescriptors",
+			Handler:    _NotificationChannelService_ListNotificationChannelDescriptors_Handler,
+		},
+		{
+			MethodName: "GetNotificationChannelDescriptor",
+			Handler:    _NotificationChannelService_GetNotificationChannelDescriptor_Handler,
+		},
+		{
+			MethodName: "ListNotificationChannels",
+			Handler:    _NotificationChannelService_ListNotificationChannels_Handler,
+		},
+		{
+			MethodName: "GetNotificationChannel",
+			Handler:    _NotificationChannelService_GetNotificationChannel_Handler,
+		},
+		{
+			MethodName: "CreateNotificationChannel",
+			Handler:    _NotificationChannelService_CreateNotificationChannel_Handler,
+		},
+		{
+			MethodName: "UpdateNotificationChannel",
+			Handler:    _NotificationChannelService_UpdateNotificationChannel_Handler,
+		},
+		{
+			MethodName: "DeleteNotificationChannel",
+			Handler:    _NotificationChannelService_DeleteNotificationChannel_Handler,
+		},
+		{
+			MethodName: "SendNotificationChannelVerificationCode",
+			Handler:    _NotificationChannelService_SendNotificationChannelVerificationCode_Handler,
+		},
+		{
+			MethodName: "GetNotificationChannelVerificationCode",
+			Handler:    _NotificationChannelService_GetNotificationChannelVerificationCode_Handler,
+		},
+		{
+			MethodName: "VerifyNotificationChannel",
+			Handler:    _NotificationChannelService_VerifyNotificationChannel_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/monitoring/v3/notification_service.proto",
+}
+
+func init() { proto.RegisterFile("google/monitoring/v3/notification_service.proto", fileDescriptor9) }
+
+var fileDescriptor9 = []byte{
+	// 1011 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x41, 0x6f, 0xdc, 0x44,
+	0x14, 0xd6, 0xec, 0x26, 0x69, 0xfa, 0x22, 0x04, 0x9a, 0x86, 0xc8, 0xbb, 0xa5, 0xaa, 0xe5, 0x43,
+	0x93, 0xae, 0x8a, 0x2d, 0xad, 0x4b, 0x84, 0x52, 0x52, 0xda, 0x64, 0xdb, 0x22, 0x48, 0x51, 0xb4,
+	0x29, 0x91, 0x40, 0x11, 0x2b, 0xc7, 0x7e, 0x6b, 0x4c, 0x76, 0x67, 0x8c, 0x3d, 0x89, 0x9a, 0x56,
+	0x95, 0x0a, 0x7f, 0x01, 0xfe, 0x00, 0x12, 0xa7, 0x1e, 0x10, 0x67, 0x50, 0x39, 0x23, 0xae, 0x08,
+	0xae, 0x5c, 0xe0, 0x7f, 0x20, 0x8f, 0xbd, 0xd9, 0xcd, 0x66, 0xbc, 0x6b, 0x37, 0xdc, 0x3c, 0xf3,
+	0xde, 0xbc, 0xf7, 0xbd, 0xef, 0x7d, 0x9e, 0x67, 0x83, 0xe5, 0x73, 0xee, 0xf7, 0xd0, 0xea, 0x73,
+	0x16, 0x08, 0x1e, 0x05, 0xcc, 0xb7, 0x8e, 0x6c, 0x8b, 0x71, 0x11, 0x74, 0x03, 0xd7, 0x11, 0x01,
+	0x67, 0x9d, 0x18, 0xa3, 0xa3, 0xc0, 0x45, 0x33, 0x8c, 0xb8, 0xe0, 0x74, 0x31, 0x3d, 0x60, 0x0e,
+	0x0f, 0x98, 0x47, 0x76, 0xfd, 0xad, 0x2c, 0x8c, 0x13, 0x06, 0x96, 0xc3, 0x18, 0x17, 0xf2, 0x68,
+	0x9c, 0x9e, 0xa9, 0x2f, 0x4f, 0x4d, 0x92, 0x39, 0x5e, 0xce, 0x1c, 0xe5, 0x6a, 0xff, 0xb0, 0x6b,
+	0x61, 0x3f, 0x14, 0xc7, 0x99, 0x51, 0x1f, 0x37, 0x76, 0x03, 0xec, 0x79, 0x9d, 0xbe, 0x13, 0x1f,
+	0x64, 0x1e, 0x57, 0xc7, 0x3d, 0x44, 0xd0, 0xc7, 0x58, 0x38, 0xfd, 0x30, 0x75, 0x30, 0x9e, 0xc2,
+	0xf5, 0xad, 0x20, 0x16, 0x1f, 0x8f, 0x64, 0xde, 0xfc, 0xc2, 0x61, 0x0c, 0x7b, 0x2d, 0x8c, 0xdd,
+	0x28, 0x08, 0x05, 0x8f, 0xe2, 0x36, 0x7e, 0x75, 0x88, 0xb1, 0xa0, 0x14, 0x66, 0x98, 0xd3, 0x47,
+	0x6d, 0x46, 0x27, 0x2b, 0x17, 0xdb, 0xf2, 0x99, 0x5e, 0x86, 0x8b, 0xa1, 0xe3, 0x63, 0x27, 0x0e,
+	0x9e, 0xa0, 0x56, 0xd1, 0xc9, 0xca, 0x6c, 0x7b, 0x3e, 0xd9, 0xd8, 0x09, 0x9e, 0x20, 0xbd, 0x02,
+	0x20, 0x8d, 0x82, 0x1f, 0x20, 0xd3, 0xaa, 0xf2, 0x98, 0x74, 0x7f, 0x94, 0x6c, 0x18, 0x3f, 0x13,
+	0x68, 0x14, 0xc9, 0x1e, 0x87, 0x9c, 0xc5, 0x48, 0x3d, 0xb8, 0xe4, 0xa6, 0xd6, 0x8e, 0x37, 0x34,
+	0x6b, 0x44, 0xaf, 0xae, 0x2c, 0x34, 0x6d, 0x53, 0xd5, 0x06, 0x73, 0x62, 0xe8, 0x36, 0x75, 0xcf,
+	0x64, 0xa3, 0xd7, 0xe0, 0x75, 0x86, 0x8f, 0x45, 0x67, 0x04, 0x78, 0x45, 0x02, 0x7f, 0x2d, 0xd9,
+	0xde, 0x3e, 0x01, 0xbf, 0x0e, 0xcb, 0x0f, 0x70, 0x32, 0xf4, 0x71, 0xde, 0xaa, 0x43, 0xde, 0x8c,
+	0xef, 0x08, 0xe8, 0x9b, 0x11, 0x3a, 0x02, 0x15, 0x21, 0x26, 0x1c, 0xa4, 0x7b, 0xb0, 0x78, 0x4a,
+	0x8c, 0x59, 0x09, 0x12, 0xe4, 0x42, 0xf3, 0x7a, 0x61, 0x1a, 0xda, 0x97, 0xd8, 0xd9, 0x4d, 0xe3,
+	0x07, 0x02, 0x57, 0x73, 0x5a, 0x72, 0x46, 0x06, 0xb3, 0x23, 0xa8, 0x96, 0x60, 0xae, 0x1b, 0xf4,
+	0x04, 0x46, 0xda, 0x9c, 0xdc, 0xcd, 0x56, 0xb4, 0x06, 0xf3, 0x3c, 0xf2, 0x30, 0xea, 0xec, 0x1f,
+	0x6b, 0x17, 0xa4, 0xe5, 0x82, 0x5c, 0x6f, 0x1c, 0x9f, 0x56, 0x4e, 0x75, 0xa2, 0x72, 0x66, 0xc6,
+	0x95, 0xf3, 0x82, 0x80, 0x9e, 0x0f, 0x33, 0xd3, 0xcb, 0xe7, 0xf0, 0xa6, 0x8a, 0xa9, 0x58, 0xab,
+	0x4a, 0xc5, 0x94, 0xa0, 0x6a, 0x51, 0x41, 0x55, 0x71, 0xa5, 0xd8, 0x70, 0x45, 0xad, 0x94, 0x49,
+	0xfa, 0x78, 0x49, 0x40, 0xff, 0x24, 0xf4, 0x26, 0xeb, 0xe3, 0x16, 0x2c, 0x1c, 0x4a, 0x1f, 0xf9,
+	0xce, 0x67, 0x12, 0xa8, 0x0f, 0xea, 0x1a, 0xbc, 0xf4, 0xe6, 0xfd, 0xe4, 0x5a, 0x78, 0xe8, 0xc4,
+	0x07, 0x6d, 0x48, 0xdd, 0x93, 0xe7, 0x5c, 0x21, 0x55, 0xff, 0x17, 0x21, 0x6d, 0x81, 0xde, 0xc2,
+	0x1e, 0x96, 0x96, 0xf7, 0x22, 0xcc, 0x76, 0x79, 0xe4, 0xa6, 0xea, 0x9a, 0x6f, 0xa7, 0x0b, 0xa3,
+	0x05, 0xe6, 0x0e, 0x32, 0x4f, 0x11, 0x6b, 0x17, 0xa3, 0xe1, 0x16, 0xf7, 0x70, 0x3c, 0x36, 0x19,
+	0xe1, 0xf4, 0x39, 0x81, 0xb7, 0xd5, 0x9d, 0x28, 0x11, 0x25, 0x21, 0x1d, 0x1f, 0x87, 0x41, 0x84,
+	0x9d, 0xe4, 0x32, 0xcd, 0x25, 0xfd, 0xd1, 0xe0, 0xa6, 0x6d, 0x43, 0xea, 0x9e, 0x6c, 0x18, 0x5f,
+	0x13, 0x30, 0x8b, 0x42, 0xc8, 0x64, 0x4c, 0x61, 0xc6, 0xe5, 0xde, 0x09, 0x86, 0xe4, 0xf9, 0x7c,
+	0x18, 0x3e, 0x04, 0x5d, 0x26, 0x3b, 0x2e, 0xd0, 0x9a, 0xd1, 0xc2, 0x07, 0x40, 0x2a, 0x43, 0x20,
+	0xcd, 0x5f, 0xde, 0x80, 0xba, 0x22, 0xcc, 0x4e, 0x3a, 0x21, 0xe9, 0xbf, 0x04, 0x8c, 0xe9, 0x37,
+	0x3c, 0x7d, 0x5f, 0x2d, 0xb6, 0xc2, 0x93, 0xa9, 0x7e, 0xe7, 0xd5, 0x03, 0xa4, 0x2c, 0x1b, 0xef,
+	0x7d, 0xf3, 0xc7, 0x3f, 0xdf, 0x56, 0x56, 0xe9, 0xcd, 0x64, 0x10, 0x3f, 0x4d, 0xea, 0x5d, 0x0f,
+	0x23, 0xfe, 0x25, 0xba, 0x22, 0xb6, 0x1a, 0xcf, 0x2c, 0x36, 0xb9, 0x80, 0xbf, 0x08, 0xe8, 0xd3,
+	0xa6, 0x01, 0x5d, 0x57, 0x83, 0x2c, 0x38, 0x45, 0xea, 0xaf, 0x32, 0xe1, 0x8c, 0xdb, 0xb2, 0xac,
+	0x77, 0xe9, 0xaa, 0xaa, 0xac, 0x29, 0x55, 0x59, 0x8d, 0x67, 0xf4, 0x25, 0x01, 0x2d, 0xef, 0xa2,
+	0xa5, 0xef, 0x94, 0x62, 0xfd, 0xa4, 0x59, 0xab, 0x65, 0x8f, 0x65, 0x2d, 0x6a, 0xca, 0x5a, 0x6e,
+	0xd0, 0x46, 0xe1, 0x16, 0xc5, 0xf4, 0x47, 0x02, 0x4b, 0x6a, 0x82, 0xa9, 0x5d, 0xa6, 0x1d, 0x03,
+	0xec, 0xc5, 0xaf, 0x45, 0xe3, 0xa6, 0x84, 0x6b, 0xd2, 0x1b, 0x45, 0xa9, 0x97, 0x84, 0xff, 0x46,
+	0xa0, 0x96, 0xfb, 0x5d, 0x40, 0x73, 0xa8, 0x9b, 0xf6, 0x21, 0x51, 0x06, 0xf6, 0x07, 0x12, 0xf6,
+	0x86, 0x51, 0x82, 0xe5, 0x35, 0xe5, 0x20, 0xa1, 0x7f, 0x13, 0xa8, 0xe5, 0x8e, 0xb0, 0xbc, 0x52,
+	0xa6, 0xcd, 0xbc, 0x32, 0xa5, 0x74, 0x64, 0x29, 0x9f, 0x36, 0xef, 0xa6, 0xa5, 0x28, 0x30, 0x9a,
+	0x05, 0xdb, 0x92, 0x53, 0xe1, 0xf7, 0x04, 0x6a, 0xb9, 0x53, 0x2e, 0xaf, 0xc2, 0x69, 0x63, 0xb1,
+	0xbe, 0x74, 0xe6, 0x1e, 0xbf, 0x97, 0x7c, 0xf4, 0x0f, 0x04, 0xd5, 0x28, 0x27, 0xa8, 0x3f, 0x09,
+	0x2c, 0x17, 0x9c, 0x9d, 0xb4, 0xa5, 0x46, 0x5c, 0x6e, 0xf4, 0xe6, 0xe2, 0xdf, 0x92, 0xf8, 0xef,
+	0x1b, 0x77, 0xcb, 0xe0, 0x5f, 0x8b, 0x91, 0x79, 0xe3, 0x99, 0xd6, 0x48, 0x83, 0x3e, 0xaf, 0xc0,
+	0xb5, 0x62, 0x93, 0x94, 0x6e, 0x96, 0x79, 0xd3, 0xf3, 0xaa, 0x6a, 0x9d, 0x2f, 0x48, 0x76, 0x87,
+	0x7d, 0x24, 0x39, 0xb8, 0x67, 0xdc, 0x29, 0xc5, 0x81, 0x8f, 0x42, 0x45, 0xc1, 0xaf, 0x04, 0x6a,
+	0xb9, 0x93, 0x3c, 0x4f, 0x7e, 0xd3, 0x46, 0x7f, 0x99, 0x17, 0x2c, 0x9b, 0x2e, 0x86, 0x5d, 0xaa,
+	0x9a, 0x23, 0x89, 0x60, 0x8d, 0x34, 0x36, 0x7e, 0x22, 0xa0, 0xb9, 0xbc, 0xaf, 0x4c, 0xb8, 0xa1,
+	0x8d, 0x66, 0xcc, 0x3e, 0x28, 0xb6, 0x13, 0x45, 0x6d, 0x93, 0xcf, 0x6e, 0x67, 0x27, 0x7c, 0xde,
+	0x73, 0x98, 0x6f, 0xf2, 0xc8, 0xb7, 0x7c, 0x64, 0x52, 0x6f, 0xd9, 0xff, 0xbb, 0x13, 0x06, 0xf1,
+	0xe9, 0xdf, 0xeb, 0x5b, 0xc3, 0xd5, 0x8b, 0x4a, 0xfd, 0x41, 0x1a, 0x60, 0xb3, 0xc7, 0x0f, 0x3d,
+	0xf3, 0xe1, 0x30, 0xf1, 0xae, 0xfd, 0xfb, 0xc0, 0xb8, 0x27, 0x8d, 0x7b, 0x43, 0xe3, 0xde, 0xae,
+	0xbd, 0x3f, 0x27, 0x93, 0xd8, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xf3, 0x96, 0xf5, 0x27,
+	0x10, 0x00, 0x00,
+}
diff --git a/googleapis/monitoring/v3/uptime.pb.go b/googleapis/monitoring/v3/uptime.pb.go
index 042cddd0..9357d352 100644
--- a/googleapis/monitoring/v3/uptime.pb.go
+++ b/googleapis/monitoring/v3/uptime.pb.go
@@ -51,7 +51,7 @@ var UptimeCheckRegion_value = map[string]int32{
 func (x UptimeCheckRegion) String() string {
 	return proto.EnumName(UptimeCheckRegion_name, int32(x))
 }
-func (UptimeCheckRegion) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
+func (UptimeCheckRegion) EnumDescriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }
 
 // The supported resource types that can be used as values of
 // group_resource.resource_type. gae_app and uptime_url are not allowed
@@ -81,7 +81,7 @@ var GroupResourceType_value = map[string]int32{
 func (x GroupResourceType) String() string {
 	return proto.EnumName(GroupResourceType_name, int32(x))
 }
-func (GroupResourceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
+func (GroupResourceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }
 
 // This message configures which resources and services to monitor for
 // availability.
@@ -136,7 +136,7 @@ type UptimeCheckConfig struct {
 func (m *UptimeCheckConfig) Reset()                    { *m = UptimeCheckConfig{} }
 func (m *UptimeCheckConfig) String() string            { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig) ProtoMessage()               {}
-func (*UptimeCheckConfig) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
+func (*UptimeCheckConfig) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }
 
 type isUptimeCheckConfig_Resource interface {
 	isUptimeCheckConfig_Resource()
@@ -391,7 +391,7 @@ func (m *UptimeCheckConfig_ResourceGroup) Reset()         { *m = UptimeCheckConf
 func (m *UptimeCheckConfig_ResourceGroup) String() string { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig_ResourceGroup) ProtoMessage()    {}
 func (*UptimeCheckConfig_ResourceGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor5, []int{0, 0}
+	return fileDescriptor10, []int{0, 0}
 }
 
 func (m *UptimeCheckConfig_ResourceGroup) GetGroupId() string {
@@ -443,7 +443,7 @@ type UptimeCheckConfig_HttpCheck struct {
 func (m *UptimeCheckConfig_HttpCheck) Reset()                    { *m = UptimeCheckConfig_HttpCheck{} }
 func (m *UptimeCheckConfig_HttpCheck) String() string            { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig_HttpCheck) ProtoMessage()               {}
-func (*UptimeCheckConfig_HttpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 1} }
+func (*UptimeCheckConfig_HttpCheck) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 1} }
 
 func (m *UptimeCheckConfig_HttpCheck) GetUseSsl() bool {
 	if m != nil {
@@ -505,7 +505,7 @@ func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) String() string {
 }
 func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) ProtoMessage() {}
 func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) Descriptor() ([]byte, []int) {
-	return fileDescriptor5, []int{0, 1, 0}
+	return fileDescriptor10, []int{0, 1, 0}
 }
 
 func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) GetUsername() string {
@@ -533,7 +533,7 @@ type UptimeCheckConfig_TcpCheck struct {
 func (m *UptimeCheckConfig_TcpCheck) Reset()                    { *m = UptimeCheckConfig_TcpCheck{} }
 func (m *UptimeCheckConfig_TcpCheck) String() string            { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig_TcpCheck) ProtoMessage()               {}
-func (*UptimeCheckConfig_TcpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 2} }
+func (*UptimeCheckConfig_TcpCheck) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 2} }
 
 func (m *UptimeCheckConfig_TcpCheck) GetPort() int32 {
 	if m != nil {
@@ -554,7 +554,7 @@ func (m *UptimeCheckConfig_ContentMatcher) Reset()         { *m = UptimeCheckCon
 func (m *UptimeCheckConfig_ContentMatcher) String() string { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig_ContentMatcher) ProtoMessage()    {}
 func (*UptimeCheckConfig_ContentMatcher) Descriptor() ([]byte, []int) {
-	return fileDescriptor5, []int{0, 3}
+	return fileDescriptor10, []int{0, 3}
 }
 
 func (m *UptimeCheckConfig_ContentMatcher) GetContent() string {
@@ -583,7 +583,7 @@ func (m *UptimeCheckConfig_InternalChecker) Reset()         { *m = UptimeCheckCo
 func (m *UptimeCheckConfig_InternalChecker) String() string { return proto.CompactTextString(m) }
 func (*UptimeCheckConfig_InternalChecker) ProtoMessage()    {}
 func (*UptimeCheckConfig_InternalChecker) Descriptor() ([]byte, []int) {
-	return fileDescriptor5, []int{0, 4}
+	return fileDescriptor10, []int{0, 4}
 }
 
 func (m *UptimeCheckConfig_InternalChecker) GetProjectId() string {
@@ -641,7 +641,7 @@ type UptimeCheckIp struct {
 func (m *UptimeCheckIp) Reset()                    { *m = UptimeCheckIp{} }
 func (m *UptimeCheckIp) String() string            { return proto.CompactTextString(m) }
 func (*UptimeCheckIp) ProtoMessage()               {}
-func (*UptimeCheckIp) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
+func (*UptimeCheckIp) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }
 
 func (m *UptimeCheckIp) GetRegion() UptimeCheckRegion {
 	if m != nil {
@@ -677,9 +677,9 @@ func init() {
 	proto.RegisterEnum("google.monitoring.v3.GroupResourceType", GroupResourceType_name, GroupResourceType_value)
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/uptime.proto", fileDescriptor5) }
+func init() { proto.RegisterFile("google/monitoring/v3/uptime.proto", fileDescriptor10) }
 
-var fileDescriptor5 = []byte{
+var fileDescriptor10 = []byte{
 	// 1021 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x4e, 0xe3, 0x46,
 	0x14, 0x5e, 0x13, 0xc8, 0xcf, 0x21, 0xb0, 0x66, 0x4a, 0xdb, 0x60, 0x89, 0x15, 0xbb, 0xbd, 0x28,
diff --git a/googleapis/monitoring/v3/uptime_service.pb.go b/googleapis/monitoring/v3/uptime_service.pb.go
index 5e2fb2a7..a2ee162d 100644
--- a/googleapis/monitoring/v3/uptime_service.pb.go
+++ b/googleapis/monitoring/v3/uptime_service.pb.go
@@ -7,8 +7,8 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
-import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
-import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask"
+import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask"
 
 import (
 	context "golang.org/x/net/context"
@@ -40,7 +40,7 @@ type ListUptimeCheckConfigsRequest struct {
 func (m *ListUptimeCheckConfigsRequest) Reset()                    { *m = ListUptimeCheckConfigsRequest{} }
 func (m *ListUptimeCheckConfigsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListUptimeCheckConfigsRequest) ProtoMessage()               {}
-func (*ListUptimeCheckConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} }
+func (*ListUptimeCheckConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
 
 func (m *ListUptimeCheckConfigsRequest) GetParent() string {
 	if m != nil {
@@ -78,7 +78,7 @@ type ListUptimeCheckConfigsResponse struct {
 func (m *ListUptimeCheckConfigsResponse) Reset()                    { *m = ListUptimeCheckConfigsResponse{} }
 func (m *ListUptimeCheckConfigsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListUptimeCheckConfigsResponse) ProtoMessage()               {}
-func (*ListUptimeCheckConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} }
+func (*ListUptimeCheckConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} }
 
 func (m *ListUptimeCheckConfigsResponse) GetUptimeCheckConfigs() []*UptimeCheckConfig {
 	if m != nil {
@@ -105,7 +105,7 @@ type GetUptimeCheckConfigRequest struct {
 func (m *GetUptimeCheckConfigRequest) Reset()                    { *m = GetUptimeCheckConfigRequest{} }
 func (m *GetUptimeCheckConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*GetUptimeCheckConfigRequest) ProtoMessage()               {}
-func (*GetUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} }
+func (*GetUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} }
 
 func (m *GetUptimeCheckConfigRequest) GetName() string {
 	if m != nil {
@@ -127,7 +127,7 @@ type CreateUptimeCheckConfigRequest struct {
 func (m *CreateUptimeCheckConfigRequest) Reset()                    { *m = CreateUptimeCheckConfigRequest{} }
 func (m *CreateUptimeCheckConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*CreateUptimeCheckConfigRequest) ProtoMessage()               {}
-func (*CreateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
+func (*CreateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{3} }
 
 func (m *CreateUptimeCheckConfigRequest) GetParent() string {
 	if m != nil {
@@ -149,7 +149,7 @@ type UpdateUptimeCheckConfigRequest struct {
 	// configuration are updated with values from the new configuration. If this
 	// field is empty, then the current configuration is completely replaced with
 	// the new configuration.
-	UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
+	UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
 	// Required. If an `"updateMask"` has been specified, this field gives
 	// the values for the set of fields mentioned in the `"updateMask"`. If an
 	// `"updateMask"` has not been given, this uptime check configuration replaces
@@ -163,9 +163,9 @@ type UpdateUptimeCheckConfigRequest struct {
 func (m *UpdateUptimeCheckConfigRequest) Reset()                    { *m = UpdateUptimeCheckConfigRequest{} }
 func (m *UpdateUptimeCheckConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*UpdateUptimeCheckConfigRequest) ProtoMessage()               {}
-func (*UpdateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} }
+func (*UpdateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{4} }
 
-func (m *UpdateUptimeCheckConfigRequest) GetUpdateMask() *google_protobuf5.FieldMask {
+func (m *UpdateUptimeCheckConfigRequest) GetUpdateMask() *google_protobuf6.FieldMask {
 	if m != nil {
 		return m.UpdateMask
 	}
@@ -190,7 +190,7 @@ type DeleteUptimeCheckConfigRequest struct {
 func (m *DeleteUptimeCheckConfigRequest) Reset()                    { *m = DeleteUptimeCheckConfigRequest{} }
 func (m *DeleteUptimeCheckConfigRequest) String() string            { return proto.CompactTextString(m) }
 func (*DeleteUptimeCheckConfigRequest) ProtoMessage()               {}
-func (*DeleteUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} }
+func (*DeleteUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{5} }
 
 func (m *DeleteUptimeCheckConfigRequest) GetName() string {
 	if m != nil {
@@ -217,7 +217,7 @@ type ListUptimeCheckIpsRequest struct {
 func (m *ListUptimeCheckIpsRequest) Reset()                    { *m = ListUptimeCheckIpsRequest{} }
 func (m *ListUptimeCheckIpsRequest) String() string            { return proto.CompactTextString(m) }
 func (*ListUptimeCheckIpsRequest) ProtoMessage()               {}
-func (*ListUptimeCheckIpsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{6} }
+func (*ListUptimeCheckIpsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{6} }
 
 func (m *ListUptimeCheckIpsRequest) GetPageSize() int32 {
 	if m != nil {
@@ -250,7 +250,7 @@ type ListUptimeCheckIpsResponse struct {
 func (m *ListUptimeCheckIpsResponse) Reset()                    { *m = ListUptimeCheckIpsResponse{} }
 func (m *ListUptimeCheckIpsResponse) String() string            { return proto.CompactTextString(m) }
 func (*ListUptimeCheckIpsResponse) ProtoMessage()               {}
-func (*ListUptimeCheckIpsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{7} }
+func (*ListUptimeCheckIpsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{7} }
 
 func (m *ListUptimeCheckIpsResponse) GetUptimeCheckIps() []*UptimeCheckIp {
 	if m != nil {
@@ -303,7 +303,7 @@ type UptimeCheckServiceClient interface {
 	// Deletes an uptime check configuration. Note that this method will fail
 	// if the uptime check configuration is referenced by an alert policy or
 	// other dependent configs that would be rendered invalid by the deletion.
-	DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
+	DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
 	// Returns the list of IPs that checkers run from
 	ListUptimeCheckIps(ctx context.Context, in *ListUptimeCheckIpsRequest, opts ...grpc.CallOption) (*ListUptimeCheckIpsResponse, error)
 }
@@ -352,8 +352,8 @@ func (c *uptimeCheckServiceClient) UpdateUptimeCheckConfig(ctx context.Context,
 	return out, nil
 }
 
-func (c *uptimeCheckServiceClient) DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
-	out := new(google_protobuf4.Empty)
+func (c *uptimeCheckServiceClient) DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
+	out := new(google_protobuf5.Empty)
 	err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/DeleteUptimeCheckConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -388,7 +388,7 @@ type UptimeCheckServiceServer interface {
 	// Deletes an uptime check configuration. Note that this method will fail
 	// if the uptime check configuration is referenced by an alert policy or
 	// other dependent configs that would be rendered invalid by the deletion.
-	DeleteUptimeCheckConfig(context.Context, *DeleteUptimeCheckConfigRequest) (*google_protobuf4.Empty, error)
+	DeleteUptimeCheckConfig(context.Context, *DeleteUptimeCheckConfigRequest) (*google_protobuf5.Empty, error)
 	// Returns the list of IPs that checkers run from
 	ListUptimeCheckIps(context.Context, *ListUptimeCheckIpsRequest) (*ListUptimeCheckIpsResponse, error)
 }
@@ -538,9 +538,9 @@ var _UptimeCheckService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "google/monitoring/v3/uptime_service.proto",
 }
 
-func init() { proto.RegisterFile("google/monitoring/v3/uptime_service.proto", fileDescriptor6) }
+func init() { proto.RegisterFile("google/monitoring/v3/uptime_service.proto", fileDescriptor11) }
 
-var fileDescriptor6 = []byte{
+var fileDescriptor11 = []byte{
 	// 735 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdf, 0x4e, 0x13, 0x4f,
 	0x14, 0xce, 0xb4, 0xfc, 0x08, 0x1c, 0xf2, 0xf3, 0xcf, 0xd8, 0x40, 0x5d, 0xa4, 0xa9, 0x35, 0x51,
-- 
GitLab